diff options
Diffstat (limited to 'src/plugins/genericprojectmanager/genericprojectnodes.cpp')
-rw-r--r-- | src/plugins/genericprojectmanager/genericprojectnodes.cpp | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index bbc1f3b8cc..41afe193e0 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -116,8 +116,10 @@ void GenericProjectNode::refresh() filesInPath[relativeFilePath].append(absoluteFileName); } + FolderByName folderByName; foreach (const QString &filePath, filePaths) { - FolderNode *folder = findOrCreateFolderByName(filePath); + QStringList components = filePath.split(QLatin1Char('/')); + FolderNode *folder = findOrCreateFolderByName(&folderByName, components, components.size()); QList<FileNode *> fileNodes; foreach (const QString &file, filesInPath.value(filePath)) { @@ -128,13 +130,12 @@ void GenericProjectNode::refresh() addFileNodes(fileNodes, folder); } - - m_folderByName.clear(); } -ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const QStringList &components, int end) +ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName + (FolderByName *folderByName, const QStringList &components, int end) { - if (! end) + if (!end) return 0; QString folderName; @@ -148,28 +149,22 @@ ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const if (component.isEmpty()) return this; - else if (FolderNode *folder = m_folderByName.value(folderName)) + else if (FolderNode *folder = folderByName->value(folderName)) return folder; const QString baseDir = QFileInfo(path()).path(); FolderNode *folder = new FolderNode(baseDir + QLatin1Char('/') + folderName); folder->setDisplayName(component); - m_folderByName.insert(folderName, folder); + folderByName->insert(folderName, folder); - FolderNode *parent = findOrCreateFolderByName(components, end - 1); - if (! parent) + FolderNode *parent = findOrCreateFolderByName(folderByName, components, end - 1); + if (!parent) parent = this; addFolderNodes(QList<FolderNode*>() << folder, parent); return folder; } -ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const QString &filePath) -{ - QStringList components = filePath.split(QLatin1Char('/')); - return findOrCreateFolderByName(components, components.length()); -} - bool GenericProjectNode::hasBuildTargets() const { return true; |