QmakeProject: Rework allProFiles()

Change-Id: I49309565368fb8e00dd5a67c0e3ac77392924c75
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Daniel Teske
2014-06-04 12:50:10 +02:00
parent 0926da3a03
commit 241d3a1ef6
4 changed files with 31 additions and 36 deletions

View File

@@ -67,6 +67,7 @@
using namespace QmakeProjectManager;
using namespace QmakeProjectManager::Internal;
using namespace ProjectExplorer;
using namespace Utils;
enum { debug = 0 };
@@ -1058,46 +1059,30 @@ bool QmakeProject::parseInProgress(const QString &proFilePath) const
return node && node->parseInProgress();
}
void QmakeProject::collectAllfProFiles(QList<QmakeProFileNode *> &list, QmakeProFileNode *node, Parsing parse)
void QmakeProject::collectAllProFiles(QList<QmakeProFileNode *> &list, QmakeProFileNode *node, Parsing parse,
const QList<QmakeProjectType> &projectTypes)
{
if (parse == ExactAndCumulativeParse || node->includedInExactParse())
list.append(node);
foreach (ProjectNode *n, node->subProjectNodes()) {
QmakeProFileNode *qmakeProFileNode = qobject_cast<QmakeProFileNode *>(n);
if (qmakeProFileNode)
collectAllfProFiles(list, qmakeProFileNode, parse);
}
}
void QmakeProject::collectApplicationProFiles(QList<QmakeProFileNode *> &list, QmakeProFileNode *node, Parsing parse)
{
if (node->projectType() == ApplicationTemplate
|| node->projectType() == ScriptTemplate) {
if (parse == ExactAndCumulativeParse || node->includedInExactParse())
if (projectTypes.isEmpty() || projectTypes.contains(node->projectType()))
list.append(node);
}
foreach (ProjectNode *n, node->subProjectNodes()) {
QmakeProFileNode *qmakeProFileNode = qobject_cast<QmakeProFileNode *>(n);
if (qmakeProFileNode)
collectApplicationProFiles(list, qmakeProFileNode, parse);
collectAllProFiles(list, qmakeProFileNode, parse, projectTypes);
}
}
QList<QmakeProFileNode *> QmakeProject::allProFiles(Parsing parse) const
{
QList<QmakeProFileNode *> list;
if (!rootProjectNode())
return list;
collectAllfProFiles(list, rootQmakeProjectNode(), parse);
return list;
}
QList<QmakeProFileNode *> QmakeProject::applicationProFiles(Parsing parse) const
{
return allProFiles(QList<QmakeProjectType>() << ApplicationTemplate << ScriptTemplate, parse);
}
QList<QmakeProFileNode *> QmakeProject::allProFiles(const QList<QmakeProjectType> &projectTypes, Parsing parse) const
{
QList<QmakeProFileNode *> list;
if (!rootProjectNode())
return list;
collectApplicationProFiles(list, rootQmakeProjectNode(), parse);
collectAllProFiles(list, rootQmakeProjectNode(), parse, projectTypes);
return list;
}