From 241d3a1ef66527c629ca3e8cc4d302c389e88b7f Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Wed, 4 Jun 2014 12:50:10 +0200 Subject: [PATCH] QmakeProject: Rework allProFiles() Change-Id: I49309565368fb8e00dd5a67c0e3ac77392924c75 Reviewed-by: Eike Ziller --- src/plugins/android/androidrunfactories.cpp | 10 +++-- src/plugins/ios/iosrunfactories.cpp | 12 ++++-- .../qmakeprojectmanager/qmakeproject.cpp | 37 ++++++------------- .../qmakeprojectmanager/qmakeproject.h | 8 ++-- 4 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/plugins/android/androidrunfactories.cpp b/src/plugins/android/androidrunfactories.cpp index 7ec8105055f..59ff232cee4 100644 --- a/src/plugins/android/androidrunfactories.cpp +++ b/src/plugins/android/androidrunfactories.cpp @@ -90,11 +90,15 @@ QList AndroidRunConfigurationFactory::availableCreationIds(Target *par QList ids; if (!AndroidManager::supportsAndroid(parent)) return ids; - QList nodes = static_cast(parent->project())->allProFiles(); + + QmakeProject *project = static_cast(parent->project()); + + QList nodes = project->allProFiles(QList() + << ApplicationTemplate + << LibraryTemplate); const Core::Id base = Core::Id(ANDROID_RC_ID_PREFIX); foreach (QmakeProFileNode *node, nodes) - if (node->projectType() == ApplicationTemplate || node->projectType() == LibraryTemplate) - ids << base.withSuffix(node->path()); + ids << base.withSuffix(node->path()); return ids; } diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp index 137d2cf9beb..3bbc256a7c8 100644 --- a/src/plugins/ios/iosrunfactories.cpp +++ b/src/plugins/ios/iosrunfactories.cpp @@ -98,11 +98,15 @@ QList IosRunConfigurationFactory::availableCreationIds(Target *parent) if (!IosManager::supportsIos(parent)) return ids; Core::Id baseId(IOS_RC_ID_PREFIX); - QList nodes = static_cast(parent->project())->allProFiles(); + QmakeProject *project = static_cast(parent->project()); + + QList nodes = project->allProFiles(QList() + << ApplicationTemplate + << LibraryTemplate + << AuxTemplate); + foreach (QmakeProFileNode *node, nodes) - if (node->projectType() == ApplicationTemplate || node->projectType() == LibraryTemplate - || node->projectType() == AuxTemplate) - ids << baseId.withSuffix(node->path()); + ids << baseId.withSuffix(node->path()); return ids; } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index c2ea6caf7de..b8e39bff09d 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -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 &list, QmakeProFileNode *node, Parsing parse) +void QmakeProject::collectAllProFiles(QList &list, QmakeProFileNode *node, Parsing parse, + const QList &projectTypes) { if (parse == ExactAndCumulativeParse || node->includedInExactParse()) - list.append(node); - foreach (ProjectNode *n, node->subProjectNodes()) { - QmakeProFileNode *qmakeProFileNode = qobject_cast(n); - if (qmakeProFileNode) - collectAllfProFiles(list, qmakeProFileNode, parse); - } -} - -void QmakeProject::collectApplicationProFiles(QList &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(n); if (qmakeProFileNode) - collectApplicationProFiles(list, qmakeProFileNode, parse); + collectAllProFiles(list, qmakeProFileNode, parse, projectTypes); } } -QList QmakeProject::allProFiles(Parsing parse) const -{ - QList list; - if (!rootProjectNode()) - return list; - collectAllfProFiles(list, rootQmakeProjectNode(), parse); - return list; -} - QList QmakeProject::applicationProFiles(Parsing parse) const +{ + return allProFiles(QList() << ApplicationTemplate << ScriptTemplate, parse); +} + +QList QmakeProject::allProFiles(const QList &projectTypes, Parsing parse) const { QList list; if (!rootProjectNode()) return list; - collectApplicationProFiles(list, rootQmakeProjectNode(), parse); + collectAllProFiles(list, rootQmakeProjectNode(), parse, projectTypes); return list; } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index ec75fdddd96..d116a9d90d1 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -31,6 +31,7 @@ #define QMAKEPROJECT_H #include "qmakeprojectmanager_global.h" +#include "qmakenodes.h" #include #include @@ -86,7 +87,8 @@ public: virtual QString generatedUiHeader(const QString &formFile) const; enum Parsing {ExactParse, ExactAndCumulativeParse }; - QList allProFiles(Parsing parse = ExactParse) const; + QList allProFiles(const QList &projectTypes = QList(), + Parsing parse = ExactParse) const; QList applicationProFiles(Parsing parse = ExactParse) const; bool hasApplicationProFile(const QString &path) const; QStringList applicationProFilePathes(const QString &prepend = QString(), Parsing parse = ExactParse) const; @@ -162,8 +164,8 @@ private: void updateCppCodeModel(); void updateQmlJSCodeModel(); - static void collectAllfProFiles(QList &list, QmakeProFileNode *node, Parsing parse); - static void collectApplicationProFiles(QList &list, QmakeProFileNode *node, Parsing parse); + static void collectAllProFiles(QList &list, QmakeProFileNode *node, Parsing parse, + const QList &projectTypes); static void findProFile(const QString& fileName, QmakeProFileNode *root, QList &list); static bool hasSubNode(QmakePriFileNode *root, const QString &path);