diff options
author | hjk <hjk@qt.io> | 2023-04-04 16:43:44 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-04-17 11:05:39 +0000 |
commit | d8de6c88e9deea13b7a95e01c6280882afc490ff (patch) | |
tree | 4db0c77bd6811d5c1b850a4ac54ed9bf28e92458 /src/plugins/modeleditor | |
parent | 6b661ef1bed853acaa5a4006f9ba32a53ac465df (diff) |
Avoid creation of temporary lists of ProjectNodes
Change-Id: Iac84f7f95291fb3b12a071a066d358aaab309c52
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/modeleditor')
-rw-r--r-- | src/plugins/modeleditor/componentviewcontroller.cpp | 10 | ||||
-rw-r--r-- | src/plugins/modeleditor/modelindexer.cpp | 28 |
2 files changed, 21 insertions, 17 deletions
diff --git a/src/plugins/modeleditor/componentviewcontroller.cpp b/src/plugins/modeleditor/componentviewcontroller.cpp index 75495c6684e..4071c5b0159 100644 --- a/src/plugins/modeleditor/componentviewcontroller.cpp +++ b/src/plugins/modeleditor/componentviewcontroller.cpp @@ -29,6 +29,7 @@ // TODO implement removing include dependencies that are not longer used // TODO refactor add/remove relations between ancestor packages into extra controller class +using namespace ProjectExplorer; using namespace Utils; namespace ModelEditor { @@ -217,17 +218,16 @@ QStringList UpdateIncludeDependenciesVisitor::findFilePathOfComponent(const qmt: void UpdateIncludeDependenciesVisitor::collectElementPaths(const ProjectExplorer::FolderNode *folderNode, QMultiHash<QString, Node> *filePathsMap) { - const QList<ProjectExplorer::FileNode *> fileNodes = folderNode->fileNodes(); - for (const ProjectExplorer::FileNode *fileNode : fileNodes) { + folderNode->forEachFileNode([&](FileNode *fileNode) { QString elementName = qmt::NameController::convertFileNameToElementName(fileNode->filePath().toString()); QFileInfo fileInfo = fileNode->filePath().toFileInfo(); QString nodePath = fileInfo.path(); QStringList elementsPath = qmt::NameController::buildElementsPath(nodePath, false); filePathsMap->insert(elementName, Node(fileNode->filePath().toString(), elementsPath)); - } - const QList<ProjectExplorer::FolderNode *> subNodes = folderNode->folderNodes(); - for (const ProjectExplorer::FolderNode *subNode : subNodes) + }); + folderNode->forEachFolderNode([&](FolderNode *subNode) { collectElementPaths(subNode, filePathsMap); + }); } qmt::MComponent *UpdateIncludeDependenciesVisitor::findComponentFromFilePath(const QString &filePath) diff --git a/src/plugins/modeleditor/modelindexer.cpp b/src/plugins/modeleditor/modelindexer.cpp index 9923782ac72..d4471fe0ec6 100644 --- a/src/plugins/modeleditor/modelindexer.cpp +++ b/src/plugins/modeleditor/modelindexer.cpp @@ -34,6 +34,8 @@ #include <QDebug> #include <QPointer> +using namespace ProjectExplorer; + namespace ModelEditor { namespace Internal { @@ -447,18 +449,20 @@ QString ModelIndexer::findFirstModel(ProjectExplorer::FolderNode *folderNode, { if (!mimeType.isValid()) return QString(); - const QList<ProjectExplorer::FileNode *> fileNodes = folderNode->fileNodes(); - for (const ProjectExplorer::FileNode *fileNode : fileNodes) { - if (mimeType.suffixes().contains(fileNode->filePath().completeSuffix())) - return fileNode->filePath().toString(); - } - const QList<ProjectExplorer::FolderNode *> subFolderNodes = folderNode->folderNodes(); - for (ProjectExplorer::FolderNode *subFolderNode : subFolderNodes) { - QString modelFileName = findFirstModel(subFolderNode, mimeType); - if (!modelFileName.isEmpty()) - return modelFileName; - } - return QString(); + + const QStringList suffixes = mimeType.suffixes(); + FileNode *foundFileNode = folderNode->findChildFileNode([&](FileNode *fn) { + return suffixes.contains(fn->filePath().completeSuffix()); + }); + if (foundFileNode) + return foundFileNode->filePath().toString(); + + QString modelFileName; + folderNode->findChildFolderNode([&](FolderNode *fn) { + modelFileName = findFirstModel(fn, mimeType); + return !modelFileName.isEmpty(); + }); + return modelFileName; } void ModelIndexer::forgetProject(ProjectExplorer::Project *project) |