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); filesInPath[relativeFilePath].append(absoluteFileName);
} }
FolderByName folderByName;
foreach (const QString &filePath, filePaths) { foreach (const QString &filePath, filePaths) {
FolderNode *folder = findOrCreateFolderByName(filePath); QStringList components = filePath.split(QLatin1Char('/'));
FolderNode *folder = findOrCreateFolderByName(&folderByName, components, components.size());
QList<FileNode *> fileNodes; QList<FileNode *> fileNodes;
foreach (const QString &file, filesInPath.value(filePath)) { foreach (const QString &file, filesInPath.value(filePath)) {
@@ -128,13 +130,12 @@ void GenericProjectNode::refresh()
addFileNodes(fileNodes, folder); 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; return 0;
QString folderName; QString folderName;
@@ -148,28 +149,22 @@ ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const
if (component.isEmpty()) if (component.isEmpty())
return this; return this;
else if (FolderNode *folder = m_folderByName.value(folderName)) else if (FolderNode *folder = folderByName->value(folderName))
return folder; return folder;
const QString baseDir = QFileInfo(path()).path(); const QString baseDir = QFileInfo(path()).path();
FolderNode *folder = new FolderNode(baseDir + QLatin1Char('/') + folderName); FolderNode *folder = new FolderNode(baseDir + QLatin1Char('/') + folderName);
folder->setDisplayName(component); 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) if (!parent)
parent = this; parent = this;
addFolderNodes(QList<FolderNode*>() << folder, parent); addFolderNodes(QList<FolderNode*>() << folder, parent);
return folder; return folder;
} }
ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const QString &filePath)
{
QStringList components = filePath.split(QLatin1Char('/'));
return findOrCreateFolderByName(components, components.length());
}
bool GenericProjectNode::hasBuildTargets() const bool GenericProjectNode::hasBuildTargets() const
{ {
return true; return true;

View File

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