diff options
author | hjk <hjk@qt.io> | 2017-01-19 14:54:23 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-01-25 13:52:51 +0000 |
commit | 3c743346b07e0a80817737580bfa6d6c556c88e2 (patch) | |
tree | 86ae2b37b3636825e10af939e45c53506433782e /src/plugins/projectexplorer/projecttree.h | |
parent | 03a68a91bbf3236472e41721192a0716d1db1fe8 (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.h | 62 |
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; }; |