diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp index 355720d1693..f7bee79cbd3 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 a96e1485a27..8c96d0977a9 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 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 405b598990f..ec7abf0d902 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 d34989ef223..f2bfe1c8691 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 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 e3ecda44349..294505a9819 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 a7c25c0b304..c8763e049fa 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 supportedActions(Node *node) const; diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 6ab2786edba..5eece065324 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)), this, SLOT(foldersAboutToBeAdded(FolderNode*,QList))); @@ -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(node)) { - if (m_filterProjects && projectNode->parentFolderNode() != m_rootNode) - isHidden = !projectNode->hasBuildTargets(); - } else if (node->nodeType() == FolderNodeType || node->nodeType() == VirtualFolderNodeType) { + if (FolderNode *folderNode = qobject_cast(node)) { if (m_filterProjects) - isHidden = true; + isHidden = !folderNode->showInSimpleTree(); } else if (FileNode *fileNode = qobject_cast(node)) { if (m_filterGeneratedFiles) isHidden = fileNode->isGenerated(); @@ -762,7 +757,7 @@ void FlatModel::removed(FolderNode* parentNode, const QList &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 bcddc211538..98d83649b91 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 &newFolders); void foldersAdded(); diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index a9401f40d20..e3470d259bc 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -509,6 +509,23 @@ void FolderNode::removeFolderNodes(const QList &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::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 SessionNode::projectNodes() const { return m_projectNodes; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 980629e9387..cec8e99042a 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 &files); void removeFileNodes(const QList &files); void addFolderNodes(const QList &subFolders); void removeFolderNodes(const QList &subFolders); + protected: QList m_subFolderNodes; QList m_fileNodes; @@ -231,12 +238,6 @@ public: // all subFolders that are projects QList 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 8ea6551dcd3..213fd4afe3a 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 fe8ed9a65da..78455a839a2 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 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 6a51115ab65..f0f5bdc3e12 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 71e78b169e2..305d16380c9 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -147,7 +147,7 @@ public: // ProjectNode interface QList 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 dfaa55702b2..d8a2e60ad66 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 d47f7fb6d7f..f2b94c11219 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 supportedActions(Node *node) const; diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 842baf2c098..3aeb932e603 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 9aa4166c938..01dfaf1c2ea 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;