diff options
author | Daniel Teske <daniel.teske@digia.com> | 2014-03-17 11:52:45 +0100 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-03-18 14:23:11 +0100 |
commit | 50fc169c9420bd97857e37bc01d5fe72dfff1fab (patch) | |
tree | 2b8d751a90b8bd211cbc72b7f49bd44c3b4d1ed9 | |
parent | e27603495f9bb634d30b0f379c459c27e2fa2b7a (diff) | |
download | qt-creator-50fc169c9420bd97857e37bc01d5fe72dfff1fab.tar.gz |
ProjectTree: Change hasBuildTargets to FolderNode::showInSimpleTree
So that the resource node can override it.
Task-number: QTCREATORBUG-11678
Change-Id: Id30d1b99ee23cc18fc29fc99cf0ad7ca919ed527
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
18 files changed, 75 insertions, 58 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp index 355720d169..f7bee79cbd 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp @@ -45,7 +45,7 @@ AutotoolsProjectNode::AutotoolsProjectNode(AutotoolsProject *project, Core::IDoc { } -bool AutotoolsProjectNode::hasBuildTargets() const +bool AutotoolsProjectNode::showInSimpleTree() const { return true; } diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h index a96e1485a2..8c96d0977a 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h @@ -57,7 +57,7 @@ class AutotoolsProjectNode : public ProjectExplorer::ProjectNode public: AutotoolsProjectNode(AutotoolsProject *project, Core::IDocument *projectFile); - bool hasBuildTargets() const; + bool showInSimpleTree() const; QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; bool canAddSubProject(const QString &proFilePath) const; bool addSubProjects(const QStringList &proFilePaths); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index 405b598990..ec7abf0d90 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -37,7 +37,7 @@ CMakeProjectNode::CMakeProjectNode(const QString &fileName) { } -bool CMakeProjectNode::hasBuildTargets() const +bool CMakeProjectNode::showInSimpleTree() const { // TODO return true; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index d34989ef22..f2bfe1c869 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -41,7 +41,7 @@ class CMakeProjectNode : public ProjectExplorer::ProjectNode friend class CMakeProject; public: CMakeProjectNode(const QString &fileName); - virtual bool hasBuildTargets() const; + virtual bool showInSimpleTree() const; virtual QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; virtual bool canAddSubProject(const QString &proFilePath) const; diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index e3ecda4434..294505a981 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -225,7 +225,7 @@ FolderNode *GenericProjectNode::findFolderByName(const QStringList &components, return 0; } -bool GenericProjectNode::hasBuildTargets() const +bool GenericProjectNode::showInSimpleTree() const { return true; } diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index a7c25c0b30..c8763e049f 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -51,7 +51,7 @@ public: Core::IDocument *projectFile() const; QString projectFilePath() const; - bool hasBuildTargets() const; + bool showInSimpleTree() const; QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 6ab2786edb..5eece06532 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -175,11 +175,11 @@ FlatModel::FlatModel(SessionNode *rootNode, QObject *parent) NodesWatcher *watcher = new NodesWatcher(this); m_rootNode->registerWatcher(watcher); - connect(watcher, SIGNAL(aboutToChangeHasBuildTargets(ProjectExplorer::ProjectNode*)), - this, SLOT(aboutToHasBuildTargetsChanged(ProjectExplorer::ProjectNode*))); + connect(watcher, SIGNAL(aboutToChangeShowInSimpleTree(ProjectExplorer::FolderNode*)), + this, SLOT(aboutToShowInSimpleTreeChanged(ProjectExplorer::FolderNode*))); - connect(watcher, SIGNAL(hasBuildTargetsChanged(ProjectExplorer::ProjectNode*)), - this, SLOT(hasBuildTargetsChanged(ProjectExplorer::ProjectNode*))); + connect(watcher, SIGNAL(showInSimpleTreeChanged(ProjectExplorer::FolderNode*)), + this, SLOT(showInSimpleTreeChanged(ProjectExplorer::FolderNode*))); connect(watcher, SIGNAL(foldersAboutToBeAdded(FolderNode*,QList<FolderNode*>)), this, SLOT(foldersAboutToBeAdded(FolderNode*,QList<FolderNode*>))); @@ -566,14 +566,9 @@ FolderNode *FlatModel::visibleFolderNode(FolderNode *node) const bool FlatModel::filter(Node *node) const { bool isHidden = false; - if (node->nodeType() == SessionNodeType) { - isHidden = false; - } else if (ProjectNode *projectNode = qobject_cast<ProjectNode*>(node)) { - if (m_filterProjects && projectNode->parentFolderNode() != m_rootNode) - isHidden = !projectNode->hasBuildTargets(); - } else if (node->nodeType() == FolderNodeType || node->nodeType() == VirtualFolderNodeType) { + if (FolderNode *folderNode = qobject_cast<FolderNode*>(node)) { if (m_filterProjects) - isHidden = true; + isHidden = !folderNode->showInSimpleTree(); } else if (FileNode *fileNode = qobject_cast<FileNode*>(node)) { if (m_filterGeneratedFiles) isHidden = fileNode->isGenerated(); @@ -762,7 +757,7 @@ void FlatModel::removed(FolderNode* parentNode, const QList<Node*> &newNodeList) } } -void FlatModel::aboutToHasBuildTargetsChanged(ProjectExplorer::ProjectNode* node) +void FlatModel::aboutToShowInSimpleTreeChanged(ProjectExplorer::FolderNode* node) { if (!m_filterProjects) return; @@ -777,7 +772,7 @@ void FlatModel::aboutToHasBuildTargetsChanged(ProjectExplorer::ProjectNode* node m_childNodes.remove(fn); } -void FlatModel::hasBuildTargetsChanged(ProjectExplorer::ProjectNode *node) +void FlatModel::showInSimpleTreeChanged(ProjectExplorer::FolderNode *node) { if (!m_filterProjects) return; diff --git a/src/plugins/projectexplorer/projectmodels.h b/src/plugins/projectexplorer/projectmodels.h index bcddc21153..98d83649b9 100644 --- a/src/plugins/projectexplorer/projectmodels.h +++ b/src/plugins/projectexplorer/projectmodels.h @@ -78,8 +78,8 @@ public slots: void setGeneratedFilesFilterEnabled(bool filter); private slots: - void aboutToHasBuildTargetsChanged(ProjectExplorer::ProjectNode *node); - void hasBuildTargetsChanged(ProjectExplorer::ProjectNode *node); + void aboutToShowInSimpleTreeChanged(ProjectExplorer::FolderNode *node); + void showInSimpleTreeChanged(ProjectExplorer::FolderNode *node); void foldersAboutToBeAdded(FolderNode *parentFolder, const QList<FolderNode*> &newFolders); void foldersAdded(); diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index a9401f40d2..e3470d259b 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -509,6 +509,23 @@ void FolderNode::removeFolderNodes(const QList<FolderNode*> &subFolders) emit watcher->foldersRemoved(); } +void FolderNode::aboutToChangeShowInSimpleTree() +{ + foreach (NodesWatcher *watcher, projectNode()->watchers()) + emit watcher->aboutToChangeShowInSimpleTree(this); +} + +void FolderNode::showInSimpleTreeChanged() +{ + foreach (NodesWatcher *watcher, projectNode()->watchers()) + emit watcher->showInSimpleTreeChanged(this); +} + +bool FolderNode::showInSimpleTree() const +{ + return false; +} + /*! \class ProjectExplorer::VirtualFolderNode @@ -572,18 +589,6 @@ QList<ProjectNode*> ProjectNode::subProjectNodes() const return m_subProjectNodes; } -void ProjectNode::aboutToChangeHasBuildTargets() -{ - foreach (NodesWatcher *watcher, watchers()) - emit watcher->aboutToChangeHasBuildTargets(this); -} - -void ProjectNode::hasBuildTargetsChanged() -{ - foreach (NodesWatcher *watcher, watchers()) - emit watcher->hasBuildTargetsChanged(this); -} - /*! \function bool ProjectNode::addSubProjects(const QStringList &) */ @@ -790,6 +795,11 @@ void SessionNode::accept(NodesVisitor *visitor) project->accept(visitor); } +bool SessionNode::showInSimpleTree() const +{ + return true; +} + QList<ProjectNode*> SessionNode::projectNodes() const { return m_projectNodes; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 980629e938..cec8e99042 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -191,12 +191,19 @@ public: virtual AddNewInformation addNewInformation(const QStringList &files, Node *context) const; + + // determines if node will be shown in the flat view, by default folder and projects aren't shown + void aboutToChangeShowInSimpleTree(); + void showInSimpleTreeChanged(); + virtual bool showInSimpleTree() const; + void addFileNodes(const QList<FileNode*> &files); void removeFileNodes(const QList<FileNode*> &files); void addFolderNodes(const QList<FolderNode*> &subFolders); void removeFolderNodes(const QList<FolderNode*> &subFolders); + protected: QList<FolderNode*> m_subFolderNodes; QList<FileNode*> m_fileNodes; @@ -231,12 +238,6 @@ public: // all subFolders that are projects QList<ProjectNode*> subProjectNodes() const; - // determines if the project will be shown in the flat view - // TODO find a better name - void aboutToChangeHasBuildTargets(); - void hasBuildTargetsChanged(); - virtual bool hasBuildTargets() const = 0; - virtual bool canAddSubProject(const QString &proFilePath) const = 0; virtual bool addSubProjects(const QStringList &proFilePaths) = 0; @@ -323,8 +324,8 @@ signals: void nodeUpdated(ProjectExplorer::Node *node); // projects - void aboutToChangeHasBuildTargets(ProjectExplorer::ProjectNode*); - void hasBuildTargetsChanged(ProjectExplorer::ProjectNode *node); + void aboutToChangeShowInSimpleTree(ProjectExplorer::FolderNode*); + void showInSimpleTreeChanged(ProjectExplorer::FolderNode *node); // folders & projects void foldersAboutToBeAdded(FolderNode *parentFolder, diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 8ea6551dcd..213fd4afe3 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -250,7 +250,7 @@ QbsBaseProjectNode::QbsBaseProjectNode(const QString &path) : ProjectExplorer::ProjectNode(path) { } -bool QbsBaseProjectNode::hasBuildTargets() const +bool QbsBaseProjectNode::showInSimpleTree() const { return false; } @@ -493,7 +493,7 @@ bool QbsProductNode::isEnabled() const return m_qbsProductData.isEnabled(); } -bool QbsProductNode::hasBuildTargets() const +bool QbsProductNode::showInSimpleTree() const { return true; } @@ -666,6 +666,11 @@ const qbs::ProjectData QbsProjectNode::qbsProjectData() const return m_qbsProjectData; } +bool QbsProjectNode::showInSimpleTree() const +{ + return true; +} + void QbsProjectNode::ctor() { if (m_projectIcon.isNull()) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index fe8ed9a65d..78455a839a 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -74,7 +74,7 @@ class QbsBaseProjectNode : public ProjectExplorer::ProjectNode public: explicit QbsBaseProjectNode(const QString &path); - bool hasBuildTargets() const; + bool showInSimpleTree() const; QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; @@ -138,7 +138,7 @@ public: explicit QbsProductNode(const qbs::ProductData &prd); bool isEnabled() const; - bool hasBuildTargets() const; + bool showInSimpleTree() const; void setQbsProductData(const qbs::ProductData prd); const qbs::ProductData qbsProductData() const { return m_qbsProductData; } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 6a51115ab6..f0f5bdc3e1 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -1567,9 +1567,9 @@ bool QmakeProFileNode::isParent(QmakeProFileNode *node) return false; } -bool QmakeProFileNode::hasBuildTargets() const +bool QmakeProFileNode::showInSimpleTree() const { - return hasBuildTargets(projectType()); + return showInSimpleTree(projectType()) || m_project->rootProjectNode() == this; } ProjectExplorer::FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const @@ -1578,7 +1578,7 @@ ProjectExplorer::FolderNode::AddNewInformation QmakeProFileNode::addNewInformati return AddNewInformation(QFileInfo(path()).fileName(), context == this ? 120 : 100); } -bool QmakeProFileNode::hasBuildTargets(QmakeProjectType projectType) const +bool QmakeProFileNode::showInSimpleTree(QmakeProjectType projectType) const { return (projectType == ApplicationTemplate || projectType == LibraryTemplate); } @@ -1788,15 +1788,15 @@ void QmakeProFileNode::applyEvaluate(EvalResult evalResult, bool async) removeProjectNodes(subProjectNodes()); removeFolderNodes(subFolderNodes()); - bool changesHasBuildTargets = hasBuildTargets() ^ hasBuildTargets(projectType); + bool changesShowInSimpleTree = showInSimpleTree() ^ showInSimpleTree(projectType); - if (changesHasBuildTargets) - aboutToChangeHasBuildTargets(); + if (changesShowInSimpleTree) + aboutToChangeShowInSimpleTree(); m_projectType = projectType; - if (changesHasBuildTargets) - hasBuildTargetsChanged(); + if (changesShowInSimpleTree) + showInSimpleTreeChanged(); // really emit here? or at the end? Nobody is connected to this signal at the moment // so we kind of can ignore that question for now diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 71e78b169e..305d16380c 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -147,7 +147,7 @@ public: // ProjectNode interface QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - bool hasBuildTargets() const { return false; } + bool showInSimpleTree() const { return false; } bool canAddSubProject(const QString &proFilePath) const; @@ -366,7 +366,7 @@ public: bool isParent(QmakeProFileNode *node); - bool hasBuildTargets() const; + bool showInSimpleTree() const; AddNewInformation addNewInformation(const QStringList &files, Node *context) const; @@ -404,7 +404,7 @@ public: bool validParse() const; bool parseInProgress() const; - bool hasBuildTargets(QmakeProjectType projectType) const; + bool showInSimpleTree(QmakeProjectType projectType) const; bool isDebugAndRelease() const; void setParseInProgress(bool b); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index dfaa55702b..d8a2e60ad6 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -164,7 +164,7 @@ ProjectExplorer::FolderNode *QmlProjectNode::findOrCreateFolderByName(const QStr return findOrCreateFolderByName(components, components.length()); } -bool QmlProjectNode::hasBuildTargets() const +bool QmlProjectNode::showInSimpleTree() const { return true; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index d47f7fb6d7..f2b94c1121 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -52,7 +52,7 @@ public: Core::IDocument *projectFile() const; QString projectFilePath() const; - virtual bool hasBuildTargets() const; + virtual bool showInSimpleTree() const; virtual QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 842baf2c09..3aeb932e60 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -257,6 +257,11 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor return AddNewInformation(name, p); } +bool ResourceTopLevelNode::showInSimpleTree() const +{ + return true; +} + ResourceFolderNode::ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent) : ProjectExplorer::FolderNode(parent->path() + QLatin1Char('/') + prefix), // TOOD Why add existing directory doesn't work diff --git a/src/plugins/resourceeditor/resourcenode.h b/src/plugins/resourceeditor/resourcenode.h index 9aa4166c93..01dfaf1c2e 100644 --- a/src/plugins/resourceeditor/resourcenode.h +++ b/src/plugins/resourceeditor/resourcenode.h @@ -60,6 +60,7 @@ public: bool removePrefix(const QString &prefix, const QString &lang); AddNewInformation addNewInformation(const QStringList &files, Node *context) const; + bool showInSimpleTree() const; private: Internal::ResourceFileWatcher *m_document; |