diff options
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.cpp | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.h | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/runsettingspropertiespage.cpp | 32 | ||||
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 2 |
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; |