QbsProjectManager: Take Project::FilesMode into account

Change-Id: Ia3b56392c6334beb0e892adf952c0f752920d704
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Christian Kandeler
2016-09-29 08:51:08 +02:00
parent d452f84930
commit 47379011ea

View File

@@ -158,29 +158,40 @@ void QbsProject::projectLoaded()
m_parsingDelay.start(0);
}
static void collectFilesForProject(const qbs::ProjectData &project, QSet<QString> &result)
static void collectFilesForProject(const qbs::ProjectData &project, Project::FilesMode mode,
QSet<QString> &result)
{
result.insert(project.location().filePath());
if (mode & Project::SourceFiles)
result.insert(project.location().filePath());
foreach (const qbs::ProductData &prd, project.products()) {
foreach (const qbs::GroupData &grp, prd.groups()) {
foreach (const QString &file, grp.allFilePaths())
result.insert(file);
result.insert(grp.location().filePath());
if (mode & Project::SourceFiles) {
foreach (const qbs::GroupData &grp, prd.groups()) {
foreach (const QString &file, grp.allFilePaths())
result.insert(file);
result.insert(grp.location().filePath());
}
result.insert(prd.location().filePath());
}
if (mode & Project::GeneratedFiles) {
foreach (const qbs::ProductData &prd, project.products()) {
foreach (const qbs::ArtifactData &artifact, prd.generatedArtifacts())
result.insert(artifact.filePath());
}
}
result.insert(prd.location().filePath());
}
foreach (const qbs::ProjectData &subProject, project.subProjects())
collectFilesForProject(subProject, result);
collectFilesForProject(subProject, mode, result);
}
QStringList QbsProject::files(Project::FilesMode fileMode) const
{
Q_UNUSED(fileMode);
qCDebug(qbsPmLog) << Q_FUNC_INFO << m_qbsProject.isValid() << isParsing();
qCDebug(qbsPmLog) << Q_FUNC_INFO << fileMode << m_qbsProject.isValid() << isParsing();
if (!m_qbsProject.isValid() || isParsing())
return QStringList();
QSet<QString> result;
collectFilesForProject(m_projectData, result);
collectFilesForProject(m_projectData, fileMode, result);
result.unite(m_qbsProject.buildSystemFiles());
qCDebug(qbsPmLog) << "file count:" << result.count();
return result.toList();