Qbs: Improve performance of opening project

Task-number: QTCREATORBUG-15559
Change-Id: I5361c9803a9ce86bcfdc66026f946a048c5180e1
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2016-02-22 12:58:35 +02:00
committed by Orgad Shaneh
parent 1c870e8b30
commit d1631d695e
2 changed files with 9 additions and 13 deletions

View File

@@ -479,9 +479,14 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro
foldersToRemove.append(fn);
}
QHash<QString, ProjectExplorer::FileType> fileTypeHash;
foreach (const qbs::SourceArtifact &sa, group.allSourceArtifacts())
fileTypeHash[sa.filePath()] = fileType(sa);
foreach (FileTreeNode *c, fileTree->children) {
Utils::FileName path = Utils::FileName::fromString(c->path());
const ProjectExplorer::FileType newFileType = fileType(group, *c);
const ProjectExplorer::FileType newFileType =
fileTypeHash.value(c->path(), ProjectExplorer::UnknownFileType);
const bool isQrcFile = newFileType == ProjectExplorer::ResourceType;
// Handle files:
@@ -541,17 +546,9 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro
root->addFileNodes(filesToAdd);
}
ProjectExplorer::FileType QbsGroupNode::fileType(const qbs::GroupData &group,
const FileTreeNode &fileNode)
ProjectExplorer::FileType QbsGroupNode::fileType(const qbs::SourceArtifact &artifact)
{
if (!group.isValid())
return ProjectExplorer::UnknownFileType;
const qbs::SourceArtifact artifact = Utils::findOrDefault(group.allSourceArtifacts(),
[&fileNode](const qbs::SourceArtifact &sa) { return sa.filePath() == fileNode.path(); });
QTC_ASSERT(artifact.isValid() || !fileNode.isFile(),
qDebug() << fileNode.path() << group.name(); return ProjectExplorer::UnknownFileType);
if (!artifact.isValid())
return ProjectExplorer::UnknownFileType;
QTC_ASSERT(artifact.isValid(), return ProjectExplorer::UnknownFileType);
if (artifact.fileTags().contains(QLatin1String("c"))
|| artifact.fileTags().contains(QLatin1String("cpp"))

View File

@@ -108,8 +108,7 @@ public:
private:
static void setupFolder(ProjectExplorer::FolderNode *folder, const qbs::GroupData &group,
const FileTreeNode *subFileTree, const QString &baseDir, bool updateExisting);
static ProjectExplorer::FileType fileType(const qbs::GroupData &group,
const FileTreeNode &fileNode);
static ProjectExplorer::FileType fileType(const qbs::SourceArtifact &artifact);
qbs::GroupData m_qbsGroupData;
QString m_productPath;