RunConfigurationFactory: Simplify RunConfigFactory::create use

A for (f : X.allFs()) if (f.canHandle(t)) { f.doIt() ... } }
pattern can be replaced by some  static X.doIt(t), and
item.factory->create(target, item) by some item.create(target).

Change-Id: I65df8b71e03272d60f41a16795ea43a0fdb262ef
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-03-08 12:39:03 +01:00
parent f028a74f32
commit afe13e6812
4 changed files with 49 additions and 53 deletions

View File

@@ -539,30 +539,28 @@ bool RunConfigurationFactory::canCreateHelper(Target *, const QString &) const
return true;
}
RunConfiguration *RunConfigurationFactory::create(Target *parent,
const RunConfigurationCreationInfo &info) const
RunConfiguration *RunConfigurationCreationInfo::create(Target *target) const
{
if (!canHandle(parent))
return nullptr;
if (info.id != m_runConfigBaseId)
return nullptr;
if (!canCreateHelper(parent, info.extra))
QTC_ASSERT(factory->canHandle(target), return nullptr);
QTC_ASSERT(id == factory->runConfigurationBaseId(), return nullptr);
if (!factory->canCreateHelper(target, extra))
return nullptr;
QTC_ASSERT(m_creator, return nullptr);
RunConfiguration *rc = m_creator(parent);
QTC_ASSERT(factory->m_creator, return nullptr);
RunConfiguration *rc = factory->m_creator(target);
if (!rc)
return nullptr;
// "FIX" ids by mangling in the extra data (build system target etc)
// for compatibility for the current format used in settings.
if (!info.extra.isEmpty()) {
if (!extra.isEmpty()) {
QVariantMap data = rc->toMap();
data[ProjectConfiguration::settingsIdKey()] = info.id.withSuffix(info.extra).toString();
data[ProjectConfiguration::settingsIdKey()] = id.withSuffix(extra).toString();
rc->fromMap(data);
}
rc->doAdditionalSetup(info);
rc->doAdditionalSetup(*this);
return rc;
}
@@ -595,6 +593,16 @@ const QList<RunConfigurationFactory *> RunConfigurationFactory::allFactories()
return g_runConfigurationFactories;
}
const QList<RunConfigurationCreationInfo> RunConfigurationFactory::creatorsForTarget(Target *parent)
{
QList<RunConfigurationCreationInfo> items;
for (RunConfigurationFactory *factory : g_runConfigurationFactories) {
if (factory->canHandle(parent))
items.append(factory->availableCreators(parent));
}
return items;
}
FixedRunConfigurationFactory::FixedRunConfigurationFactory(const QString &displayName,
bool addDeviceName) :
m_fixedBuildTarget(displayName),