aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/deployconfiguration.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-03-12 11:43:59 +0100
committerhjk <hjk@qt.io>2018-03-15 13:09:27 +0000
commit805b28b8b76f3919e3b70218a4373fbaaede577c (patch)
tree11dc6238ce0ec9e982eb2430bed2652af32dce7a /src/plugins/projectexplorer/deployconfiguration.cpp
parent02dacc27eb35f9b55d026c8aeebff1e7c7e32508 (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.cpp58
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;