ProjectExplorer: Simplify availableCreationIds(Target *parent) use

Similarly to before, it's either an empty list, or a single id.

So use a function with bool return saying whether an id is returned
and a plain accessor the the id.

Change-Id: Ied2900f23bdb4c264d9fb1944c60bed734d1d8bb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-01-15 15:48:01 +01:00
parent 32ced72511
commit a2d5ebccd2
4 changed files with 27 additions and 25 deletions

View File

@@ -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);
});
}

View File

@@ -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);

View File

@@ -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);
});
}
}

View File

@@ -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;