aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/modeleditor
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-04-04 16:43:44 +0200
committerhjk <hjk@qt.io>2023-04-17 11:05:39 +0000
commitd8de6c88e9deea13b7a95e01c6280882afc490ff (patch)
tree4db0c77bd6811d5c1b850a4ac54ed9bf28e92458 /src/plugins/modeleditor
parent6b661ef1bed853acaa5a4006f9ba32a53ac465df (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.cpp10
-rw-r--r--src/plugins/modeleditor/modelindexer.cpp28
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)