From 5b11a292ebd43b1d84fe45c51d8ab084b1ad3c98 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 7 May 2009 15:43:59 +0200 Subject: [PATCH] Add files to the projects. --- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 +- src/plugins/qmlprojectmanager/qmlproject.h | 2 +- .../qmlprojectmanager/qmlprojectnodes.cpp | 47 +++++++++++++++---- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 5b6521715bf..9cca6c52f65 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -168,7 +168,7 @@ Core::IFile *QmlProject::file() const return m_file; } -ProjectExplorer::IProjectManager *QmlProject::projectManager() const +Manager *QmlProject::projectManager() const { return m_manager; } diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 9cf9b9f8687..22941e5b11e 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -59,7 +59,7 @@ public: virtual QString name() const; virtual Core::IFile *file() const; - virtual ProjectExplorer::IProjectManager *projectManager() const; + virtual Manager *projectManager() const; virtual QList<ProjectExplorer::Project *> dependsOn(); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 19432765026..4b059f25a42 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "qmlprojectnodes.h" +#include "qmlprojectmanager.h" #include "qmlproject.h" #include <coreplugin/ifile.h> @@ -153,7 +154,9 @@ bool QmlProjectNode::hasTargets() const QList<ProjectExplorer::ProjectNode::ProjectAction> QmlProjectNode::supportedActions() const { - return QList<ProjectAction>(); + QList<ProjectAction> actions; + actions.append(AddFile); + return actions; } bool QmlProjectNode::addSubProjects(const QStringList &proFilePaths) @@ -168,17 +171,45 @@ bool QmlProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool QmlProjectNode::addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, QStringList *notAdded) +bool QmlProjectNode::addFiles(const ProjectExplorer::FileType, + const QStringList &filePaths, QStringList *notAdded) { - Q_UNUSED(fileType); - Q_UNUSED(filePaths); - Q_UNUSED(notAdded); - return false; + QDir projectDir(QFileInfo(projectFilePath()).dir()); + + QFile file(projectFilePath()); + if (! file.open(QFile::WriteOnly | QFile::Append)) + return false; + + QTextStream stream(&file); + QStringList failedFiles; + + bool first = true; + foreach (const QString &filePath, filePaths) { + const QString rel = projectDir.relativeFilePath(filePath); + + if (rel.isEmpty() || rel.startsWith(QLatin1Char('.'))) { + failedFiles.append(rel); + } else { + if (first) { + stream << endl; + first = false; + } + + stream << rel << endl; + } + } + + if (notAdded) + *notAdded += failedFiles; + + if (! first) + m_project->projectManager()->notifyChanged(projectFilePath()); + + return failedFiles.isEmpty(); } bool QmlProjectNode::removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, QStringList *notRemoved) + const QStringList &filePaths, QStringList *notRemoved) { Q_UNUSED(fileType); Q_UNUSED(filePaths); -- GitLab