genericproject: pass an essentially temporary variable as parameter

This commit is contained in:
hjk
2011-04-12 08:29:42 +02:00
parent 3df1d524b7
commit 4a338a5129
2 changed files with 13 additions and 18 deletions

View File

@@ -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,11 +130,10 @@ 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)
return 0;
@@ -148,15 +149,15 @@ 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);
FolderNode *parent = findOrCreateFolderByName(folderByName, components, end - 1);
if (!parent)
parent = this;
addFolderNodes(QList<FolderNode*>() << folder, parent);
@@ -164,12 +165,6 @@ ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const
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;

View File

@@ -84,13 +84,13 @@ public:
void refresh();
private:
FolderNode *findOrCreateFolderByName(const QString &filePath);
FolderNode *findOrCreateFolderByName(const QStringList &components, int end);
typedef QHash<QString, FolderNode *> FolderByName;
FolderNode *findOrCreateFolderByName(FolderByName *folderByName,
const QStringList &components, int end);
private:
GenericProject *m_project;
Core::IFile *m_projectFile;
QHash<QString, FolderNode *> m_folderByName;
};
} // namespace Internal