forked from qt-creator/qt-creator
genericproject: pass an essentially temporary variable as parameter
This commit is contained in:
@@ -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,11 +130,10 @@ 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;
|
||||||
@@ -148,15 +149,15 @@ 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);
|
||||||
@@ -164,12 +165,6 @@ ProjectExplorer::FolderNode *GenericProjectNode::findOrCreateFolderByName(const
|
|||||||
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;
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user