summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/ios/iosrunfactories.cpp12
-rw-r--r--src/plugins/ios/iosrunfactories.h4
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp12
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h3
-rw-r--r--src/plugins/qmakeprojectmanager/qmakenodes.cpp28
-rw-r--r--src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp13
-rw-r--r--src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.h7
7 files changed, 32 insertions, 47 deletions
diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp
index 1cc83f3911..dccf82e952 100644
--- a/src/plugins/ios/iosrunfactories.cpp
+++ b/src/plugins/ios/iosrunfactories.cpp
@@ -68,16 +68,10 @@ QList<BuildTargetInfo>
ProjectType::AuxTemplate});
}
-QList<RunConfiguration *> IosRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n)
+bool IosRunConfigurationFactory::hasRunConfigForProFile(RunConfiguration *rc, const Utils::FileName &n) const
{
- QList<RunConfiguration *> result;
- foreach (RunConfiguration *rc, t->runConfigurations()) {
- if (IosRunConfiguration *qt4c = qobject_cast<IosRunConfiguration *>(rc)) {
- if (qt4c->profilePath() == n->filePath())
- result << rc;
- }
- }
- return result;
+ auto iosRc = qobject_cast<IosRunConfiguration *>(rc);
+ return iosRc && iosRc->profilePath() == n;
}
} // namespace Internal
diff --git a/src/plugins/ios/iosrunfactories.h b/src/plugins/ios/iosrunfactories.h
index 6b9e606dab..ed99b5f69f 100644
--- a/src/plugins/ios/iosrunfactories.h
+++ b/src/plugins/ios/iosrunfactories.h
@@ -48,9 +48,7 @@ public:
bool canCreateHelper(ProjectExplorer::Target *parent, const QString &suffix) const override;
- QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
- const ProjectExplorer::Node *n
- ) override;
+ bool hasRunConfigForProFile(ProjectExplorer::RunConfiguration *rc, const Utils::FileName &n) const override;
};
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
index 0de4bca896..36f39623eb 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
@@ -450,14 +450,10 @@ QList<BuildTargetInfo>
return project->buildTargets(mode);
}
-QList<RunConfiguration *> DesktopQmakeRunConfigurationFactory::runConfigurationsForNode(Target *t, const Node *n)
-{
- QList<RunConfiguration *> result;
- foreach (RunConfiguration *rc, t->runConfigurations())
- if (DesktopQmakeRunConfiguration *qmakeRc = qobject_cast<DesktopQmakeRunConfiguration *>(rc))
- if (qmakeRc->proFilePath() == n->filePath())
- result << rc;
- return result;
+bool DesktopQmakeRunConfigurationFactory::hasRunConfigForProFile(RunConfiguration *rc, const Utils::FileName &n) const
+{
+ auto qmakeRc = qobject_cast<DesktopQmakeRunConfiguration *>(rc);
+ return qmakeRc && qmakeRc->proFilePath() == n;
}
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
index 39531a9e41..228e356477 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
@@ -143,8 +143,7 @@ public:
QList<ProjectExplorer::BuildTargetInfo>
availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
- QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
- const ProjectExplorer::Node *n) override;
+ bool hasRunConfigForProFile(ProjectExplorer::RunConfiguration *rc, const Utils::FileName &n) const override;
};
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp
index 5efacbf4c4..ce504e9eb8 100644
--- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp
@@ -38,6 +38,25 @@ using namespace Utils;
namespace QmakeProjectManager {
+static QList<RunConfiguration *> qmakeRunConfigurationsForNode(Target *t, const Node *node)
+{
+ QList<RunConfiguration *> result;
+ QTC_ASSERT(t, return result);
+
+ const FileName file = node->filePath();
+ for (auto factory : IRunConfigurationFactory::allRunConfigurationFactories()) {
+ if (auto qmakeFactory = qobject_cast<QmakeRunConfigurationFactory *>(factory)) {
+ if (qmakeFactory->canHandle(t)) {
+ result.append(Utils::filtered(t->runConfigurations(), [qmakeFactory, file](RunConfiguration *rc) {
+ return qmakeFactory->hasRunConfigForProFile(rc, file);
+ }));
+ }
+ }
+ }
+
+ return result;
+}
+
/*!
\class QmakePriFileNode
Implements abstract ProjectNode class
@@ -68,10 +87,7 @@ bool QmakePriFileNode::deploysFolder(const QString &folder) const
QList<RunConfiguration *> QmakePriFileNode::runConfigurations() const
{
- QmakeRunConfigurationFactory *factory = QmakeRunConfigurationFactory::find(m_project->activeTarget());
- if (factory)
- return factory->runConfigurationsForNode(m_project->activeTarget(), this);
- return QList<RunConfiguration *>();
+ return qmakeRunConfigurationsForNode(m_project->activeTarget(), this);
}
QmakeProFileNode *QmakePriFileNode::proFileNode() const
@@ -140,9 +156,7 @@ bool QmakePriFileNode::supportsAction(ProjectAction action, const Node *node) co
}
if (action == HasSubProjectRunConfigurations) {
- Target *target = m_project->activeTarget();
- QmakeRunConfigurationFactory *factory = QmakeRunConfigurationFactory::find(target);
- return factory && !factory->runConfigurationsForNode(target, node).isEmpty();
+ return !qmakeRunConfigurationsForNode(m_project->activeTarget(), node).isEmpty();
}
return false;
diff --git a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
index 12b3e9a13b..212fbaa788 100644
--- a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.cpp
@@ -33,17 +33,4 @@ QmakeRunConfigurationFactory::QmakeRunConfigurationFactory(QObject *parent) :
ProjectExplorer::IRunConfigurationFactory(parent)
{ }
-QmakeRunConfigurationFactory *QmakeRunConfigurationFactory::find(ProjectExplorer::Target *t)
-{
- if (t) {
- for (auto factory : IRunConfigurationFactory::allRunConfigurationFactories()) {
- if (auto qmakeFactory = qobject_cast<QmakeRunConfigurationFactory *>(factory)) {
- if (qmakeFactory->canHandle(t))
- return qmakeFactory;
- }
- }
- }
- return nullptr;
-}
-
} // namespace QmakeProjectManager
diff --git a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.h b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.h
index 4835707801..872d385747 100644
--- a/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.h
+++ b/src/plugins/qmakeprojectmanager/qmakerunconfigurationfactory.h
@@ -29,7 +29,7 @@
#include <projectexplorer/runconfiguration.h>
-namespace ProjectExplorer { class Node; }
+namespace Utils { class FileName; }
namespace QmakeProjectManager {
@@ -40,10 +40,7 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeRunConfigurationFactory : public ProjectEx
public:
explicit QmakeRunConfigurationFactory(QObject *parent = 0);
- virtual QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
- const ProjectExplorer::Node *n) = 0;
-
- static QmakeRunConfigurationFactory *find(ProjectExplorer::Target *t);
+ virtual bool hasRunConfigForProFile(ProjectExplorer::RunConfiguration *rc, const Utils::FileName &n) const = 0;
};
} // namespace QmakeProjectManager