aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.cpp13
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.h5
-rw-r--r--src/plugins/projectexplorer/runsettingspropertiespage.cpp32
-rw-r--r--src/plugins/projectexplorer/target.cpp2
4 files changed, 27 insertions, 25 deletions
diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp
index f0c4e94b66..ff4853a820 100644
--- a/src/plugins/projectexplorer/deployconfiguration.cpp
+++ b/src/plugins/projectexplorer/deployconfiguration.cpp
@@ -151,11 +151,14 @@ DeployConfigurationFactory::~DeployConfigurationFactory()
g_deployConfigurationFactories.removeOne(this);
}
-QList<Core::Id> DeployConfigurationFactory::availableCreationIds(Target *parent) const
+bool DeployConfigurationFactory::canOffer(Target *parent) const
{
- if (canHandle(parent) && hasAvailableBuildTargets(parent))
- return {m_deployConfigBaseId};
- return {};
+ return canHandle(parent) && hasAvailableBuildTargets(parent);
+}
+
+Core::Id DeployConfigurationFactory::creationId() const
+{
+ return m_deployConfigBaseId;
}
bool DeployConfigurationFactory::hasAvailableBuildTargets(Target *) const
@@ -239,7 +242,7 @@ QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *par
{
return Utils::filtered(g_deployConfigurationFactories,
[&parent](DeployConfigurationFactory *factory) {
- return !factory->availableCreationIds(parent).isEmpty();
+ return factory->canOffer(parent);
});
}
diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h
index 3874d7c068..bfad9d8f12 100644
--- a/src/plugins/projectexplorer/deployconfiguration.h
+++ b/src/plugins/projectexplorer/deployconfiguration.h
@@ -80,11 +80,12 @@ public:
DeployConfigurationFactory operator=(const DeployConfigurationFactory &) = delete;
virtual ~DeployConfigurationFactory();
- // used to show the list of possible additons to a target, returns a list of types
- QList<Core::Id> availableCreationIds(Target *parent) const;
+ // return possible addition to a target, invalid if there is none
+ Core::Id creationId() const;
// the name to display to the user
QString defaultDisplayName() const;
+ bool canOffer(Target *parent) const;
bool canCreate(Target *parent, Core::Id id) const;
virtual DeployConfiguration *create(Target *parent, Core::Id id);
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index 29c8ed3c7d..9065d1edb5 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -367,23 +367,21 @@ void RunSettingsWidget::aboutToShowDeployMenu()
return;
foreach (DeployConfigurationFactory *factory, factories) {
- QList<Core::Id> ids = factory->availableCreationIds(m_target);
- foreach (Core::Id id, ids) {
- QAction *action = m_addDeployMenu->addAction(factory->defaultDisplayName());
- DeployFactoryAndId data = {factory, id};
- action->setData(QVariant::fromValue(data));
- connect(action, &QAction::triggered, [factory, id, this]() {
- if (!factory->canCreate(m_target, id))
- return;
- DeployConfiguration *newDc = factory->create(m_target, id);
- if (!newDc)
- return;
- QTC_CHECK(!newDc || newDc->id() == id);
- m_target->addDeployConfiguration(newDc);
- SessionManager::setActiveDeployConfiguration(m_target, newDc, SetActive::Cascade);
- m_removeDeployToolButton->setEnabled(m_target->deployConfigurations().size() > 1);
- });
- }
+ QAction *action = m_addDeployMenu->addAction(factory->defaultDisplayName());
+ const Core::Id id = factory->creationId();
+ DeployFactoryAndId data = {factory, id};
+ action->setData(QVariant::fromValue(data));
+ connect(action, &QAction::triggered, [factory, id, this]() {
+ if (!factory->canCreate(m_target, id))
+ return;
+ DeployConfiguration *newDc = factory->create(m_target, id);
+ if (!newDc)
+ return;
+ QTC_CHECK(!newDc || newDc->id() == id);
+ m_target->addDeployConfiguration(newDc);
+ SessionManager::setActiveDeployConfiguration(m_target, newDc, SetActive::Cascade);
+ m_removeDeployToolButton->setEnabled(m_target->deployConfigurations().size() > 1);
+ });
}
}
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 8b87bf525c..05cc11de34 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -513,7 +513,7 @@ void Target::updateDefaultDeployConfigurations()
QList<Core::Id> dcIds;
foreach (DeployConfigurationFactory *dcFactory, dcFactories)
- dcIds.append(dcFactory->availableCreationIds(this));
+ dcIds.append(dcFactory->creationId());
QList<DeployConfiguration *> dcList = deployConfigurations();
QList<Core::Id> toCreate = dcIds;