diff options
author | hjk <hjk@qt.io> | 2018-03-12 11:43:59 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-03-15 13:09:27 +0000 |
commit | 805b28b8b76f3919e3b70218a4373fbaaede577c (patch) | |
tree | 11dc6238ce0ec9e982eb2430bed2652af32dce7a /src/plugins/projectexplorer/deployconfiguration.cpp | |
parent | 02dacc27eb35f9b55d026c8aeebff1e7c7e32508 (diff) |
ProjectExplorer: Simplify DeployConfigurationFactory interface
Following the RunConfigurationFactory lead this replaces
f = Foo::find(); f->do() by static Foo::do() stanzas.
Also protect DeployConfigurationFactory::canCreate()
Change-Id: I80fa491f836c3b9186f6ce6dccac4d52d4b80fc8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/deployconfiguration.cpp')
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.cpp | 58 |
1 files changed, 13 insertions, 45 deletions
diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp index 6be4de9244..96a5bbaf3e 100644 --- a/src/plugins/projectexplorer/deployconfiguration.cpp +++ b/src/plugins/projectexplorer/deployconfiguration.cpp @@ -217,33 +217,25 @@ DeployConfiguration *DeployConfigurationFactory::create(Target *parent, Core::Id return dc; } -bool DeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const +DeployConfiguration *DeployConfigurationFactory::clone(Target *parent, + const DeployConfiguration *source) { - if (!canHandle(parent)) - return false; - const Core::Id id = product->id(); - if (!id.name().startsWith(m_deployConfigBaseId.name())) - return false; - return true; -} - -DeployConfiguration *DeployConfigurationFactory::clone(Target *parent, DeployConfiguration *product) -{ - QTC_ASSERT(m_creator, return nullptr); - if (!canClone(parent, product)) - return nullptr; - DeployConfiguration *dc = m_creator(parent); - QVariantMap data = product->toMap(); - dc->fromMap(data); - return dc; + return restore(parent, source->toMap()); } DeployConfiguration *DeployConfigurationFactory::restore(Target *parent, const QVariantMap &map) { - if (!canRestore(parent, map)) + const Core::Id id = idFromMap(map); + DeployConfigurationFactory *factory = Utils::findOrDefault(g_deployConfigurationFactories, + [parent, id](DeployConfigurationFactory *f) { + if (!f->canHandle(parent)) + return false; + return id.name().startsWith(f->m_deployConfigBaseId.name()); + }); + if (!factory) return nullptr; - QTC_ASSERT(m_creator, return nullptr); - DeployConfiguration *dc = m_creator(parent); + QTC_ASSERT(factory->m_creator, return nullptr); + DeployConfiguration *dc = factory->m_creator(parent); QTC_ASSERT(dc, return nullptr); if (!dc->fromMap(map)) { delete dc; @@ -252,22 +244,6 @@ DeployConfiguration *DeployConfigurationFactory::restore(Target *parent, const Q return dc; } -bool DeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const -{ - if (!canHandle(parent)) - return false; - const Core::Id id = idFromMap(map); - return id.name().startsWith(m_deployConfigBaseId.name()); -} - -DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, const QVariantMap &map) -{ - return Utils::findOrDefault(g_deployConfigurationFactories, - [&parent, &map](DeployConfigurationFactory *factory) { - return factory->canRestore(parent, map); - }); -} - QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *parent) { return Utils::filtered(g_deployConfigurationFactories, @@ -276,14 +252,6 @@ QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *par }); } -DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, DeployConfiguration *dc) -{ - return Utils::findOrDefault(g_deployConfigurationFactories, - [&parent, &dc](DeployConfigurationFactory *factory) { - return factory->canClone(parent, dc); - }); -} - void DeployConfigurationFactory::setSupportedTargetDeviceTypes(const QList<Core::Id> &ids) { m_supportedTargetDeviceTypes = ids; |