summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-05-18 12:37:29 +0200
committerhjk <hjk@theqtcompany.com>2016-06-10 10:34:51 +0000
commit519cc8ded616758cb85857e8845fdc5847339e3a (patch)
tree04069d8c648a7169008e1a35c057349b358e2f2f /src/plugins
parent4ce0494284dfc3bf832e54f9315b9bf6d02a4d28 (diff)
downloadqt-creator-519cc8ded616758cb85857e8845fdc5847339e3a.tar.gz
ProjectExplorer: De-duplicate code in IBuildStepFactory derived classes
This removes 900 lines of duplicated code, some duplicated checks at runtime and some (minor) quadratic behavior when gathering display names. canClone(), canRestore() and canCreate() and restore() use the same pattern. Handle that on the core side once. Leave retore() virtual to let the ios code unmodified (which is likely not needed, later...). Introduce 'Unclonable' and 'Uncreatable' flags to keep Android package installation and WinRT deployment (non-)functionality unchanged. Change-Id: I0325479aff818a4038b2f241ca733b8d8cd66f2f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/android/androiddeployqtstep.cpp49
-rw-r--r--src/plugins/android/androiddeployqtstep.h11
-rw-r--r--src/plugins/autotoolsprojectmanager/autogenstep.cpp54
-rw-r--r--src/plugins/autotoolsprojectmanager/autogenstep.h11
-rw-r--r--src/plugins/autotoolsprojectmanager/autoreconfstep.cpp54
-rw-r--r--src/plugins/autotoolsprojectmanager/autoreconfstep.h10
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.cpp53
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.h10
-rw-r--r--src/plugins/autotoolsprojectmanager/makestep.cpp47
-rw-r--r--src/plugins/autotoolsprojectmanager/makestep.h8
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildstep.cpp49
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildstep.h10
-rw-r--r--src/plugins/genericprojectmanager/genericmakestep.cpp52
-rw-r--r--src/plugins/genericprojectmanager/genericmakestep.h12
-rw-r--r--src/plugins/ios/iosbuildstep.cpp64
-rw-r--r--src/plugins/ios/iosbuildstep.h12
-rw-r--r--src/plugins/ios/iosdeploystepfactory.cpp49
-rw-r--r--src/plugins/ios/iosdeploystepfactory.h13
-rw-r--r--src/plugins/ios/iosdsymbuildstep.cpp50
-rw-r--r--src/plugins/ios/iosdsymbuildstep.h9
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstepfactory.cpp58
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstepfactory.h12
-rw-r--r--src/plugins/nim/project/nimcompilercleanstepfactory.cpp53
-rw-r--r--src/plugins/nim/project/nimcompilercleanstepfactory.h12
-rw-r--r--src/plugins/projectexplorer/buildstep.cpp13
-rw-r--r--src/plugins/projectexplorer/buildstep.h31
-rw-r--r--src/plugins/projectexplorer/buildsteplist.cpp61
-rw-r--r--src/plugins/projectexplorer/buildstepspage.cpp11
-rw-r--r--src/plugins/projectexplorer/processstep.cpp44
-rw-r--r--src/plugins/projectexplorer/processstep.h14
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp49
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.h11
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.cpp48
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.h11
-rw-r--r--src/plugins/qbsprojectmanager/qbsinstallstep.cpp51
-rw-r--r--src/plugins/qbsprojectmanager/qbsinstallstep.h11
-rw-r--r--src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp63
-rw-r--r--src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.h13
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp57
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h15
-rw-r--r--src/plugins/qmakeprojectmanager/makestep.cpp40
-rw-r--r--src/plugins/qmakeprojectmanager/makestep.h10
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.cpp52
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.h9
-rw-r--r--src/plugins/qnx/qnxdeploystepfactory.cpp58
-rw-r--r--src/plugins/qnx/qnxdeploystepfactory.h12
-rw-r--r--src/plugins/remotelinux/genericremotelinuxdeploystepfactory.cpp67
-rw-r--r--src/plugins/remotelinux/genericremotelinuxdeploystepfactory.h12
-rw-r--r--src/plugins/winrt/winrtdeployconfiguration.cpp57
-rw-r--r--src/plugins/winrt/winrtdeployconfiguration.h9
50 files changed, 305 insertions, 1286 deletions
diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp
index 062c13e7a4..a06f261a54 100644
--- a/src/plugins/android/androiddeployqtstep.cpp
+++ b/src/plugins/android/androiddeployqtstep.cpp
@@ -56,6 +56,7 @@
#include <QMessageBox>
+using namespace ProjectExplorer;
using namespace Android;
using namespace Android::Internal;
@@ -73,60 +74,24 @@ AndroidDeployQtStepFactory::AndroidDeployQtStepFactory(QObject *parent)
{
}
-QList<Core::Id> AndroidDeployQtStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+QList<BuildStepInfo> AndroidDeployQtStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return QList<Core::Id>();
- if (!AndroidManager::supportsAndroid(parent->target()))
- return QList<Core::Id>();
- if (parent->contains(AndroidDeployQtStep::Id))
- return QList<Core::Id>();
- return QList<Core::Id>() << AndroidDeployQtStep::Id;
-}
-
-QString AndroidDeployQtStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == AndroidDeployQtStep::Id)
- return tr("Deploy to Android device or emulator");
- return QString();
-}
+ if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY
+ || !AndroidManager::supportsAndroid(parent->target())
+ || parent->contains(AndroidDeployQtStep::Id))
+ return {};
-bool AndroidDeployQtStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ return {{ AndroidDeployQtStep::Id, tr("Deploy to Android device or emulator") }};
}
ProjectExplorer::BuildStep *AndroidDeployQtStepFactory::create(ProjectExplorer::BuildStepList *parent, Core::Id id)
{
- Q_ASSERT(canCreate(parent, id));
Q_UNUSED(id);
return new AndroidDeployQtStep(parent);
}
-bool AndroidDeployQtStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *AndroidDeployQtStepFactory::restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map)
-{
- Q_ASSERT(canRestore(parent, map));
- AndroidDeployQtStep * const step = new AndroidDeployQtStep(parent);
- if (!step->fromMap(map)) {
- delete step;
- return 0;
- }
- return step;
-}
-
-bool AndroidDeployQtStepFactory::canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *AndroidDeployQtStepFactory::clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product)
{
- Q_ASSERT(canClone(parent, product));
return new AndroidDeployQtStep(parent, static_cast<AndroidDeployQtStep *>(product));
}
diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h
index cfb8f69bd5..577b8fa379 100644
--- a/src/plugins/android/androiddeployqtstep.h
+++ b/src/plugins/android/androiddeployqtstep.h
@@ -47,17 +47,10 @@ class AndroidDeployQtStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit AndroidDeployQtStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.cpp b/src/plugins/autotoolsprojectmanager/autogenstep.cpp
index 2b2176dfe4..99bce38854 100644
--- a/src/plugins/autotoolsprojectmanager/autogenstep.cpp
+++ b/src/plugins/autotoolsprojectmanager/autogenstep.cpp
@@ -56,67 +56,27 @@ const char AUTOGEN_STEP_ID[] = "AutotoolsProjectManager.AutogenStep";
AutogenStepFactory::AutogenStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ }
-QList<Core::Id> AutogenStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> AutogenStepFactory::availableSteps(BuildStepList *parent) const
{
- if (!canHandle(parent))
- return QList<Core::Id>();
- return QList<Core::Id>() << Core::Id(AUTOGEN_STEP_ID);
-}
+ if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
+ || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
+ return {};
-QString AutogenStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == AUTOGEN_STEP_ID)
- return tr("Autogen", "Display name for AutotoolsProjectManager::AutogenStep id.");
- return QString();
-}
-
-bool AutogenStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return canHandle(parent) && Core::Id(AUTOGEN_STEP_ID) == id;
+ QString display = tr("Autogen", "Display name for AutotoolsProjectManager::AutogenStep id.");
+ return {{ AUTOGEN_STEP_ID, display }};
}
BuildStep *AutogenStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id)
return new AutogenStep(parent);
}
-bool AutogenStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *AutogenStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new AutogenStep(parent, static_cast<AutogenStep *>(source));
}
-bool AutogenStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *AutogenStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- AutogenStep *bs = new AutogenStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-bool AutogenStepFactory::canHandle(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::AUTOTOOLS_PROJECT_ID)
- return parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD;
- return false;
-}
-
////////////////////////
// AutogenStep class
////////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.h b/src/plugins/autotoolsprojectmanager/autogenstep.h
index 64b25ad863..010a0cbbec 100644
--- a/src/plugins/autotoolsprojectmanager/autogenstep.h
+++ b/src/plugins/autotoolsprojectmanager/autogenstep.h
@@ -55,16 +55,11 @@ class AutogenStepFactory : public ProjectExplorer::IBuildStepFactory
public:
AutogenStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canHandle(ProjectExplorer::BuildStepList *parent) const;
};
///////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
index 551cb9f5f2..88aea423f0 100644
--- a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
+++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
@@ -55,67 +55,27 @@ const char AUTORECONF_ADDITIONAL_ARGUMENTS_KEY[] = "AutotoolsProjectManager.Auto
AutoreconfStepFactory::AutoreconfStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ }
-QList<Core::Id> AutoreconfStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> AutoreconfStepFactory::availableSteps(BuildStepList *parent) const
{
- if (!canHandle(parent))
- return QList<Core::Id>();
- return QList<Core::Id>() << Core::Id(AUTORECONF_STEP_ID);
-}
+ if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
+ || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
+ return {};
-QString AutoreconfStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == AUTORECONF_STEP_ID)
- return tr("Autoreconf", "Display name for AutotoolsProjectManager::AutoreconfStep id.");
- return QString();
-}
-
-bool AutoreconfStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return canHandle(parent) && Core::Id(AUTORECONF_STEP_ID) == id;
+ QString display = tr("Autoreconf", "Display name for AutotoolsProjectManager::AutoreconfStep id.");
+ return {{ AUTORECONF_STEP_ID, display }};
}
BuildStep *AutoreconfStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
return new AutoreconfStep(parent);
}
-bool AutoreconfStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *AutoreconfStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new AutoreconfStep(parent, static_cast<AutoreconfStep *>(source));
}
-bool AutoreconfStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *AutoreconfStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- AutoreconfStep *bs = new AutoreconfStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-bool AutoreconfStepFactory::canHandle(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::AUTOTOOLS_PROJECT_ID)
- return parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD;
- return false;
-}
-
/////////////////////////
// AutoreconfStep class
/////////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.h b/src/plugins/autotoolsprojectmanager/autoreconfstep.h
index ca58644e23..ab6fb705ed 100644
--- a/src/plugins/autotoolsprojectmanager/autoreconfstep.h
+++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.h
@@ -54,17 +54,11 @@ class AutoreconfStepFactory : public ProjectExplorer::IBuildStepFactory
public:
AutoreconfStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canHandle(ProjectExplorer::BuildStepList *parent) const;
};
/////////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.cpp b/src/plugins/autotoolsprojectmanager/configurestep.cpp
index 530fba2850..f226ecdaf6 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.cpp
+++ b/src/plugins/autotoolsprojectmanager/configurestep.cpp
@@ -70,66 +70,27 @@ static QString projectDirRelativeToBuildDir(BuildConfiguration *bc) {
ConfigureStepFactory::ConfigureStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ }
-QList<Core::Id> ConfigureStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> ConfigureStepFactory::availableSteps(BuildStepList *parent) const
{
- if (!canHandle(parent))
- return QList<Core::Id>();
- return QList<Core::Id>() << Core::Id(CONFIGURE_STEP_ID);
-}
+ if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
+ || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
+ return {};
-QString ConfigureStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == CONFIGURE_STEP_ID)
- return tr("Configure", "Display name for AutotoolsProjectManager::ConfigureStep id.");
- return QString();
-}
-
-bool ConfigureStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return canHandle(parent) && id == CONFIGURE_STEP_ID;
+ QString display = tr("Configure", "Display name for AutotoolsProjectManager::ConfigureStep id.");
+ return {{ CONFIGURE_STEP_ID, display }};
}
BuildStep *ConfigureStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id)
return new ConfigureStep(parent);
}
-bool ConfigureStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *ConfigureStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new ConfigureStep(parent, static_cast<ConfigureStep *>(source));
}
-bool ConfigureStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *ConfigureStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- ConfigureStep *bs = new ConfigureStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-bool ConfigureStepFactory::canHandle(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::AUTOTOOLS_PROJECT_ID)
- return parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD;
- return false;
-}
////////////////////////
// ConfigureStep class
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.h b/src/plugins/autotoolsprojectmanager/configurestep.h
index 77d34a8fd0..a809e0a63e 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.h
+++ b/src/plugins/autotoolsprojectmanager/configurestep.h
@@ -54,17 +54,11 @@ class ConfigureStepFactory : public ProjectExplorer::IBuildStepFactory
public:
ConfigureStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canHandle(ProjectExplorer::BuildStepList *parent) const;
};
//////////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/makestep.cpp b/src/plugins/autotoolsprojectmanager/makestep.cpp
index ba02a2d440..bc8aacdcb0 100644
--- a/src/plugins/autotoolsprojectmanager/makestep.cpp
+++ b/src/plugins/autotoolsprojectmanager/makestep.cpp
@@ -62,62 +62,25 @@ const char MAKE_STEP_ADDITIONAL_ARGUMENTS_KEY[] = "AutotoolsProjectManager.MakeS
MakeStepFactory::MakeStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ setObjectName(QLatin1String("Autotools::MakeStepFactory")); }
-QList<Core::Id> MakeStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> MakeStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->target()->project()->id() == AUTOTOOLS_PROJECT_ID)
- return QList<Core::Id>() << Core::Id(MAKE_STEP_ID);
- return QList<Core::Id>();
-}
-
-QString MakeStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == MAKE_STEP_ID)
- return tr("Make", "Display name for AutotoolsProjectManager::MakeStep id.");
- return QString();
-}
+ if (parent->target()->project()->id() != AUTOTOOLS_PROJECT_ID)
+ return {};
-bool MakeStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- if (parent->target()->project()->id() == AUTOTOOLS_PROJECT_ID)
- return id == MAKE_STEP_ID;
- return false;
+ return {{ MAKE_STEP_ID, tr("Make", "Display name for AutotoolsProjectManager::MakeStep id.") }};
}
BuildStep *MakeStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id)
return new MakeStep(parent);
}
-bool MakeStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *MakeStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new MakeStep(parent, static_cast<MakeStep *>(source));
}
-bool MakeStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *MakeStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- MakeStep *bs = new MakeStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
/////////////////////
// MakeStep class
/////////////////////
diff --git a/src/plugins/autotoolsprojectmanager/makestep.h b/src/plugins/autotoolsprojectmanager/makestep.h
index 8c46e7e251..fdbbdfd4ce 100644
--- a/src/plugins/autotoolsprojectmanager/makestep.h
+++ b/src/plugins/autotoolsprojectmanager/makestep.h
@@ -55,15 +55,11 @@ class MakeStepFactory : public ProjectExplorer::IBuildStepFactory
public:
MakeStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
};
/////////////////////
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
index b7294de495..31a18b946a 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
@@ -512,65 +512,28 @@ QString CMakeBuildStepConfigWidget::summaryText() const
CMakeBuildStepFactory::CMakeBuildStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ }
-bool CMakeBuildStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> CMakeBuildStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->target()->project()->id() == Constants::CMAKEPROJECT_ID)
- return id == MS_ID;
- return false;
+ if (parent->target()->project()->id() != Constants::CMAKEPROJECT_ID)
+ return {};
+
+ return {{ MS_ID, tr("Build", "Display name for CMakeProjectManager::CMakeBuildStep id.") }};
}
BuildStep *CMakeBuildStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
auto step = new CMakeBuildStep(parent);
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN)
step->setBuildTarget(CMakeBuildStep::cleanTarget());
return step;
}
-bool CMakeBuildStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *CMakeBuildStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new CMakeBuildStep(parent, static_cast<CMakeBuildStep *>(source));
}
-bool CMakeBuildStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *CMakeBuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- auto bs = new CMakeBuildStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-QList<Core::Id> CMakeBuildStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::CMAKEPROJECT_ID)
- return QList<Core::Id>() << Core::Id(MS_ID);
- return QList<Core::Id>();
-}
-
-QString CMakeBuildStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == MS_ID)
- return tr("Build", "Display name for CMakeProjectManager::CMakeBuildStep id.");
- return QString();
-}
-
void CMakeBuildStep::processStarted()
{
m_useNinja = false;
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h
index 8249e1f1f2..1fb677e24c 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h
@@ -142,15 +142,11 @@ class CMakeBuildStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit CMakeBuildStepFactory(QObject *parent = 0);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
};
} // namespace Internal
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index f696359bf0..0e581fa155 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -320,17 +320,19 @@ GenericMakeStepFactory::GenericMakeStepFactory(QObject *parent) :
{
}
-bool GenericMakeStepFactory::canCreate(BuildStepList *parent, const Id id) const
+QList<BuildStepInfo> GenericMakeStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->target()->project()->id() == Constants::GENERICPROJECT_ID)
- return id == GENERIC_MS_ID;
- return false;
+ if (parent->target()->project()->id() != Constants::GENERICPROJECT_ID)
+ return {};
+
+ return {{ GENERIC_MS_ID,
+ QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep",
+ GENERIC_MS_DISPLAY_NAME) }};
}
BuildStep *GenericMakeStepFactory::create(BuildStepList *parent, const Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id)
GenericMakeStep *step = new GenericMakeStep(parent);
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) {
step->setClean(true);
@@ -341,50 +343,12 @@ BuildStep *GenericMakeStepFactory::create(BuildStepList *parent, const Id id)
return step;
}
-bool GenericMakeStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *GenericMakeStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
GenericMakeStep *old(qobject_cast<GenericMakeStep *>(source));
Q_ASSERT(old);
return new GenericMakeStep(parent, old);
}
-bool GenericMakeStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *GenericMakeStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- GenericMakeStep *bs(new GenericMakeStep(parent));
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-QList<Id> GenericMakeStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::GENERICPROJECT_ID)
- return QList<Id>() << Id(GENERIC_MS_ID);
- return QList<Id>();
-}
-
-QString GenericMakeStepFactory::displayNameForId(const Id id) const
-{
- if (id == GENERIC_MS_ID)
- return QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep",
- GENERIC_MS_DISPLAY_NAME);
- return QString();
-}
-
} // namespace Internal
} // namespace GenericProjectManager
diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h
index d6f9920831..031366dfa2 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.h
+++ b/src/plugins/genericprojectmanager/genericmakestep.h
@@ -107,18 +107,12 @@ class GenericMakeStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit GenericMakeStepFactory(QObject *parent = 0);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map) override;
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
};
} // namespace Internal
diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp
index 1626bb785a..88ec09744f 100644
--- a/src/plugins/ios/iosbuildstep.cpp
+++ b/src/plugins/ios/iosbuildstep.cpp
@@ -328,22 +328,9 @@ IosBuildStepFactory::IosBuildStepFactory(QObject *parent) :
{
}
-bool IosBuildStepFactory::canCreate(BuildStepList *parent, const Id id) const
-{
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_CLEAN
- && parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
- Kit *kit = parent->target()->kit();
- Id deviceType = DeviceTypeKitInformation::deviceTypeId(kit);
- return ((deviceType == Constants::IOS_DEVICE_TYPE
- || deviceType == Constants::IOS_SIMULATOR_TYPE)
- && id == IOS_BUILD_STEP_ID);
-}
-
BuildStep *IosBuildStepFactory::create(BuildStepList *parent, const Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
IosBuildStep *step = new IosBuildStep(parent);
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) {
step->setClean(true);
@@ -354,52 +341,27 @@ BuildStep *IosBuildStepFactory::create(BuildStepList *parent, const Id id)
return step;
}
-bool IosBuildStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *IosBuildStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
- IosBuildStep *old(qobject_cast<IosBuildStep *>(source));
+ IosBuildStep *old = qobject_cast<IosBuildStep *>(source);
Q_ASSERT(old);
return new IosBuildStep(parent, old);
}
-bool IosBuildStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
+QList<BuildStepInfo> IosBuildStepFactory::availableSteps(BuildStepList *parent) const
{
- return canCreate(parent, idFromMap(map));
-}
+ Id deviceType = DeviceTypeKitInformation::deviceTypeId(parent->target()->kit());
+ if (deviceType != Constants::IOS_DEVICE_TYPE
+ && deviceType != Constants::IOS_SIMULATOR_TYPE)
+ return {};
-BuildStep *IosBuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- IosBuildStep *bs(new IosBuildStep(parent));
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-QList<Id> IosBuildStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- Kit *kit = parent->target()->kit();
- Id deviceType = DeviceTypeKitInformation::deviceTypeId(kit);
- if (deviceType == Constants::IOS_DEVICE_TYPE
- || deviceType == Constants::IOS_SIMULATOR_TYPE)
- return QList<Id>() << Id(IOS_BUILD_STEP_ID);
- return QList<Id>();
-}
+ if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_CLEAN
+ && parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
+ return {};
-QString IosBuildStepFactory::displayNameForId(const Id id) const
-{
- if (id == IOS_BUILD_STEP_ID)
- return QCoreApplication::translate("GenericProjectManager::Internal::IosBuildStep",
- IOS_BUILD_STEP_DISPLAY_NAME);
- return QString();
+ return {{ IOS_BUILD_STEP_ID,
+ QCoreApplication::translate("GenericProjectManager::Internal::IosBuildStep",
+ IOS_BUILD_STEP_DISPLAY_NAME) }};
}
} // namespace Internal
diff --git a/src/plugins/ios/iosbuildstep.h b/src/plugins/ios/iosbuildstep.h
index 9a08d43f9f..a08884f491 100644
--- a/src/plugins/ios/iosbuildstep.h
+++ b/src/plugins/ios/iosbuildstep.h
@@ -108,18 +108,12 @@ class IosBuildStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit IosBuildStepFactory(QObject *parent = 0);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map) override;
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
};
} // namespace Internal
diff --git a/src/plugins/ios/iosdeploystepfactory.cpp b/src/plugins/ios/iosdeploystepfactory.cpp
index 7f61b5fecd..b2bc8b4a83 100644
--- a/src/plugins/ios/iosdeploystepfactory.cpp
+++ b/src/plugins/ios/iosdeploystepfactory.cpp
@@ -46,60 +46,23 @@ IosDeployStepFactory::IosDeployStepFactory(QObject *parent)
{
}
-QList<Core::Id> IosDeployStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> IosDeployStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return QList<Core::Id>();
- if (!IosManager::supportsIos(parent->target()))
- return QList<Core::Id>();
- if (parent->contains(IosDeployStep::Id))
- return QList<Core::Id>();
- return QList<Core::Id>() << IosDeployStep::Id;
-}
-
-QString IosDeployStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == IosDeployStep::Id)
- return tr("Deploy to iOS device or emulator");
- return QString();
-}
-
-bool IosDeployStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_DEPLOY
+ && IosManager::supportsIos(parent->target())
+ && !parent->contains(IosDeployStep::Id))
+ return {{ IosDeployStep::Id, tr("Deploy to iOS device or emulator") }};
+ return {};
}
BuildStep *IosDeployStepFactory::create(BuildStepList *parent, Core::Id id)
{
- Q_ASSERT(canCreate(parent, id));
Q_UNUSED(id);
return new IosDeployStep(parent);
}
-bool IosDeployStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *IosDeployStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- Q_ASSERT(canRestore(parent, map));
- IosDeployStep * const step = new IosDeployStep(parent);
- if (!step->fromMap(map)) {
- delete step;
- return 0;
- }
- return step;
-}
-
-bool IosDeployStepFactory::canClone(BuildStepList *parent, BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
BuildStep *IosDeployStepFactory::clone(BuildStepList *parent, BuildStep *product)
{
- Q_ASSERT(canClone(parent, product));
return new IosDeployStep(parent, static_cast<IosDeployStep *>(product));
}
diff --git a/src/plugins/ios/iosdeploystepfactory.h b/src/plugins/ios/iosdeploystepfactory.h
index 93ac9b784f..08c550c2b1 100644
--- a/src/plugins/ios/iosdeploystepfactory.h
+++ b/src/plugins/ios/iosdeploystepfactory.h
@@ -33,21 +33,14 @@ namespace Internal {
class IosDeployStepFactory : public ProjectExplorer::IBuildStepFactory
{
Q_OBJECT
+
public:
explicit IosDeployStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent,
- Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp
index 4e594c31b8..a5a2af3cb0 100644
--- a/src/plugins/ios/iosdsymbuildstep.cpp
+++ b/src/plugins/ios/iosdsymbuildstep.cpp
@@ -331,8 +331,6 @@ IosPresetBuildStepFactory::IosPresetBuildStepFactory(QObject *parent) :
BuildStep *IosPresetBuildStepFactory::create(BuildStepList *parent, const Id id)
{
- if (!canCreate(parent, id))
- return 0;
IosPresetBuildStep *step = createPresetStep(parent, id);
if (step->completeSetup())
return step;
@@ -340,15 +338,8 @@ BuildStep *IosPresetBuildStepFactory::create(BuildStepList *parent, const Id id)
return 0;
}
-bool IosPresetBuildStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *IosPresetBuildStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
IosPresetBuildStep *old = qobject_cast<IosPresetBuildStep *>(source);
Q_ASSERT(old);
IosPresetBuildStep *res = createPresetStep(parent, old->id());
@@ -358,15 +349,8 @@ BuildStep *IosPresetBuildStepFactory::clone(BuildStepList *parent, BuildStep *so
return 0;
}
-bool IosPresetBuildStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
BuildStep *IosPresetBuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
{
- if (!canRestore(parent, map))
- return 0;
IosPresetBuildStep *bs = createPresetStep(parent, idFromMap(map));
if (bs->fromMap(map))
return bs;
@@ -374,38 +358,18 @@ BuildStep *IosPresetBuildStepFactory::restore(BuildStepList *parent, const QVari
return 0;
}
-QString IosDsymBuildStepFactory::displayNameForId(const Id id) const
-{
- if (id == Constants::IOS_DSYM_BUILD_STEP_ID)
- return QLatin1String("dsymutil");
- return QString();
-}
-
-QList<Id> IosDsymBuildStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> IosDsymBuildStepFactory::availableSteps(BuildStepList *parent) const
{
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_CLEAN
&& parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD
&& parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return QList<Id>();
- Kit *kit = parent->target()->kit();
- Id deviceType = DeviceTypeKitInformation::deviceTypeId(kit);
- if (deviceType == Constants::IOS_DEVICE_TYPE
- || deviceType == Constants::IOS_SIMULATOR_TYPE)
- return QList<Id>() << Id(Constants::IOS_DSYM_BUILD_STEP_ID);
- return QList<Id>();
-}
+ return {};
-bool IosDsymBuildStepFactory::canCreate(BuildStepList *parent, const Id id) const
-{
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_CLEAN
- && parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD
- && parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return false;
- Kit *kit = parent->target()->kit();
- Id deviceType = DeviceTypeKitInformation::deviceTypeId(kit);
- return ((deviceType == Constants::IOS_DEVICE_TYPE
- || deviceType == Constants::IOS_SIMULATOR_TYPE)
- && id == Constants::IOS_DSYM_BUILD_STEP_ID);
+ Id deviceType = DeviceTypeKitInformation::deviceTypeId(parent->target()->kit());
+ if (deviceType != Constants::IOS_DEVICE_TYPE && deviceType != Constants::IOS_SIMULATOR_TYPE)
+ return {};
+
+ return {{ Constants::IOS_DSYM_BUILD_STEP_ID, "dsymutil" }};
}
IosPresetBuildStep *IosDsymBuildStepFactory::createPresetStep(BuildStepList *parent, const Id id) const
diff --git a/src/plugins/ios/iosdsymbuildstep.h b/src/plugins/ios/iosdsymbuildstep.h
index 819347ce53..a0405df62a 100644
--- a/src/plugins/ios/iosdsymbuildstep.h
+++ b/src/plugins/ios/iosdsymbuildstep.h
@@ -101,11 +101,8 @@ public:
explicit IosPresetBuildStepFactory(QObject *parent = 0);
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
const QVariantMap &map) override;
@@ -128,9 +125,9 @@ class IosDsymBuildStepFactory : public IosPresetBuildStepFactory
{
Q_OBJECT
public:
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *bc) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
IosPresetBuildStep *createPresetStep(ProjectExplorer::BuildStepList *parent,
const Core::Id id) const override;
};
diff --git a/src/plugins/nim/project/nimcompilerbuildstepfactory.cpp b/src/plugins/nim/project/nimcompilerbuildstepfactory.cpp
index ec8861b5bd..211c0d186d 100644
--- a/src/plugins/nim/project/nimcompilerbuildstepfactory.cpp
+++ b/src/plugins/nim/project/nimcompilerbuildstepfactory.cpp
@@ -42,32 +42,21 @@ NimCompilerBuildStepFactory::NimCompilerBuildStepFactory(QObject *parent)
: IBuildStepFactory(parent)
{}
-bool NimCompilerBuildStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> NimCompilerBuildStepFactory::availableSteps(BuildStepList *parent) const
{
- QTC_ASSERT(parent, return false);
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
- if (!qobject_cast<NimBuildConfiguration *>(parent->parent()))
- return false;
- return id == Constants::C_NIMCOMPILERBUILDSTEP_ID;
-}
+ return {};
-BuildStep *NimCompilerBuildStepFactory::create(BuildStepList *parent, Core::Id id)
-{
- if (!canCreate(parent, id))
- return nullptr;
- return new NimCompilerBuildStep(parent);
+ auto bc = qobject_cast<NimBuildConfiguration *>(parent->parent());
+ if (!bc || bc->hasNimCompilerBuildStep())
+ return {};
+
+ return {{ Constants::C_NIMCOMPILERBUILDSTEP_ID, tr("Nim Compiler Build Step") }};
}
-bool NimCompilerBuildStepFactory::canClone(BuildStepList *parent, BuildStep *buildStep) const
+BuildStep *NimCompilerBuildStepFactory::create(BuildStepList *parent, Core::Id)
{
- QTC_ASSERT(parent, return false);
- QTC_ASSERT(buildStep, return false);
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
- if (!qobject_cast<NimBuildConfiguration *>(parent->parent()))
- return false;
- return buildStep->id() == Constants::C_NIMCOMPILERBUILDSTEP_ID;
+ return new NimCompilerBuildStep(parent);
}
BuildStep *NimCompilerBuildStepFactory::clone(BuildStepList *parent, BuildStep *buildStep)
@@ -78,34 +67,5 @@ BuildStep *NimCompilerBuildStepFactory::clone(BuildStepList *parent, BuildStep *
return result->fromMap(buildStep->toMap()) ? result.release() : nullptr;
}
-bool NimCompilerBuildStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *NimCompilerBuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return nullptr;
- std::unique_ptr<NimCompilerBuildStep> buildStep(new NimCompilerBuildStep(parent));
- if (buildStep->fromMap(map))
- return buildStep.release();
- return nullptr;
-}
-
-QList<Core::Id> NimCompilerBuildStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- if (auto bc = qobject_cast<NimBuildConfiguration *>(parent->parent()))
- if (!bc->hasNimCompilerBuildStep())
- return { Constants::C_NIMCOMPILERBUILDSTEP_ID };
- return {};
-}
-
-QString NimCompilerBuildStepFactory::displayNameForId(Core::Id id) const
-{
- return id == Constants::C_NIMCOMPILERBUILDSTEP_ID ? tr("Nim Compiler Build Step") : QString();
-}
-
}
diff --git a/src/plugins/nim/project/nimcompilerbuildstepfactory.h b/src/plugins/nim/project/nimcompilerbuildstepfactory.h
index 481fd0ddf0..8eb855d68c 100644
--- a/src/plugins/nim/project/nimcompilerbuildstepfactory.h
+++ b/src/plugins/nim/project/nimcompilerbuildstepfactory.h
@@ -36,17 +36,11 @@ class NimCompilerBuildStepFactory : public ProjectExplorer::IBuildStepFactory
public:
NimCompilerBuildStepFactory(QObject *parent = nullptr);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const;
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id);
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const;
+ ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id);
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product);
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map);
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const;
- QString displayNameForId(Core::Id id) const;
};
}
diff --git a/src/plugins/nim/project/nimcompilercleanstepfactory.cpp b/src/plugins/nim/project/nimcompilercleanstepfactory.cpp
index cc7863c30a..0178eca6f5 100644
--- a/src/plugins/nim/project/nimcompilercleanstepfactory.cpp
+++ b/src/plugins/nim/project/nimcompilercleanstepfactory.cpp
@@ -41,59 +41,28 @@ NimCompilerCleanStepFactory::NimCompilerCleanStepFactory(QObject *parent)
: IBuildStepFactory(parent)
{}
-bool NimCompilerCleanStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> NimCompilerCleanStepFactory::availableSteps(BuildStepList *parent) const
{
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_CLEAN)
- return false;
- if (!qobject_cast<NimBuildConfiguration *>(parent->parent()))
- return false;
- return id == Constants::C_NIMCOMPILERCLEANSTEP_ID;
-}
+ return {};
-BuildStep *NimCompilerCleanStepFactory::create(BuildStepList *parent, Core::Id id)
-{
- if (!canCreate(parent, id))
- return nullptr;
- return new NimCompilerCleanStep(parent);
-}
+ auto bc = qobject_cast<NimBuildConfiguration *>(parent->parent());
+ if (!bc || bc->hasNimCompilerCleanStep())
+ return {};
-bool NimCompilerCleanStepFactory::canClone(BuildStepList *, BuildStep *) const
-{
- return false;
-}
-
-BuildStep *NimCompilerCleanStepFactory::clone(BuildStepList *, BuildStep *)
-{
- return nullptr;
+ return {{ Constants::C_NIMCOMPILERCLEANSTEP_ID,
+ tr(Nim::Constants::C_NIMCOMPILERCLEANSTEP_DISPLAY),
+ BuildStepInfo::Unclonable }};
}
-bool NimCompilerCleanStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
+BuildStep *NimCompilerCleanStepFactory::create(BuildStepList *parent, Core::Id)
{
- return canCreate(parent, idFromMap(map));
+ return new NimCompilerCleanStep(parent);
}
-BuildStep *NimCompilerCleanStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
+BuildStep *NimCompilerCleanStepFactory::clone(BuildStepList *, BuildStep *)
{
- if (!canRestore(parent, map))
- return nullptr;
- std::unique_ptr<NimCompilerCleanStep> cleanStep(new NimCompilerCleanStep(parent));
- if (cleanStep->fromMap(map))
- return cleanStep.release();
return nullptr;
}
-QList<Core::Id> NimCompilerCleanStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN)
- if (auto bc = qobject_cast<NimBuildConfiguration *>(parent->parent()))
- if (!bc->hasNimCompilerCleanStep())
- return { Constants::C_NIMCOMPILERCLEANSTEP_ID };
- return {};
-}
-
-QString NimCompilerCleanStepFactory::displayNameForId(Core::Id id) const
-{
- return id == Constants::C_NIMCOMPILERCLEANSTEP_ID ? tr(Nim::Constants::C_NIMCOMPILERCLEANSTEP_DISPLAY) : QString();
-}
-
}
diff --git a/src/plugins/nim/project/nimcompilercleanstepfactory.h b/src/plugins/nim/project/nimcompilercleanstepfactory.h
index 2025f83aff..1a57e2b33a 100644
--- a/src/plugins/nim/project/nimcompilercleanstepfactory.h
+++ b/src/plugins/nim/project/nimcompilercleanstepfactory.h
@@ -36,17 +36,11 @@ class NimCompilerCleanStepFactory : public ProjectExplorer::IBuildStepFactory
public:
NimCompilerCleanStepFactory(QObject *parent = nullptr);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const;
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id);
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const;
+ ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id);
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product);
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map);
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const;
- QString displayNameForId(Core::Id id) const;
};
}
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp
index 6a255235c0..1f4f87cf03 100644
--- a/src/plugins/projectexplorer/buildstep.cpp
+++ b/src/plugins/projectexplorer/buildstep.cpp
@@ -30,6 +30,8 @@
#include "deployconfiguration.h"
#include "target.h"
+#include <utils/algorithm.h>
+
/*!
\class ProjectExplorer::BuildStep
@@ -209,3 +211,14 @@ bool BuildStep::enabled() const
IBuildStepFactory::IBuildStepFactory(QObject *parent) :
QObject(parent)
{ }
+
+BuildStep *IBuildStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
+{
+ const Core::Id id = idFromMap(map);
+ BuildStep *bs = create(parent, id);
+ if (bs->fromMap(map))
+ return bs;
+ delete bs;
+ return nullptr;
+}
+
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index dfa3c05f2f..dc243a3bcb 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -94,6 +94,25 @@ private:
bool m_enabled;
};
+class PROJECTEXPLORER_EXPORT BuildStepInfo
+{
+public:
+ enum Flags {
+ Uncreatable = 1 << 0,
+ Unclonable = 1 << 1,
+ UniqueStep = 1 << 8 // Can't be used twice in a BuildStepList
+ };
+
+ BuildStepInfo() {}
+ BuildStepInfo(Core::Id id, const QString &displayName, Flags flags = Flags())
+ : id(id), displayName(displayName), flags(flags)
+ {}
+
+ Core::Id id;
+ QString displayName;
+ Flags flags = Flags();
+};
+
class PROJECTEXPLORER_EXPORT IBuildStepFactory : public QObject
{
Q_OBJECT
@@ -101,17 +120,9 @@ class PROJECTEXPLORER_EXPORT IBuildStepFactory : public QObject
public:
explicit IBuildStepFactory(QObject *parent = nullptr);
- // used to show the list of possible additons to a target, returns a list of types
- virtual QList<Core::Id> availableCreationIds(BuildStepList *parent) const = 0;
- // used to translate the types to names to display to the user
- virtual QString displayNameForId(Core::Id id) const = 0;
-
- virtual bool canCreate(BuildStepList *parent, Core::Id id) const = 0;
+ virtual QList<BuildStepInfo> availableSteps(BuildStepList *parent) const = 0;
virtual BuildStep *create(BuildStepList *parent, Core::Id id) = 0;
- // used to recreate the runConfigurations when restoring settings
- virtual bool canRestore(BuildStepList *parent, const QVariantMap &map) const = 0;
- virtual BuildStep *restore(BuildStepList *parent, const QVariantMap &map) = 0;
- virtual bool canClone(BuildStepList *parent, BuildStep *product) const = 0;
+ virtual BuildStep *restore(BuildStepList *parent, const QVariantMap &map);
virtual BuildStep *clone(BuildStepList *parent, BuildStep *product) = 0;
};
diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp
index 77139204ce..1827d60206 100644
--- a/src/plugins/projectexplorer/buildsteplist.cpp
+++ b/src/plugins/projectexplorer/buildsteplist.cpp
@@ -39,22 +39,6 @@ using namespace ProjectExplorer;
namespace {
-IBuildStepFactory *findCloneFactory(BuildStepList *parent, BuildStep *source)
-{
- return ExtensionSystem::PluginManager::getObject<IBuildStepFactory>(
- [&parent, &source](IBuildStepFactory *factory) {
- return factory->canClone(parent, source);
- });
-}
-
-IBuildStepFactory *findRestoreFactory(BuildStepList *parent, const QVariantMap &map)
-{
- return ExtensionSystem::PluginManager::getObject<IBuildStepFactory>(
- [&parent, &map](IBuildStepFactory *factory) {
- return factory->canRestore(parent, map);
- });
-}
-
const char STEPS_COUNT_KEY[] = "ProjectExplorer.BuildStepList.StepsCount";
const char STEPS_PREFIX[] = "ProjectExplorer.BuildStepList.Step.";
@@ -125,13 +109,23 @@ bool BuildStepList::contains(Core::Id id) const
void BuildStepList::cloneSteps(BuildStepList *source)
{
Q_ASSERT(source);
+ const QList<IBuildStepFactory *> factories
+ = ExtensionSystem::PluginManager::getObjects<IBuildStepFactory>();
foreach (BuildStep *originalbs, source->steps()) {
- IBuildStepFactory *factory(findCloneFactory(this, originalbs));
- if (!factory)
- continue;
- BuildStep *clonebs(factory->clone(this, originalbs));
- if (clonebs)
- m_steps.append(clonebs);
+ foreach (IBuildStepFactory *factory, factories) {
+ const QList<BuildStepInfo> steps = factory->availableSteps(source);
+ const Core::Id sourceId = originalbs->id();
+ const auto canClone = [sourceId](const BuildStepInfo &info) {
+ return (info.flags & BuildStepInfo::Unclonable) == 0 && info.id == sourceId;
+ };
+ if (Utils::contains(steps, canClone)) {
+ if (BuildStep *clonebs = factory->clone(this, originalbs)) {
+ m_steps.append(clonebs);
+ break;
+ }
+ qWarning() << "Cloning of step " << originalbs->displayName() << " failed (continuing).";
+ }
+ }
}
}
@@ -141,6 +135,9 @@ bool BuildStepList::fromMap(const QVariantMap &map)
if (!ProjectConfiguration::fromMap(map))
return false;
+ const QList<IBuildStepFactory *> factories
+ = ExtensionSystem::PluginManager::getObjects<IBuildStepFactory>();
+
int maxSteps = map.value(QString::fromLatin1(STEPS_COUNT_KEY), 0).toInt();
for (int i = 0; i < maxSteps; ++i) {
QVariantMap bsData(map.value(QString::fromLatin1(STEPS_PREFIX) + QString::number(i)).toMap());
@@ -148,17 +145,17 @@ bool BuildStepList::fromMap(const QVariantMap &map)
qWarning() << "No step data found for" << i << "(continuing).";
continue;
}
- IBuildStepFactory *factory = findRestoreFactory(this, bsData);
- if (!factory) {
- qWarning() << "No factory for step" << i << "in list" << displayName() << "found (continuing).";
- continue;
- }
- BuildStep *bs(factory->restore(this, bsData));
- if (!bs) {
- qWarning() << "Restoration of step" << i << "failed (continuing).";
- continue;
+ foreach (IBuildStepFactory *factory, factories) {
+ const QList<BuildStepInfo> steps = factory->availableSteps(this);
+ const Core::Id id = ProjectExplorer::idFromMap(bsData);
+ if (Utils::contains(steps, Utils::equal(&BuildStepInfo::id, id))) {
+ if (BuildStep *bs = factory->restore(this, bsData)) {
+ appendStep(bs);
+ break;
+ }
+ qWarning() << "Restoration of step" << i << "failed (continuing).";
+ }
}
- insertStep(m_steps.count(), bs);
}
return true;
}
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index feb2ee5888..0fe9eca9c4 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -295,9 +295,14 @@ void BuildStepListWidget::updateAddBuildStepMenu()
//Build up a list of possible steps and save map the display names to the (internal) name and factories.
QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::getObjects<IBuildStepFactory>();
foreach (IBuildStepFactory *factory, factories) {
- QList<Core::Id> ids = factory->availableCreationIds(m_buildStepList);
- foreach (Core::Id id, ids)
- map.insert(factory->displayNameForId(id), QPair<Core::Id, IBuildStepFactory *>(id, factory));
+ const QList<BuildStepInfo> infos = factory->availableSteps(m_buildStepList);
+ for (const BuildStepInfo &info : infos) {
+ if (info.flags & BuildStepInfo::Uncreatable)
+ continue;
+ if ((info.flags & BuildStepInfo::UniqueStep) && m_buildStepList->contains(info.id))
+ continue;
+ map.insert(info.displayName, qMakePair(info.id, factory));
+ }
}
// Ask the user which one to add
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index a05665f42f..fd9ba9e9d8 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -154,61 +154,23 @@ bool ProcessStep::fromMap(const QVariantMap &map)
// ProcessStepFactory
//*******
-bool ProcessStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> ProcessStepFactory::availableSteps(BuildStepList *parent) const
{
Q_UNUSED(parent);
- return id == PROCESS_STEP_ID;
+ return {{ PROCESS_STEP_ID, ProcessStep::tr("Custom Process Step", "item in combobox") }};
}
BuildStep *ProcessStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return nullptr;
+ Q_UNUSED(id);
return new ProcessStep(parent);
}
-bool ProcessStepFactory::canClone(BuildStepList *parent, BuildStep *bs) const
-{
- return canCreate(parent, bs->id());
-}
-
BuildStep *ProcessStepFactory::clone(BuildStepList *parent, BuildStep *bs)
{
- if (!canClone(parent, bs))
- return nullptr;
return new ProcessStep(parent, static_cast<ProcessStep *>(bs));
}
-bool ProcessStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- Core::Id id = ProjectExplorer::idFromMap(map);
- return canCreate(parent, id);
-}
-
-BuildStep *ProcessStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return nullptr;
-
- auto bs = new ProcessStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return nullptr;
-}
-
-QList<Core::Id> ProcessStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- Q_UNUSED(parent);
- return QList<Core::Id>() << Core::Id(PROCESS_STEP_ID);
-}
-QString ProcessStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == PROCESS_STEP_ID)
- return ProcessStep::tr("Custom Process Step", "item in combobox");
- return QString();
-}
-
//*******
// ProcessStepConfigWidget
//*******
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index cabe17fbb9..8d92fca092 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -37,15 +37,11 @@ class ProcessStepFactory : public IBuildStepFactory
Q_OBJECT
public:
- virtual QList<Core::Id> availableCreationIds(BuildStepList *parent) const override;
- virtual QString displayNameForId(Core::Id id) const override;
-
- virtual bool canCreate(BuildStepList *parent, Core::Id id) const override;
- virtual BuildStep *create(BuildStepList *parent, Core::Id id) override;
- virtual bool canRestore(BuildStepList *parent, const QVariantMap &map) const override;
- virtual BuildStep *restore(BuildStepList *parent, const QVariantMap &map) override;
- virtual bool canClone(BuildStepList *parent, BuildStep *product) const override;
- virtual BuildStep *clone(BuildStepList *parent, BuildStep *product) override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
+ BuildStep *create(BuildStepList *parent, Core::Id id) override;
+ BuildStep *clone(BuildStepList *parent, BuildStep *product) override;
};
class ProcessStep : public AbstractProcessStep
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index 4841e49572..8ffafd5560 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -697,64 +697,23 @@ QbsBuildStepFactory::QbsBuildStepFactory(QObject *parent) :
ProjectExplorer::IBuildStepFactory(parent)
{ }
-QList<Core::Id> QbsBuildStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+void QbsBuildStepFactory::availableSteps(QList<ProjectExplorer::BuildStepInfo> *steps,
+ ProjectExplorer::BuildStepList *parent) const
{
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD
&& qobject_cast<QbsBuildConfiguration *>(parent->parent())
&& qobject_cast<QbsProject *>(parent->target()->project()))
- return QList<Core::Id>() << Core::Id(Constants::QBS_BUILDSTEP_ID);
- return QList<Core::Id>();
-}
-
-QString QbsBuildStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == Core::Id(Constants::QBS_BUILDSTEP_ID))
- return tr("Qbs Build");
- return QString();
-}
-
-bool QbsBuildStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const
-{
- if (parent->id() != Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- || !qobject_cast<QbsBuildConfiguration *>(parent->parent())
- || !qobject_cast<QbsProject *>(parent->target()->project()))
- return false;
- return id == Core::Id(Constants::QBS_BUILDSTEP_ID);
+ steps->append({ Constants::QBS_BUILDSTEP_ID, tr("Qbs Build") });
}
ProjectExplorer::BuildStep *QbsBuildStepFactory::create(ProjectExplorer::BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
return new QbsBuildStep(parent);
}
-bool QbsBuildStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QbsBuildStepFactory::restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- QbsBuildStep *bs = new QbsBuildStep(parent);
- if (!bs->fromMap(map)) {
- delete bs;
- return 0;
- }
- return bs;
-}
-
-bool QbsBuildStepFactory::canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *QbsBuildStepFactory::clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product)
{
- if (!canClone(parent, product))
- return 0;
return new QbsBuildStep(parent, static_cast<QbsBuildStep *>(product));
}
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h
index af15dd2b4e..9c3f825c2b 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h
@@ -167,17 +167,10 @@ class QbsBuildStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QbsBuildStepFactory(QObject *parent = 0);
- // used to show the list of possible additons to a target, returns a list of types
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- // used to translate the types to names to display to the user
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- // used to recreate the runConfigurations when restoring settings
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
index eda6cb0428..b19b0aee84 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
@@ -300,62 +300,22 @@ QbsCleanStepFactory::QbsCleanStepFactory(QObject *parent) :
ProjectExplorer::IBuildStepFactory(parent)
{ }
-QList<Core::Id> QbsCleanStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+void QbsCleanStepFactory::availableSteps(QList<ProjectExplorer::BuildStepInfo> *steps,
+ ProjectExplorer::BuildStepList *parent) const
{
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN
&& qobject_cast<QbsBuildConfiguration *>(parent->parent()))
- return QList<Core::Id>() << Core::Id(Constants::QBS_CLEANSTEP_ID);
- return QList<Core::Id>();
-}
-
-QString QbsCleanStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == Core::Id(Constants::QBS_CLEANSTEP_ID))
- return tr("Qbs Clean");
- return QString();
-}
-
-bool QbsCleanStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const
-{
- if (parent->id() != Core::Id(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)
- || !qobject_cast<QbsBuildConfiguration *>(parent->parent()))
- return false;
- return id == Core::Id(Constants::QBS_CLEANSTEP_ID);
+ steps->append({ Constants::QBS_CLEANSTEP_ID, tr("Qbs Clean") });
}
ProjectExplorer::BuildStep *QbsCleanStepFactory::create(ProjectExplorer::BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
return new QbsCleanStep(parent);
}
-bool QbsCleanStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QbsCleanStepFactory::restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- QbsCleanStep *bs = new QbsCleanStep(parent);
- if (!bs->fromMap(map)) {
- delete bs;
- return 0;
- }
- return bs;
-}
-
-bool QbsCleanStepFactory::canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *QbsCleanStepFactory::clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product)
{
- if (!canClone(parent, product))
- return 0;
return new QbsCleanStep(parent, static_cast<QbsCleanStep *>(product));
}
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.h b/src/plugins/qbsprojectmanager/qbscleanstep.h
index 265d538914..433ba50598 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.h
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.h
@@ -121,17 +121,10 @@ class QbsCleanStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QbsCleanStepFactory(QObject *parent = 0);
- // used to show the list of possible additons to a target, returns a list of types
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- // used to translate the types to names to display to the user
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- // used to recreate the runConfigurations when restoring settings
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
index e3a51c2eb3..b3fc671765 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
@@ -356,68 +356,25 @@ QbsInstallStepFactory::QbsInstallStepFactory(QObject *parent) :
ProjectExplorer::IBuildStepFactory(parent)
{ }
-QList<Core::Id> QbsInstallStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+void QbsInstallStepFactory::availableSteps(QList<ProjectExplorer::BuildStepInfo> *steps,
+ ProjectExplorer::BuildStepList *parent) const
{
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_DEPLOY
&& qobject_cast<ProjectExplorer::DeployConfiguration *>(parent->parent())
&& qobject_cast<QbsProject *>(parent->target()->project()))
- return QList<Core::Id>() << Core::Id(Constants::QBS_INSTALLSTEP_ID);
- return QList<Core::Id>();
-}
-
-QString QbsInstallStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == Core::Id(Constants::QBS_INSTALLSTEP_ID))
- return tr("Qbs Install");
- return QString();
-}
-
-bool QbsInstallStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const
-{
- if (parent->id() != Core::Id(ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- || !qobject_cast<ProjectExplorer::DeployConfiguration *>(parent->parent())
- || !qobject_cast<QbsProject *>(parent->target()->project()))
- return false;
- return id == Core::Id(Constants::QBS_INSTALLSTEP_ID);
+ steps->append({ Constants::QBS_INSTALLSTEP_ID, tr("Qbs Install") });
}
ProjectExplorer::BuildStep *QbsInstallStepFactory::create(ProjectExplorer::BuildStepList *parent,
const Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
return new QbsInstallStep(parent);
}
-bool QbsInstallStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QbsInstallStepFactory::restore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- QbsInstallStep *bs = new QbsInstallStep(parent);
- if (!bs->fromMap(map)) {
- delete bs;
- return 0;
- }
- return bs;
-}
-
-bool QbsInstallStepFactory::canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *QbsInstallStepFactory::clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product)
{
- if (!canClone(parent, product))
- return 0;
return new QbsInstallStep(parent, static_cast<QbsInstallStep *>(product));
}
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.h b/src/plugins/qbsprojectmanager/qbsinstallstep.h
index 95f8434eaf..8ec22fbe92 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstep.h
+++ b/src/plugins/qbsprojectmanager/qbsinstallstep.h
@@ -127,17 +127,10 @@ class QbsInstallStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QbsInstallStepFactory(QObject *parent = 0);
- // used to show the list of possible additons to a target, returns a list of types
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- // used to translate the types to names to display to the user
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- // used to recreate the runConfigurations when restoring settings
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp
index 8b5bf44bda..33c984558e 100644
--- a/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp
+++ b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.cpp
@@ -29,8 +29,6 @@
#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
-#include <qtsupport/qtkitinformation.h>
-#include <qtsupport/qtsupportconstants.h>
#include <android/androidmanager.h>
using namespace ProjectExplorer;
@@ -43,71 +41,26 @@ AndroidPackageInstallationFactory::AndroidPackageInstallationFactory(QObject *pa
{
}
-QList<Core::Id> AndroidPackageInstallationFactory::availableCreationIds(BuildStepList *parent) const
-{
- Q_UNUSED(parent);
- return QList<Core::Id>();
-}
-
-QString AndroidPackageInstallationFactory::displayNameForId(Core::Id id) const
-{
- if (id == AndroidPackageInstallationStep::Id)
- return tr("Deploy to device");
- return QString();
-}
-
-bool AndroidPackageInstallationFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- Q_UNUSED(parent);
- Q_UNUSED(id);
- return false;
-}
-
-BuildStep *AndroidPackageInstallationFactory::create(BuildStepList *parent, Core::Id id)
-{
- Q_UNUSED(parent);
- Q_UNUSED(id);
- return 0;
-}
-
-bool AndroidPackageInstallationFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
+QList<BuildStepInfo> AndroidPackageInstallationFactory::availableSteps(BuildStepList *parent) const
{
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
+ return {};
if (!Android::AndroidManager::supportsAndroid(parent->target()))
- return false;
+ return {};
if (parent->contains(AndroidPackageInstallationStep::Id))
- return false;
- return ProjectExplorer::idFromMap(map) == AndroidPackageInstallationStep::Id;
-}
+ return {};
-BuildStep *AndroidPackageInstallationFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- Q_ASSERT(canRestore(parent, map));
- AndroidPackageInstallationStep * const step = new AndroidPackageInstallationStep(parent);
- if (!step->fromMap(map)) {
- delete step;
- return 0;
- }
- return step;
+ return {{ AndroidPackageInstallationStep::Id, tr("Deploy to device"), BuildStepInfo::Uncreatable }};
}
-bool AndroidPackageInstallationFactory::canClone(BuildStepList *parent, BuildStep *product) const
+BuildStep *AndroidPackageInstallationFactory::create(BuildStepList *parent, Core::Id id)
{
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
- if (!Android::AndroidManager::supportsAndroid(parent->target()))
- return false;
- if (product->id() != AndroidPackageInstallationStep::Id)
- return false;
- if (parent->contains(AndroidPackageInstallationStep::Id))
- return false;
- return true;
+ Q_UNUSED(id)
+ return new AndroidPackageInstallationStep(parent);
}
BuildStep *AndroidPackageInstallationFactory::clone(BuildStepList *parent, BuildStep *product)
{
- Q_ASSERT(canClone(parent, product));
return new AndroidPackageInstallationStep(parent, static_cast<AndroidPackageInstallationStep*>(product));
}
diff --git a/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.h b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.h
index f870689439..b1fe533f97 100644
--- a/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.h
+++ b/src/plugins/qmakeandroidsupport/androidpackageinstallationfactory.h
@@ -33,21 +33,14 @@ namespace Internal {
class AndroidPackageInstallationFactory: public ProjectExplorer::IBuildStepFactory
{
Q_OBJECT
+
public:
explicit AndroidPackageInstallationFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
-
- bool canRestore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp
index e4dd8acc1d..0a6920a838 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp
@@ -64,71 +64,30 @@ QmakeAndroidBuildApkStepFactory::QmakeAndroidBuildApkStepFactory(QObject *parent
{
}
-QList<Core::Id> QmakeAndroidBuildApkStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+QList<ProjectExplorer::BuildStepInfo> QmakeAndroidBuildApkStepFactory::availableSteps(ProjectExplorer::BuildStepList *parent) const
{
+ ProjectExplorer::Target *target = parent->target();
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD
- || !canHandle(parent->target())
- || parent->contains(ANDROID_BUILD_APK_ID)) {
- return QList<Core::Id>();
- }
-
- return QList<Core::Id>() << ANDROID_BUILD_APK_ID;
-}
+ || !target->project()->supportsKit(target->kit())
+ || !AndroidManager::supportsAndroid(target)
+ || !qobject_cast<QmakeProject *>(target->project())
+ || parent->contains(ANDROID_BUILD_APK_ID))
+ return {};
-QString QmakeAndroidBuildApkStepFactory::displayNameForId(const Core::Id id) const
-{
- if (id == ANDROID_BUILD_APK_ID)
- return tr("Build Android APK");
- return QString();
-}
-
-bool QmakeAndroidBuildApkStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, const Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ return {{ ANDROID_BUILD_APK_ID, tr("Build Android APK") }};
}
ProjectExplorer::BuildStep *QmakeAndroidBuildApkStepFactory::create(ProjectExplorer::BuildStepList *parent, const Core::Id id)
{
- Q_ASSERT(canCreate(parent, id));
Q_UNUSED(id);
return new QmakeAndroidBuildApkStep(parent);
}
-bool QmakeAndroidBuildApkStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QmakeAndroidBuildApkStepFactory::restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map)
-{
- Q_ASSERT(canRestore(parent, map));
- QmakeAndroidBuildApkStep * const step = new QmakeAndroidBuildApkStep(parent);
- if (!step->fromMap(map)) {
- delete step;
- return 0;
- }
- return step;
-}
-
-bool QmakeAndroidBuildApkStepFactory::canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *QmakeAndroidBuildApkStepFactory::clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product)
{
- Q_ASSERT(canClone(parent, product));
return new QmakeAndroidBuildApkStep(parent, static_cast<QmakeAndroidBuildApkStep *>(product));
}
-bool QmakeAndroidBuildApkStepFactory::canHandle(ProjectExplorer::Target *t) const
-{
- return t->project()->supportsKit(t->kit())
- && AndroidManager::supportsAndroid(t)
- && qobject_cast<QmakeProject *>(t->project());
-}
-
-
QmakeAndroidBuildApkStep::QmakeAndroidBuildApkStep(ProjectExplorer::BuildStepList *bc)
:AndroidBuildApkStep(bc, ANDROID_BUILD_APK_ID)
{
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h
index 8367236ca0..2f44195c2f 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h
@@ -34,25 +34,16 @@ namespace Internal {
class QmakeAndroidBuildApkStepFactory : public ProjectExplorer::IBuildStepFactory
{
Q_OBJECT
+
public:
explicit QmakeAndroidBuildApkStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
-private:
- bool canHandle(ProjectExplorer::Target *t) const;
-
};
class QmakeAndroidBuildApkStep : public Android::AndroidBuildApkStep
diff --git a/src/plugins/qmakeprojectmanager/makestep.cpp b/src/plugins/qmakeprojectmanager/makestep.cpp
index ddb3ac8660..4a1e77e91a 100644
--- a/src/plugins/qmakeprojectmanager/makestep.cpp
+++ b/src/plugins/qmakeprojectmanager/makestep.cpp
@@ -482,17 +482,17 @@ MakeStepFactory::MakeStepFactory(QObject *parent) :
{
}
-bool MakeStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> MakeStepFactory::availableSteps(BuildStepList *parent) const
{
- if (parent->target()->project()->id() == Constants::QMAKEPROJECT_ID)
- return id == MAKESTEP_BS_ID;
- return false;
+ if (parent->target()->project()->id() != Constants::QMAKEPROJECT_ID)
+ return {};
+
+ return {{ MAKESTEP_BS_ID, tr("Make") }};
}
BuildStep *MakeStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
+ Q_UNUSED(id);
MakeStep *step = new MakeStep(parent);
if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) {
step->setClean(true);
@@ -501,44 +501,16 @@ BuildStep *MakeStepFactory::create(BuildStepList *parent, Core::Id id)
return step;
}
-bool MakeStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
BuildStep *MakeStepFactory::clone(BuildStepList *parent, BuildStep *source)
{
- if (!canClone(parent, source))
- return 0;
return new MakeStep(parent, static_cast<MakeStep *>(source));
}
-bool MakeStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
BuildStep *MakeStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
{
- if (!canRestore(parent, map))
- return 0;
MakeStep *bs(new MakeStep(parent));
if (bs->fromMap(map))
return bs;
delete bs;
return 0;
}
-
-QList<Core::Id> MakeStepFactory::availableCreationIds(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() == Constants::QMAKEPROJECT_ID)
- return QList<Core::Id>() << Core::Id(MAKESTEP_BS_ID);
- return QList<Core::Id>();
-}
-
-QString MakeStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == MAKESTEP_BS_ID)
- return tr("Make");
- return QString();
-}
diff --git a/src/plugins/qmakeprojectmanager/makestep.h b/src/plugins/qmakeprojectmanager/makestep.h
index c7584920fb..9f0abc9192 100644
--- a/src/plugins/qmakeprojectmanager/makestep.h
+++ b/src/plugins/qmakeprojectmanager/makestep.h
@@ -51,16 +51,14 @@ class MakeStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit MakeStepFactory(QObject *parent = 0);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
-
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
};
+
} //namespace Internal
class QmakeProject;
diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp
index e071439040..f7b9425810 100644
--- a/src/plugins/qmakeprojectmanager/qmakestep.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp
@@ -837,67 +837,27 @@ QMakeStepFactory::QMakeStepFactory(QObject *parent) :
{
}
-bool QMakeStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
+QList<BuildStepInfo> QMakeStepFactory::availableSteps(BuildStepList *parent) const
{
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return false;
+ return {};
if (!qobject_cast<QmakeBuildConfiguration *>(parent->parent()))
- return false;
- return id == QMAKE_BS_ID;
+ return {};
+
+ return {{ QMAKE_BS_ID, tr("qmake"), BuildStepInfo::UniqueStep }};
}
ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return nullptr;
+ Q_UNUSED(id)
return new QMakeStep(parent);
}
-bool QMakeStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- return canCreate(parent, source->id());
-}
-
ProjectExplorer::BuildStep *QMakeStepFactory::clone(BuildStepList *parent, ProjectExplorer::BuildStep *source)
{
- if (!canClone(parent, source))
- return nullptr;
return new QMakeStep(parent, qobject_cast<QMakeStep *>(source));
}
-bool QMakeStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QMakeStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return nullptr;
- QMakeStep *bs = new QMakeStep(parent);
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return nullptr;
-}
-
-QList<Core::Id> QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
-{
- if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- if (QmakeBuildConfiguration *bc = qobject_cast<QmakeBuildConfiguration *>(parent->parent()))
- if (!bc->qmakeStep())
- return QList<Core::Id>() << Core::Id(QMAKE_BS_ID);
- return QList<Core::Id>();
-}
-
-QString QMakeStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == QMAKE_BS_ID)
- return tr("qmake");
- return QString();
-}
-
-
QMakeStepConfig::TargetArchConfig QMakeStepConfig::targetArchFor(const Abi &targetAbi, const BaseQtVersion *version)
{
QMakeStepConfig::TargetArchConfig arch = QMakeStepConfig::NoArch;
diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h
index c15543695a..085f2789f1 100644
--- a/src/plugins/qmakeprojectmanager/qmakestep.h
+++ b/src/plugins/qmakeprojectmanager/qmakestep.h
@@ -58,14 +58,11 @@ class QMakeStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QMakeStepFactory(QObject *parent = 0);
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *bs) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *bs) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
};
} // namespace Internal
diff --git a/src/plugins/qnx/qnxdeploystepfactory.cpp b/src/plugins/qnx/qnxdeploystepfactory.cpp
index 40280f1cfa..52f2aab492 100644
--- a/src/plugins/qnx/qnxdeploystepfactory.cpp
+++ b/src/plugins/qnx/qnxdeploystepfactory.cpp
@@ -34,6 +34,8 @@
#include <projectexplorer/target.h>
#include <remotelinux/genericdirectuploadstep.h>
+using namespace ProjectExplorer;
+
namespace Qnx {
namespace Internal {
@@ -42,39 +44,23 @@ QnxDeployStepFactory::QnxDeployStepFactory()
{
}
-QList<Core::Id> QnxDeployStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
+QList<BuildStepInfo> QnxDeployStepFactory::availableSteps(BuildStepList *parent) const
{
if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return QList<Core::Id>();
+ return {};
- Core::Id deviceType = ProjectExplorer::DeviceTypeKitInformation::deviceTypeId(parent->target()->kit());
+ Core::Id deviceType = DeviceTypeKitInformation::deviceTypeId(parent->target()->kit());
if (deviceType != QnxDeviceFactory::deviceType())
- return QList<Core::Id>();
+ return {};
- return QList<Core::Id>() << RemoteLinux::GenericDirectUploadStep::stepId()
- << ProjectExplorer::DeviceCheckBuildStep::stepId();
-}
-
-QString QnxDeployStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == RemoteLinux::GenericDirectUploadStep::stepId())
- return RemoteLinux::GenericDirectUploadStep::displayName();
- else if (id == ProjectExplorer::DeviceCheckBuildStep::stepId())
- return ProjectExplorer::DeviceCheckBuildStep::stepDisplayName();
-
- return QString();
-}
-
-bool QnxDeployStepFactory::canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ return {{ RemoteLinux::GenericDirectUploadStep::stepId(),
+ RemoteLinux::GenericDirectUploadStep::displayName() },
+ { DeviceCheckBuildStep::stepId(),
+ DeviceCheckBuildStep::stepDisplayName() }};
}
ProjectExplorer::BuildStep *QnxDeployStepFactory::create(ProjectExplorer::BuildStepList *parent, Core::Id id)
{
- if (!canCreate(parent, id))
- return 0;
-
if (id == RemoteLinux::GenericDirectUploadStep::stepId())
return new RemoteLinux::GenericDirectUploadStep(parent, id);
else if (id == ProjectExplorer::DeviceCheckBuildStep::stepId())
@@ -82,32 +68,8 @@ ProjectExplorer::BuildStep *QnxDeployStepFactory::create(ProjectExplorer::BuildS
return 0;
}
-bool QnxDeployStepFactory::canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, ProjectExplorer::idFromMap(map));
-}
-
-ProjectExplorer::BuildStep *QnxDeployStepFactory::restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map)
-{
- if (!canRestore(parent, map))
- return 0;
- ProjectExplorer::BuildStep * const bs = create(parent, ProjectExplorer::idFromMap(map));
- if (bs->fromMap(map))
- return bs;
- delete bs;
- return 0;
-}
-
-bool QnxDeployStepFactory::canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
ProjectExplorer::BuildStep *QnxDeployStepFactory::clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *product)
{
- if (!canClone(parent, product))
- return 0;
-
if (RemoteLinux::GenericDirectUploadStep * const other = qobject_cast<RemoteLinux::GenericDirectUploadStep*>(product))
return new RemoteLinux::GenericDirectUploadStep(parent, other);
else if (ProjectExplorer::DeviceCheckBuildStep * const other = qobject_cast<ProjectExplorer::DeviceCheckBuildStep*>(product))
diff --git a/src/plugins/qnx/qnxdeploystepfactory.h b/src/plugins/qnx/qnxdeploystepfactory.h
index dc9d6e98a6..e7f97f5ad5 100644
--- a/src/plugins/qnx/qnxdeploystepfactory.h
+++ b/src/plugins/qnx/qnxdeploystepfactory.h
@@ -36,18 +36,10 @@ class QnxDeployStepFactory : public ProjectExplorer::IBuildStepFactory
public:
explicit QnxDeployStepFactory();
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
-
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map) override;
-
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.cpp b/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.cpp
index 4b55c66e39..58ecdc6b65 100644
--- a/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.cpp
+++ b/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.cpp
@@ -42,42 +42,25 @@ GenericRemoteLinuxDeployStepFactory::GenericRemoteLinuxDeployStepFactory(QObject
{
}
-QList<Core::Id> GenericRemoteLinuxDeployStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> GenericRemoteLinuxDeployStepFactory::availableSteps(BuildStepList *parent) const
{
- QList<Core::Id> ids;
if (!qobject_cast<RemoteLinuxDeployConfiguration *>(parent->parent()))
- return ids;
- ids << TarPackageCreationStep::stepId() << UploadAndInstallTarPackageStep::stepId()
- << GenericDirectUploadStep::stepId()
- << GenericRemoteLinuxCustomCommandDeploymentStep::stepId()
- << RemoteLinuxCheckForFreeDiskSpaceStep::stepId();
- return ids;
-}
-
-QString GenericRemoteLinuxDeployStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == TarPackageCreationStep::stepId())
- return TarPackageCreationStep::displayName();
- if (id == UploadAndInstallTarPackageStep::stepId())
- return UploadAndInstallTarPackageStep::displayName();
- if (id == GenericDirectUploadStep::stepId())
- return GenericDirectUploadStep::displayName();
- if (id == GenericRemoteLinuxCustomCommandDeploymentStep::stepId())
- return GenericRemoteLinuxCustomCommandDeploymentStep::stepDisplayName();
- if (id == RemoteLinuxCheckForFreeDiskSpaceStep::stepId())
- return RemoteLinuxCheckForFreeDiskSpaceStep::stepDisplayName();
- return QString();
-}
-
-bool GenericRemoteLinuxDeployStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ return {};
+
+ return {{ TarPackageCreationStep::stepId(),
+ TarPackageCreationStep::displayName() },
+ { UploadAndInstallTarPackageStep::stepId(),
+ UploadAndInstallTarPackageStep::displayName() },
+ { GenericDirectUploadStep::stepId(),
+ GenericDirectUploadStep::displayName() },
+ { GenericRemoteLinuxCustomCommandDeploymentStep::stepId(),
+ GenericRemoteLinuxCustomCommandDeploymentStep::stepDisplayName() },
+ { RemoteLinuxCheckForFreeDiskSpaceStep::stepId(),
+ RemoteLinuxCheckForFreeDiskSpaceStep::stepDisplayName() }};
}
BuildStep *GenericRemoteLinuxDeployStepFactory::create(BuildStepList *parent, Core::Id id)
{
- Q_ASSERT(canCreate(parent, id));
-
if (id == TarPackageCreationStep::stepId())
return new TarPackageCreationStep(parent);
if (id == UploadAndInstallTarPackageStep::stepId())
@@ -91,30 +74,6 @@ BuildStep *GenericRemoteLinuxDeployStepFactory::create(BuildStepList *parent, Co
return 0;
}
-bool GenericRemoteLinuxDeployStepFactory::canRestore(BuildStepList *parent,
- const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *GenericRemoteLinuxDeployStepFactory::restore(BuildStepList *parent,
- const QVariantMap &map)
-{
- Q_ASSERT(canRestore(parent, map));
-
- BuildStep * const step = create(parent, idFromMap(map));
- if (!step->fromMap(map)) {
- delete step;
- return 0;
- }
- return step;
-}
-
-bool GenericRemoteLinuxDeployStepFactory::canClone(BuildStepList *parent, BuildStep *product) const
-{
- return canCreate(parent, product->id());
-}
-
BuildStep *GenericRemoteLinuxDeployStepFactory::clone(BuildStepList *parent, BuildStep *product)
{
if (TarPackageCreationStep * const other = qobject_cast<TarPackageCreationStep *>(product))
diff --git a/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.h b/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.h
index 939f071b1f..af92564fdb 100644
--- a/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.h
+++ b/src/plugins/remotelinux/genericremotelinuxdeploystepfactory.h
@@ -33,18 +33,14 @@ namespace Internal {
class GenericRemoteLinuxDeployStepFactory : public ProjectExplorer::IBuildStepFactory
{
Q_OBJECT
+
public:
GenericRemoteLinuxDeployStepFactory(QObject *parent = 0);
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
- const QVariantMap &map) override;
- bool canClone(ProjectExplorer::BuildStepList *parent,
- ProjectExplorer::BuildStep *product) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *product) override;
};
diff --git a/src/plugins/winrt/winrtdeployconfiguration.cpp b/src/plugins/winrt/winrtdeployconfiguration.cpp
index da1cc0efd1..a5a3108372 100644
--- a/src/plugins/winrt/winrtdeployconfiguration.cpp
+++ b/src/plugins/winrt/winrtdeployconfiguration.cpp
@@ -139,59 +139,22 @@ DeployConfiguration *WinRtDeployConfigurationFactory::clone(Target *parent,
return 0;
}
-QList<Core::Id> WinRtDeployStepFactory::availableCreationIds(BuildStepList *parent) const
+QList<BuildStepInfo> WinRtDeployStepFactory::availableSteps(BuildStepList *parent) const
{
- QList<Core::Id> ids;
- if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY)
- return ids;
- if (!parent->target()->project()->supportsKit(parent->target()->kit()))
- return ids;
- if (!parent->contains(Constants::WINRT_BUILD_STEP_DEPLOY))
- ids << Constants::WINRT_BUILD_STEP_DEPLOY;
- return ids;
-}
-
-QString WinRtDeployStepFactory::displayNameForId(Core::Id id) const
-{
- if (id == Constants::WINRT_BUILD_STEP_DEPLOY) {
- return QCoreApplication::translate("WinRt::Internal::WinRtDeployStepFactory",
- "Run windeployqt");
- }
- return QString();
-}
+ if (parent->id() != ProjectExplorer::Constants::BUILDSTEPS_DEPLOY
+ || !parent->target()->project()->supportsKit(parent->target()->kit())
+ || parent->contains(Constants::WINRT_BUILD_STEP_DEPLOY))
+ return {};
-bool WinRtDeployStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
-{
- return availableCreationIds(parent).contains(id);
+ return {{ Constants::WINRT_BUILD_STEP_DEPLOY,
+ QCoreApplication::translate("WinRt::Internal::WinRtDeployStepFactory", "Run windeployqt"),
+ BuildStepInfo::Unclonable }};
}
BuildStep *WinRtDeployStepFactory::create(BuildStepList *parent, Core::Id id)
{
- if (id == Constants::WINRT_BUILD_STEP_DEPLOY)
- return new WinRtPackageDeploymentStep(parent);
- return 0;
-}
-
-bool WinRtDeployStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
-{
- return canCreate(parent, idFromMap(map));
-}
-
-BuildStep *WinRtDeployStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
-{
- BuildStep *bs = create(parent, idFromMap(map));
- if (!bs->fromMap(map)) {
- delete bs;
- bs = 0;
- }
- return bs;
-}
-
-bool WinRtDeployStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
-{
- Q_UNUSED(parent);
- Q_UNUSED(source);
- return false;
+ Q_UNUSED(id)
+ return new WinRtPackageDeploymentStep(parent);
}
BuildStep *WinRtDeployStepFactory::clone(BuildStepList *parent, BuildStep *source)
diff --git a/src/plugins/winrt/winrtdeployconfiguration.h b/src/plugins/winrt/winrtdeployconfiguration.h
index 96ac069dfe..6e036ad7d0 100644
--- a/src/plugins/winrt/winrtdeployconfiguration.h
+++ b/src/plugins/winrt/winrtdeployconfiguration.h
@@ -49,13 +49,10 @@ public:
class WinRtDeployStepFactory : public ProjectExplorer::IBuildStepFactory
{
public:
- QList<Core::Id> availableCreationIds(ProjectExplorer::BuildStepList *parent) const override;
- QString displayNameForId(Core::Id id) const override;
- bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const override;
+ QList<ProjectExplorer::BuildStepInfo>
+ availableSteps(ProjectExplorer::BuildStepList *parent) const override;
+
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const override;
- ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) override;
- bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const override;
ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
ProjectExplorer::BuildStep *source) override;
};