aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projecttree.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-01-19 14:54:23 +0100
committerhjk <hjk@qt.io>2017-01-25 13:52:51 +0000
commit3c743346b07e0a80817737580bfa6d6c556c88e2 (patch)
tree86ae2b37b3636825e10af939e45c53506433782e /src/plugins/projectexplorer/projecttree.h
parent03a68a91bbf3236472e41721192a0716d1db1fe8 (diff)
ProjectExplorer: Make the FlatModel a Utils::TreeModel
The FlatModel is essentially a proxy model keeping expansion and filter state per ProjectTree(View). Using a Utils::TreeModel makes it fast enough to allow recreation of the proxy structure on structural changes simplifying the parent/child logic significantly. The {Session,Project,Folder,File}Node hierarchy still is still primary information and shared by all views. Change-Id: Ic08180a19bda37908280ff30e0737d188ed93e92 Reviewed-by: Robert Loehning <robert.loehning@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/projecttree.h')
-rw-r--r--src/plugins/projectexplorer/projecttree.h62
1 files changed, 5 insertions, 57 deletions
diff --git a/src/plugins/projectexplorer/projecttree.h b/src/plugins/projectexplorer/projecttree.h
index 196e280c14..e7822abc18 100644
--- a/src/plugins/projectexplorer/projecttree.h
+++ b/src/plugins/projectexplorer/projecttree.h
@@ -68,61 +68,14 @@ signals:
// Emitted whenever the model needs to send a update signal.
void nodeUpdated(ProjectExplorer::Node *node);
-
- // projects
- void aboutToChangeShowInSimpleTree(ProjectExplorer::FolderNode*);
- void showInSimpleTreeChanged(ProjectExplorer::FolderNode *node);
-
- // folders & projects
- void foldersAboutToBeAdded(FolderNode *parentFolder,
- const QList<FolderNode*> &newFolders);
- void foldersAdded();
-
- void foldersAboutToBeRemoved(FolderNode *parentFolder,
- const QList<FolderNode*> &staleFolders);
- void foldersRemoved();
-
- // files
- void filesAboutToBeAdded(FolderNode *folder,
- const QList<FileNode*> &newFiles);
- void filesAdded();
-
- void filesAboutToBeRemoved(FolderNode *folder,
- const QList<FileNode*> &staleFiles);
- void filesRemoved();
- void nodeSortKeyAboutToChange(Node *node);
- void nodeSortKeyChanged();
+ void dataChanged();
void aboutToShowContextMenu(ProjectExplorer::Project *project,
ProjectExplorer::Node *node);
public: // for nodes to emit signals, do not call unless you are a node
- void emitNodeUpdated(ProjectExplorer::Node *node);
-
- // projects
- void emitAboutToChangeShowInSimpleTree(ProjectExplorer::FolderNode *node);
- void emitShowInSimpleTreeChanged(ProjectExplorer::FolderNode *node);
-
- // folders & projects
- void emitFoldersAboutToBeAdded(FolderNode *parentFolder,
- const QList<FolderNode*> &newFolders);
- void emitFoldersAdded(FolderNode *folder);
-
- void emitFoldersAboutToBeRemoved(FolderNode *parentFolder,
- const QList<FolderNode*> &staleFolders);
- void emitFoldersRemoved(FolderNode *folder);
-
- // files
- void emitFilesAboutToBeAdded(FolderNode *folder,
- const QList<FileNode*> &newFiles);
- void emitFilesAdded(FolderNode *folder);
-
- void emitFilesAboutToBeRemoved(FolderNode *folder,
- const QList<FileNode*> &staleFiles);
- void emitFilesRemoved(FolderNode *folder);
- void emitNodeSortKeyAboutToChange(Node *node);
- void emitNodeSortKeyChanged(Node *node);
-
+ static void emitNodeUpdated(ProjectExplorer::Node *node);
+ static void emitDataChanged();
void collapseAll();
private:
@@ -144,14 +97,9 @@ private:
private:
static ProjectTree *s_instance;
- QList<Internal::ProjectTreeWidget *> m_projectTreeWidgets;
- Node *m_currentNode = nullptr;
+ QList<QPointer<Internal::ProjectTreeWidget>> m_projectTreeWidgets;
+ QPointer<Node> m_currentNode;
Project *m_currentProject = nullptr;
- QList<FileNode *> m_filesAdded;
- QList<FolderNode *> m_foldersAdded;
- bool m_resetCurrentNodeFolder = false;
- bool m_resetCurrentNodeFile = false;
- bool m_resetCurrentNodeProject = false;
Internal::ProjectTreeWidget *m_focusForContextMenu = nullptr;
Core::Context m_lastProjectContext;
};