diff options
author | hjk <hjk@qt.io> | 2017-01-19 11:32:53 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-01-26 10:32:22 +0000 |
commit | e20549d29546e768725be68056862f45682e5b0c (patch) | |
tree | 5e6e403c30b897a5dfe8b84f80b5a8c4dc8afbca /src/plugins/resourceeditor/resourcenode.cpp | |
parent | 4012611aabeec3fe3bbe834a941af8843fb3b6b6 (diff) |
ProjectManager: Add function to set a list of files in folder nodes
... instead of having to remove/add. Use it in some places
in QmakeProjectManager and the ResourceEditor where the
(sub)tree is rebuild anyway.
Change-Id: I46b3c078c576b72dba6e87432570d030b7572026
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/resourceeditor/resourcenode.cpp')
-rw-r--r-- | src/plugins/resourceeditor/resourcenode.cpp | 98 |
1 files changed, 5 insertions, 93 deletions
diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 1bb7b8c0ed..7603dd6d41 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -103,11 +103,6 @@ static bool sortByPrefixAndLang(ProjectExplorer::FolderNode *a, ProjectExplorer: return aa->lang() < bb->lang(); } -static bool sortNodesByPath(ProjectExplorer::Node *a, ProjectExplorer::Node *b) -{ - return a->filePath() < b->filePath(); -} - ResourceTopLevelNode::ResourceTopLevelNode( const Utils::FileName &filePath, const QString &contents, ProjectExplorer::FolderNode *parent) @@ -226,27 +221,13 @@ void ResourceTopLevelNode::update() } - QList<ProjectExplorer::FolderNode *> oldPrefixList = folderNodes(); - QList<ProjectExplorer::FolderNode *> prefixesToAdd; - QList<ProjectExplorer::FolderNode *> prefixesToRemove; - - Utils::sort(oldPrefixList, sortByPrefixAndLang); - Utils::sort(newPrefixList, sortByPrefixAndLang); - - ProjectExplorer::compareSortedLists(oldPrefixList, newPrefixList, - prefixesToRemove, prefixesToAdd, sortByPrefixAndLang); - - removeFolderNodes(prefixesToRemove); - addFolderNodes(prefixesToAdd); - - // delete nodes that weren't added - qDeleteAll(ProjectExplorer::subtractSortedList(newPrefixList, prefixesToAdd, sortByPrefixAndLang)); + addFolderNodes(newPrefixList); foreach (FolderNode *sfn, folderNodes()) { ResourceFolderNode *srn = static_cast<ResourceFolderNode *>(sfn); PrefixFolderLang folderId(srn->prefix(), QString(), srn->lang()); - srn->updateFiles(filesToAdd[folderId]); - srn->updateFolders(foldersToAddToPrefix[folderId]); + srn->setFileNodes(filesToAdd[folderId]); + srn->setFolderNodes(foldersToAddToPrefix[folderId]); foreach (FolderNode* ssfn, sfn->folderNodes()) { SimpleResourceFolderNode *sssn = static_cast<SimpleResourceFolderNode *>(ssfn); sssn->addFilesAndSubfolders(filesToAdd, foldersToAddToFolders, srn->prefix(), srn->lang()); @@ -533,40 +514,6 @@ ResourceTopLevelNode *ResourceFolderNode::resourceNode() const return m_topLevelNode; } -void ResourceFolderNode::updateFiles(QList<ProjectExplorer::FileNode *> newList) -{ - QList<ProjectExplorer::FileNode *> oldList = fileNodes(); - QList<ProjectExplorer::FileNode *> filesToAdd; - QList<ProjectExplorer::FileNode *> filesToRemove; - - Utils::sort(oldList, sortNodesByPath); - Utils::sort(newList, sortNodesByPath); - - ProjectExplorer::compareSortedLists(oldList, newList, filesToRemove, filesToAdd, sortNodesByPath); - - removeFileNodes(filesToRemove); - addFileNodes(filesToAdd); - - qDeleteAll(ProjectExplorer::subtractSortedList(newList, filesToAdd, sortNodesByPath)); -} - -void ResourceFolderNode::updateFolders(QList<ProjectExplorer::FolderNode *> newList) -{ - QList<ProjectExplorer::FolderNode *> oldList = folderNodes(); - QList<ProjectExplorer::FolderNode *> foldersToAdd; - QList<ProjectExplorer::FolderNode *> foldersToRemove; - - Utils::sort(oldList, sortNodesByPath); - Utils::sort(newList, sortNodesByPath); - - ProjectExplorer::compareSortedLists(oldList, newList, foldersToRemove, foldersToAdd, sortNodesByPath); - - removeFolderNodes(foldersToRemove); - addFolderNodes(foldersToAdd); - - qDeleteAll(ProjectExplorer::subtractSortedList(newList, foldersToAdd, sortNodesByPath)); -} - ResourceFileWatcher::ResourceFileWatcher(ResourceTopLevelNode *node) : IDocument(0), m_node(node) { @@ -718,49 +665,14 @@ ResourceFolderNode *SimpleResourceFolderNode::prefixNode() const return m_prefixNode; } -void SimpleResourceFolderNode::updateFiles(QList<ProjectExplorer::FileNode *> newList) -{ - QList<ProjectExplorer::FileNode *> oldList = fileNodes(); - QList<ProjectExplorer::FileNode *> filesToAdd; - QList<ProjectExplorer::FileNode *> filesToRemove; - - Utils::sort(oldList, sortNodesByPath); - Utils::sort(newList, sortNodesByPath); - - ProjectExplorer::compareSortedLists(oldList, newList, filesToRemove, filesToAdd, sortNodesByPath); - - removeFileNodes(filesToRemove); - addFileNodes(filesToAdd); - - qDeleteAll(ProjectExplorer::subtractSortedList(newList, filesToAdd, sortNodesByPath)); -} - -void SimpleResourceFolderNode::updateFolders(QList<ProjectExplorer::FolderNode *> newList) -{ - QList<ProjectExplorer::FolderNode *> oldList = folderNodes(); - QList<ProjectExplorer::FolderNode *> foldersToAdd; - QList<ProjectExplorer::FolderNode *> foldersToRemove; - - Utils::sort(oldList, sortNodesByPath); - Utils::sort(newList, sortNodesByPath); - - ProjectExplorer::compareSortedLists(oldList, newList, foldersToRemove, foldersToAdd, sortNodesByPath); - - removeFolderNodes(foldersToRemove); - addFolderNodes(foldersToAdd); - - qDeleteAll(ProjectExplorer::subtractSortedList(newList, foldersToAdd, sortNodesByPath)); -} - - void SimpleResourceFolderNode::addFilesAndSubfolders(QMap<PrefixFolderLang, QList<ProjectExplorer::FileNode *>> filesToAdd, QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode*> > foldersToAdd, const QString &prefix, const QString &lang) { - updateFiles(filesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); - updateFolders(foldersToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); + setFileNodes(filesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); + setFolderNodes(foldersToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); foreach (FolderNode* subNode, folderNodes()) { SimpleResourceFolderNode* sn = static_cast<SimpleResourceFolderNode*>(subNode); sn->addFilesAndSubfolders(filesToAdd, foldersToAdd, prefix, lang); |