From 0d4fdd291ab85183c937223a0b33e901023ea448 Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Tue, 16 Mar 2010 14:36:59 +0100 Subject: [PATCH] Use a type enum instead of duplicating functions between build and clean That is e.g. buildSteps() and cleanSteps() --> steps(type) --- .../cmakebuildconfiguration.cpp | 4 +- .../cmakeprojectmanager/cmakeproject.cpp | 3 +- .../cmakeprojectmanager/cmaketarget.cpp | 5 +- src/plugins/cmakeprojectmanager/makestep.cpp | 26 +++-- src/plugins/cmakeprojectmanager/makestep.h | 16 +-- .../genericbuildconfiguration.cpp | 2 +- .../genericprojectmanager/genericmakestep.cpp | 24 ++-- .../genericprojectmanager/genericmakestep.h | 12 +- .../genericprojectmanager/generictarget.cpp | 2 +- .../projectexplorer/buildconfiguration.cpp | 108 +++++++----------- .../projectexplorer/buildconfiguration.h | 16 +-- src/plugins/projectexplorer/buildmanager.cpp | 4 +- .../buildsettingspropertiespage.cpp | 4 +- src/plugins/projectexplorer/buildstep.h | 19 +-- .../projectexplorer/buildstepspage.cpp | 30 ++--- src/plugins/projectexplorer/buildstepspage.h | 5 +- src/plugins/projectexplorer/processstep.cpp | 28 ++--- src/plugins/projectexplorer/processstep.h | 14 +-- src/plugins/projectexplorer/projectwindow.cpp | 1 - src/plugins/qt4projectmanager/makestep.cpp | 26 +++-- src/plugins/qt4projectmanager/makestep.h | 16 +-- src/plugins/qt4projectmanager/qmakestep.cpp | 33 +++--- src/plugins/qt4projectmanager/qmakestep.h | 14 +-- .../qt4buildconfiguration.cpp | 4 +- src/plugins/qt4projectmanager/qt4target.cpp | 6 +- 25 files changed, 214 insertions(+), 208 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 9127252b083..6e006053c41 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -213,10 +213,10 @@ CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer: bc->setDisplayName(buildConfigurationName); MakeStep *makeStep = new MakeStep(bc); - bc->insertBuildStep(0, makeStep); + bc->insertStep(ProjectExplorer::Build, 0, makeStep); MakeStep *cleanMakeStep = new MakeStep(bc); - bc->insertCleanStep(0, cleanMakeStep); + bc->insertStep(ProjectExplorer::Clean, 0, cleanMakeStep); cleanMakeStep->setAdditionalArguments(QStringList() << "clean"); cleanMakeStep->setClean(true); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index cb6ab490440..b4304bb60a0 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -523,7 +523,8 @@ bool CMakeProject::fromMap(const QVariantMap &map) return false; if (!hasUserFile && hasBuildTarget("all")) { - MakeStep *makeStep(qobject_cast<MakeStep *>(activeTarget()->activeBuildConfiguration()->buildSteps().at(0))); + MakeStep *makeStep = qobject_cast<MakeStep *>( + activeTarget()->activeBuildConfiguration()->steps(ProjectExplorer::Build).at(0)); Q_ASSERT(makeStep); makeStep->setBuildTarget("all", true); } diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.cpp b/src/plugins/cmakeprojectmanager/cmaketarget.cpp index c38ccd15d43..a96cedf5033 100644 --- a/src/plugins/cmakeprojectmanager/cmaketarget.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketarget.cpp @@ -32,6 +32,7 @@ #include "cmakeopenprojectwizard.h" #include "cmakeproject.h" #include "cmakerunconfiguration.h" +#include "cmakebuildconfiguration.h" #include <QtGui/QApplication> #include <QtGui/QStyle> @@ -168,10 +169,10 @@ CMakeTarget *CMakeTargetFactory::create(ProjectExplorer::Project *parent, const bc->setDisplayName("all"); // Now create a standard build configuration - bc->insertBuildStep(0, new MakeStep(bc)); + bc->insertStep(ProjectExplorer::Build, 0, new MakeStep(bc)); MakeStep *cleanMakeStep = new MakeStep(bc); - bc->insertCleanStep(0, cleanMakeStep); + bc->insertStep(ProjectExplorer::Clean, 0, cleanMakeStep); cleanMakeStep->setAdditionalArguments(QStringList() << "clean"); cleanMakeStep->setClean(true); diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index e5d303f7225..48b78b6be44 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -317,41 +317,42 @@ MakeStepFactory::~MakeStepFactory() { } -bool MakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const +bool MakeStepFactory::canCreate(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const { + Q_UNUSED(type) if (!qobject_cast<CMakeBuildConfiguration *>(parent)) return false; return QLatin1String(MS_ID) == id; } -BuildStep *MakeStepFactory::create(BuildConfiguration *parent, const QString &id) +BuildStep *MakeStepFactory::create(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) { - if (!canCreate(parent, id)) + if (!canCreate(parent, type, id)) return 0; return new MakeStep(parent); } -bool MakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const +bool MakeStepFactory::canClone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source) const { - return canCreate(parent, source->id()); + return canCreate(parent, type, source->id()); } -BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, BuildStep *source) +BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source) { - if (!canClone(parent, source)) + if (!canClone(parent, type, source)) return 0; return new MakeStep(parent, static_cast<MakeStep *>(source)); } -bool MakeStepFactory::canRestore(BuildConfiguration *parent, const QVariantMap &map) const +bool MakeStepFactory::canRestore(BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); - return canCreate(parent, id); + return canCreate(parent, type, id); } -BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, const QVariantMap &map) +BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) { - if (!canRestore(parent, map)) + if (!canRestore(parent, type, map)) return 0; MakeStep *bs(new MakeStep(parent)); if (bs->fromMap(map)) @@ -360,8 +361,9 @@ BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, const QVariantMa return 0; } -QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const { + Q_UNUSED(type) if (!qobject_cast<CMakeBuildConfiguration *>(parent)) return QStringList(); return QStringList() << QLatin1String(MS_ID); diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h index ede5bb4035a..102b73ca604 100644 --- a/src/plugins/cmakeprojectmanager/makestep.h +++ b/src/plugins/cmakeprojectmanager/makestep.h @@ -119,14 +119,14 @@ public: explicit MakeStepFactory(QObject *parent = 0); virtual ~MakeStepFactory(); - virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const; - virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id); - virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const; - virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source); - virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const; - virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map); - - virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const; + virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const; + virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id); + virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const; + virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source); + virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const; + virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map); + + virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, ProjectExplorer::StepType type) const; virtual QString displayNameForId(const QString &id) const; }; diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 970fd66fed4..b35000b40e4 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -175,7 +175,7 @@ BuildConfiguration *GenericBuildConfigurationFactory::create(ProjectExplorer::Ta bc->setDisplayName(buildConfigurationName); GenericMakeStep *makeStep = new GenericMakeStep(bc); - bc->insertBuildStep(0, makeStep); + bc->insertStep(ProjectExplorer::Build, 0, makeStep); makeStep->setBuildTarget("all", /* on = */ true); target->addBuildConfiguration(bc); // also makes the name unique... diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 292469119cb..655717bfb83 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -307,32 +307,38 @@ GenericMakeStepFactory::~GenericMakeStepFactory() { } -bool GenericMakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const +bool GenericMakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, + const QString &id) const { + Q_UNUSED(type) if (!qobject_cast<GenericBuildConfiguration *>(parent)) return false; return id == QLatin1String(GENERIC_MS_ID); } ProjectExplorer::BuildStep *GenericMakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QString &id) { - if (!canCreate(parent, id)) + if (!canCreate(parent, type, id)) return 0; return new GenericMakeStep(parent); } bool GenericMakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const { const QString id(source->id()); - return canCreate(parent, id); + return canCreate(parent, type, id); } ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) { - if (!canClone(parent, source)) + if (!canClone(parent, type, source)) return 0; GenericMakeStep *old(qobject_cast<GenericMakeStep *>(source)); Q_ASSERT(old); @@ -340,16 +346,18 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::Build } bool GenericMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); - return canCreate(parent, id); + return canCreate(parent, type, id); } ProjectExplorer::BuildStep *GenericMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QVariantMap &map) { - if (!canRestore(parent, map)) + if (!canRestore(parent, type, map)) return 0; GenericMakeStep *bs(new GenericMakeStep(parent)); if (bs->fromMap(map)) @@ -358,8 +366,10 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::restore(ProjectExplorer::Bui return 0; } -QStringList GenericMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +QStringList GenericMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type) const { + Q_UNUSED(type) if (!qobject_cast<GenericBuildConfiguration *>(parent)) return QStringList(); return QStringList() << QLatin1String(GENERIC_MS_ID); diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h index 8e6edd84c89..fbe22581c21 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.h +++ b/src/plugins/genericprojectmanager/genericmakestep.h @@ -113,19 +113,27 @@ public: explicit GenericMakeStepFactory(QObject *parent = 0); virtual ~GenericMakeStepFactory(); - virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const; + virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, + const QString &id) const; virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QString &id); virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const; virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source); virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QVariantMap &map) const; virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, + ProjectExplorer::StepType type, const QVariantMap &map); - virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const; + virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, + ProjectExplorer::StepType type) const; virtual QString displayNameForId(const QString &id) const; }; diff --git a/src/plugins/genericprojectmanager/generictarget.cpp b/src/plugins/genericprojectmanager/generictarget.cpp index 6d0c9dfe5c9..cabd75cfbea 100644 --- a/src/plugins/genericprojectmanager/generictarget.cpp +++ b/src/plugins/genericprojectmanager/generictarget.cpp @@ -137,7 +137,7 @@ GenericTarget *GenericTargetFactory::create(ProjectExplorer::Project *parent, co bc->setDisplayName("all"); GenericMakeStep *makeStep = new GenericMakeStep(bc); - bc->insertBuildStep(0, makeStep); + bc->insertStep(ProjectExplorer::Build, 0, makeStep); makeStep->setBuildTarget("all", /* on = */ true); diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index cb14f384359..62ff6475235 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -39,20 +39,20 @@ using namespace ProjectExplorer; namespace { -IBuildStepFactory *findCloneFactory(BuildConfiguration *parent, BuildStep *source) +IBuildStepFactory *findCloneFactory(BuildConfiguration *parent, StepType type, BuildStep *source) { QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>(); foreach(IBuildStepFactory *factory, factories) - if (factory->canClone(parent, source)) + if (factory->canClone(parent, type, source)) return factory; return 0; } -IBuildStepFactory *findRestoreFactory(BuildConfiguration *parent, const QVariantMap &map) +IBuildStepFactory *findRestoreFactory(BuildConfiguration *parent, StepType type, const QVariantMap &map) { QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>(); foreach(IBuildStepFactory *factory, factories) - if (factory->canRestore(parent, map)) + if (factory->canRestore(parent, type, map)) return factory; return 0; } @@ -85,19 +85,20 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc BuildConfiguration::~BuildConfiguration() { - qDeleteAll(m_buildSteps); - qDeleteAll(m_cleanSteps); + for (int i = 0; i < LastStepType; ++i) { + qDeleteAll(m_steps[i]); + } } QVariantMap BuildConfiguration::toMap() const { QVariantMap map(ProjectConfiguration::toMap()); - map.insert(QLatin1String(BUILD_STEPS_COUNT_KEY), m_buildSteps.count()); - for (int i = 0; i < m_buildSteps.count(); ++i) - map.insert(QString::fromLatin1(BUILD_STEPS_PREFIX) + QString::number(i), m_buildSteps.at(i)->toMap()); - map.insert(QLatin1String(CLEAN_STEPS_COUNT_KEY), m_cleanSteps.count()); - for (int i = 0; i < m_cleanSteps.count(); ++i) - map.insert(QString::fromLatin1(CLEAN_STEPS_PREFIX) + QString::number(i), m_cleanSteps.at(i)->toMap()); + map.insert(QLatin1String(BUILD_STEPS_COUNT_KEY), m_steps[Build].count()); + for (int i = 0; i < m_steps[Build].count(); ++i) + map.insert(QString::fromLatin1(BUILD_STEPS_PREFIX) + QString::number(i), m_steps[Build].at(i)->toMap()); + map.insert(QLatin1String(CLEAN_STEPS_COUNT_KEY), m_steps[Clean].count()); + for (int i = 0; i < m_steps[Clean].count(); ++i) + map.insert(QString::fromLatin1(CLEAN_STEPS_PREFIX) + QString::number(i), m_steps[Clean].at(i)->toMap()); map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), m_clearSystemEnvironment); map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), EnvironmentItem::toStringList(m_userEnvironmentChanges)); @@ -107,21 +108,15 @@ QVariantMap BuildConfiguration::toMap() const void BuildConfiguration::cloneSteps(BuildConfiguration *source) { Q_ASSERT(source); - foreach (BuildStep *originalbs, source->buildSteps()) { - IBuildStepFactory *factory(findCloneFactory(this, originalbs)); - if (!factory) - continue; - BuildStep *clonebs(factory->clone(this, originalbs)); - if (clonebs) - m_buildSteps.append(clonebs); - } - foreach (BuildStep *originalcs, source->cleanSteps()) { - IBuildStepFactory *factory = findCloneFactory(this, originalcs); - if (!factory) - continue; - BuildStep *clonecs = factory->clone(this, originalcs); - if (clonecs) - m_cleanSteps.append(clonecs); + for (int i = 0; i < LastStepType; ++i) { + foreach (BuildStep *originalbs, source->steps(StepType(i))) { + IBuildStepFactory *factory(findCloneFactory(this, StepType(i), originalbs)); + if (!factory) + continue; + BuildStep *clonebs(factory->clone(this, StepType(i), originalbs)); + if (clonebs) + m_steps[i].append(clonebs); + } } } @@ -139,17 +134,17 @@ bool BuildConfiguration::fromMap(const QVariantMap &map) qWarning() << "No buildstep data found (continuing)."; continue; } - IBuildStepFactory *factory(findRestoreFactory(this, bsData)); + IBuildStepFactory *factory(findRestoreFactory(this, Build, bsData)); if (!factory) { qWarning() << "No factory for buildstep found (continuing)."; continue; } - BuildStep *bs(factory->restore(this, bsData)); + BuildStep *bs(factory->restore(this, Build, bsData)); if (!bs) { qWarning() << "Restoration of buildstep failed (continuing)."; continue; } - insertBuildStep(m_buildSteps.count(), bs); + insertStep(Build, m_steps[Build].count(), bs); } maxI = map.value(QLatin1String(CLEAN_STEPS_COUNT_KEY), 0).toInt(); @@ -161,17 +156,17 @@ bool BuildConfiguration::fromMap(const QVariantMap &map) qWarning() << "No cleanstep data found for (continuing)."; continue; } - IBuildStepFactory *factory(findRestoreFactory(this, bsData)); + IBuildStepFactory *factory(findRestoreFactory(this, Clean, bsData)); if (!factory) { qWarning() << "No factory for cleanstep found (continuing)."; continue; } - BuildStep *bs(factory->restore(this, bsData)); + BuildStep *bs(factory->restore(this, Clean, bsData)); if (!bs) { qWarning() << "Restoration of cleanstep failed (continuing)."; continue; } - insertCleanStep(m_cleanSteps.count(), bs); + insertStep(Clean, m_steps[Clean].count(), bs); } m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool(); @@ -180,51 +175,32 @@ bool BuildConfiguration::fromMap(const QVariantMap &map) return true; } -QList<BuildStep *> BuildConfiguration::buildSteps() const +QList<BuildStep *> BuildConfiguration::steps(StepType type) const { - return m_buildSteps; + Q_ASSERT(type >= 0 && type < LastStepType); + return m_steps[type]; } -void BuildConfiguration::insertBuildStep(int position, BuildStep *step) +void BuildConfiguration::insertStep(StepType type, int position, BuildStep *step) { - m_buildSteps.insert(position, step); + Q_ASSERT(type >= 0 && type < LastStepType); + m_steps[type].insert(position, step); } -void BuildConfiguration::removeBuildStep(int position) +void BuildConfiguration::removeStep(StepType type, int position) { - delete m_buildSteps.at(position); - m_buildSteps.removeAt(position); + Q_ASSERT(type >= 0 && type < LastStepType); + delete m_steps[type].at(position); + m_steps[type].removeAt(position); } -void BuildConfiguration::moveBuildStepUp(int position) +void BuildConfiguration::moveStepUp(StepType type, int position) { - if (position <= 0 || m_buildSteps.size() <= 1) + Q_ASSERT(type >= 0 && type < LastStepType); + if (position <= 0 || m_steps[type].size() <= 1) return; - m_buildSteps.swap(position - 1, position); - -} - -QList<BuildStep *> BuildConfiguration::cleanSteps() const -{ - return m_cleanSteps; -} + m_steps[type].swap(position - 1, position); -void BuildConfiguration::insertCleanStep(int position, BuildStep *step) -{ - m_cleanSteps.insert(position, step); -} - -void BuildConfiguration::removeCleanStep(int position) -{ - delete m_cleanSteps.at(position); - m_cleanSteps.removeAt(position); -} - -void BuildConfiguration::moveCleanStepUp(int position) -{ - if (position <= 0 || m_cleanSteps.size() <= 1) - return; - m_cleanSteps.swap(position - 1, position); } Target *BuildConfiguration::target() const diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index e391e03877f..c0bc765771c 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -53,15 +53,10 @@ public: // ctors are protected virtual ~BuildConfiguration(); - QList<BuildStep *> buildSteps() const; - void insertBuildStep(int position, BuildStep *step); - void removeBuildStep(int position); - void moveBuildStepUp(int position); - - QList<BuildStep *> cleanSteps() const; - void insertCleanStep(int position, BuildStep *step); - void removeCleanStep(int position); - void moveCleanStepUp(int position); + QList<BuildStep *> steps(StepType type) const; + void insertStep(StepType type, int position, BuildStep *step); + void removeStep(StepType type, int position); + void moveStepUp(StepType type, int position); virtual QString buildDirectory() const = 0; @@ -90,8 +85,7 @@ protected: virtual bool fromMap(const QVariantMap &map); private: - QList<BuildStep *> m_buildSteps; - QList<BuildStep *> m_cleanSteps; + QList<BuildStep *> m_steps[LastStepType]; Target *m_target; bool m_clearSystemEnvironment; diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 09f940f5030..3cef5471dbe 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -401,7 +401,7 @@ void BuildManager::buildProjects(const QList<BuildConfiguration *> &configuratio { QList<BuildStep *> steps; foreach(BuildConfiguration *bc, configurations) - steps.append(bc->buildSteps()); + steps.append(bc->steps(Build)); bool success = buildQueueAppend(steps); if (!success) { @@ -418,7 +418,7 @@ void BuildManager::cleanProjects(const QList<BuildConfiguration *> &configuratio { QList<BuildStep *> steps; foreach(BuildConfiguration *bc, configurations) - steps.append(bc->cleanSteps()); + steps.append(bc->steps(Clean)); bool success = buildQueueAppend(steps); if (!success) { diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index a50d1a530aa..deaac215133 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -292,8 +292,8 @@ void BuildSettingsWidget::updateBuildSettings() BuildConfigWidget *generalConfigWidget = m_target->project()->createConfigWidget(); addSubWidget(generalConfigWidget->displayName(), generalConfigWidget); - addSubWidget(tr("Build Steps"), new BuildStepsPage(m_target, false)); - addSubWidget(tr("Clean Steps"), new BuildStepsPage(m_target, true)); + addSubWidget(tr("Build Steps"), new BuildStepsPage(m_target, Build)); + addSubWidget(tr("Clean Steps"), new BuildStepsPage(m_target, Clean)); QList<BuildConfigWidget *> subConfigWidgets = m_target->project()->subConfigWidgets(); foreach (BuildConfigWidget *subConfigWidget, subConfigWidgets) diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 9f5f8629348..d5d5fa3a541 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -38,6 +38,11 @@ #include <QtGui/QWidget> namespace ProjectExplorer { + +enum StepType { Build = 0, + Clean = 1, + LastStepType = 2}; + class BuildConfiguration; /* @@ -122,17 +127,17 @@ public: virtual ~IBuildStepFactory(); // used to show the list of possible additons to a target, returns a list of types - virtual QStringList availableCreationIds(BuildConfiguration *parent) const = 0; + virtual QStringList availableCreationIds(BuildConfiguration *parent, StepType type) const = 0; // used to translate the types to names to display to the user virtual QString displayNameForId(const QString &id) const = 0; - virtual bool canCreate(BuildConfiguration *parent, const QString &id) const = 0; - virtual BuildStep *create(BuildConfiguration *parent, const QString &id) = 0; + virtual bool canCreate(BuildConfiguration *parent, StepType type, const QString &id) const = 0; + virtual BuildStep *create(BuildConfiguration *parent, StepType type, const QString &id) = 0; // used to recreate the runConfigurations when restoring settings - virtual bool canRestore(BuildConfiguration *parent, const QVariantMap &map) const = 0; - virtual BuildStep *restore(BuildConfiguration *parent, const QVariantMap &map) = 0; - virtual bool canClone(BuildConfiguration *parent, BuildStep *product) const = 0; - virtual BuildStep *clone(BuildConfiguration *parent, BuildStep *product) = 0; + virtual bool canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const = 0; + virtual BuildStep *restore(BuildConfiguration *parent, StepType type, const QVariantMap &map) = 0; + virtual bool canClone(BuildConfiguration *parent, StepType type, BuildStep *product) const = 0; + virtual BuildStep *clone(BuildConfiguration *parent, StepType type, BuildStep *product) = 0; }; class PROJECTEXPLORER_EXPORT BuildConfigWidget diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 349e938c82e..02dc875ee80 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -46,9 +46,9 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; -BuildStepsPage::BuildStepsPage(Target *target, bool clean) : +BuildStepsPage::BuildStepsPage(Target *target, StepType type) : BuildConfigWidget(), - m_clean(clean), + m_type(type), m_addButton(0), m_leftMargin(-1) { @@ -79,7 +79,10 @@ void BuildStepsPage::updateSummary() QString BuildStepsPage::displayName() const { - return m_clean ? tr("Clean Steps") : tr("Build Steps"); + if (m_type == Build) + return tr("Build Steps"); + else + return tr("Clean Steps"); } void BuildStepsPage::init(BuildConfiguration *bc) @@ -96,7 +99,7 @@ void BuildStepsPage::init(BuildConfiguration *bc) m_configuration = bc; - const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps(); + const QList<BuildStep *> &steps = m_configuration->steps(m_type); int i = 0; foreach (BuildStep *bs, steps) { addBuildStepWidget(i, bs); @@ -119,7 +122,7 @@ void BuildStepsPage::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::instance()->getObjects<IBuildStepFactory>(); foreach (IBuildStepFactory *factory, factories) { - QStringList ids = factory->availableCreationIds(m_configuration); + QStringList ids = factory->availableCreationIds(m_configuration, m_type); foreach (const QString &id, ids) { map.insert(factory->displayNameForId(id), QPair<QString, IBuildStepFactory *>(id, factory)); } @@ -207,9 +210,9 @@ void BuildStepsPage::addBuildStep() { if (QAction *action = qobject_cast<QAction *>(sender())) { QPair<QString, IBuildStepFactory *> pair = m_addBuildStepHash.value(action); - BuildStep *newStep = pair.second->create(m_configuration, pair.first); - int pos = m_clean ? m_configuration->cleanSteps().count() : m_configuration->buildSteps().count(); - m_clean ? m_configuration->insertCleanStep(pos, newStep) : m_configuration->insertBuildStep(pos, newStep); + BuildStep *newStep = pair.second->create(m_configuration, m_type, pair.first); + int pos = m_configuration->steps(m_type).count(); + m_configuration->insertStep(m_type, pos, newStep); addBuildStepWidget(pos, newStep); const BuildStepsWidgetStruct s = m_buildSteps.at(pos); @@ -222,7 +225,7 @@ void BuildStepsPage::addBuildStep() void BuildStepsPage::stepMoveUp(int pos) { - m_clean ? m_configuration->moveCleanStepUp(pos) : m_configuration->moveBuildStepUp(pos); + m_configuration->moveStepUp(m_type, pos); m_vbox->insertWidget(pos - 1, m_buildSteps.at(pos).detailsWidget); @@ -242,12 +245,11 @@ void BuildStepsPage::stepRemove(int pos) delete s.widget; delete s.detailsWidget; m_buildSteps.removeAt(pos); - m_clean ? m_configuration->removeCleanStep(pos) : m_configuration->removeBuildStep(pos); + m_configuration->removeStep(m_type, pos); updateBuildStepButtonsState(); - bool hasSteps(m_clean ? m_configuration->cleanSteps().isEmpty() : - m_configuration->buildSteps().isEmpty()); + bool hasSteps = m_configuration->steps(m_type).isEmpty(); m_noStepsLabel->setVisible(hasSteps); } @@ -282,7 +284,7 @@ void BuildStepsPage::setupUi() QHBoxLayout *hboxLayout = new QHBoxLayout(); hboxLayout->setContentsMargins(m_leftMargin, 4, 0, 0); m_addButton = new QPushButton(this); - m_addButton->setText(m_clean ? tr("Add clean step") : tr("Add build step")); + m_addButton->setText(m_type == Clean ? tr("Add clean step") : tr("Add build step")); m_addButton->setMenu(new QMenu(this)); hboxLayout->addWidget(m_addButton); @@ -300,7 +302,7 @@ void BuildStepsPage::setupUi() void BuildStepsPage::updateBuildStepButtonsState() { - const QList<BuildStep *> &steps = m_clean ? m_configuration->cleanSteps() : m_configuration->buildSteps(); + const QList<BuildStep *> &steps = m_configuration->steps(m_type); for(int i = 0; i < m_buildSteps.count(); ++i) { BuildStepsWidgetStruct s = m_buildSteps.at(i); s.removeButton->setEnabled(!steps.at(i)->immutable()); diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h index 765ed51dae1..689eb5d4906 100644 --- a/src/plugins/projectexplorer/buildstepspage.h +++ b/src/plugins/projectexplorer/buildstepspage.h @@ -31,6 +31,7 @@ #define BUILDSTEPSPAGE_H #include "buildstep.h" +#include "buildconfiguration.h" #include <utils/detailswidget.h> QT_BEGIN_NAMESPACE @@ -66,7 +67,7 @@ class BuildStepsPage : public BuildConfigWidget Q_OBJECT public: - explicit BuildStepsPage(Target *target, bool clean = false); + explicit BuildStepsPage(Target *target, StepType type); virtual ~BuildStepsPage(); QString displayName() const; @@ -87,7 +88,7 @@ private: BuildConfiguration * m_configuration; QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash; - bool m_clean; + StepType m_type; QList<BuildStepsWidgetStruct> m_buildSteps; diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index c1f19087ea0..7ea0c27f651 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -185,40 +185,41 @@ ProcessStepFactory::~ProcessStepFactory() { } -bool ProcessStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const +bool ProcessStepFactory::canCreate(BuildConfiguration *parent, StepType type, const QString &id) const { Q_UNUSED(parent); + Q_UNUSED(type); return id == QLatin1String(PROCESS_STEP_ID); } -BuildStep *ProcessStepFactory::create(BuildConfiguration *parent, const QString &id) +BuildStep *ProcessStepFactory::create(BuildConfiguration *parent, StepType type, const QString &id) { - if (!canCreate(parent, id)) + if (!canCreate(parent, type, id)) return 0; return new ProcessStep(parent); } -bool ProcessStepFactory::canClone(BuildConfiguration *parent, BuildStep *bs) const +bool ProcessStepFactory::canClone(BuildConfiguration *parent, StepType type, BuildStep *bs) const { - return canCreate(parent, bs->id()); + return canCreate(parent, type, bs->id()); } -BuildStep *ProcessStepFactory::clone(BuildConfiguration *parent, BuildStep *bs) +BuildStep *ProcessStepFactory::clone(BuildConfiguration *parent, StepType type, BuildStep *bs) { - if (!canClone(parent, bs)) + if (!canClone(parent, type, bs)) return 0; return new ProcessStep(parent, static_cast<ProcessStep *>(bs)); } -bool ProcessStepFactory::canRestore(BuildConfiguration *parent, const QVariantMap &map) const +bool ProcessStepFactory::canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); - return canCreate(parent, id); + return canCreate(parent, type, id); } -BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, const QVariantMap &map) +BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, StepType type, const QVariantMap &map) { - if (!canRestore(parent, map)) + if (!canRestore(parent, type, map)) return 0; ProcessStep *bs(new ProcessStep(parent)); @@ -228,9 +229,10 @@ BuildStep *ProcessStepFactory::restore(BuildConfiguration *parent, const QVarian return 0; } -QStringList ProcessStepFactory::availableCreationIds(BuildConfiguration *parent) const +QStringList ProcessStepFactory::availableCreationIds(BuildConfiguration *parent, StepType type) const { - Q_UNUSED(parent) + Q_UNUSED(parent); + Q_UNUSED(type); return QStringList() << QLatin1String(PROCESS_STEP_ID); } QString ProcessStepFactory::displayNameForId(const QString &id) const diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h index 611009a74dd..88c4e1bb6b9 100644 --- a/src/plugins/projectexplorer/processstep.h +++ b/src/plugins/projectexplorer/processstep.h @@ -46,15 +46,15 @@ public: ProcessStepFactory(); ~ProcessStepFactory(); - virtual QStringList availableCreationIds(BuildConfiguration *parent) const; + virtual QStringList availableCreationIds(BuildConfiguration *parent, StepType type) const; virtual QString displayNameForId(const QString &id) const; - virtual bool canCreate(BuildConfiguration *parent, const QString &id) const; - virtual BuildStep *create(BuildConfiguration *parent, const QString &id); - virtual bool canRestore(BuildConfiguration *parent, const QVariantMap &map) const; - virtual BuildStep *restore(BuildConfiguration *parent, const QVariantMap &map); - virtual bool canClone(BuildConfiguration *parent, BuildStep *product) const; - virtual BuildStep *clone(BuildConfiguration *parent, BuildStep *product); + virtual bool canCreate(BuildConfiguration *parent, StepType type, const QString &id) const; + virtual BuildStep *create(BuildConfiguration *parent, StepType type, const QString &id); + virtual bool canRestore(BuildConfiguration *parent, StepType type, const QVariantMap &map) const; + virtual BuildStep *restore(BuildConfiguration *parent, StepType type, const QVariantMap &map); + virtual bool canClone(BuildConfiguration *parent, StepType type, BuildStep *product) const; + virtual BuildStep *clone(BuildConfiguration *parent, StepType type, BuildStep *product); }; class ProcessStep : public ProjectExplorer::AbstractProcessStep diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index a8e87ee682e..f2f27a20e5f 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -40,7 +40,6 @@ #include "target.h" #include "projecttreewidget.h" #include "runconfiguration.h" -#include "buildconfiguration.h" #include "buildsettingspropertiespage.h" #include "runsettingspropertiespage.h" #include "targetsettingspanel.h" diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 0d65bb12eec..1775e85255a 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -328,41 +328,42 @@ MakeStepFactory::~MakeStepFactory() { } -bool MakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const +bool MakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const { + Q_UNUSED(type) if (!qobject_cast<Qt4BuildConfiguration *>(parent)) return false; return (id == QLatin1String(MAKESTEP_BS_ID)); } -ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, const QString &id) +ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) { - if (!canCreate(parent, id)) + if (!canCreate(parent, type, id)) return 0; return new MakeStep(parent); } -bool MakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const +bool MakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const { - return canCreate(parent, source->id()); + return canCreate(parent, type, source->id()); } -ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) +ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) { - if (!canClone(parent, source)) + if (!canClone(parent, type, source)) return 0; return new MakeStep(parent, static_cast<MakeStep *>(source)); } -bool MakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const +bool MakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); - return canCreate(parent, id); + return canCreate(parent, type, id); } -ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) +ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) { - if (!canRestore(parent, map)) + if (!canRestore(parent, type, map)) return 0; MakeStep *bs(new MakeStep(parent)); if (bs->fromMap(map)) @@ -371,8 +372,9 @@ ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::BuildConfi return 0; } -QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const { + Q_UNUSED(type) if (qobject_cast<Qt4BuildConfiguration *>(parent)) return QStringList() << QLatin1String(MAKESTEP_BS_ID); return QStringList(); diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index 2805ea857d1..fabbf26c871 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -54,14 +54,14 @@ public: explicit MakeStepFactory(QObject *parent = 0); virtual ~MakeStepFactory(); - bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id); - bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const; - ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source); - bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const; - ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map); - - QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const; + bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const; + ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id); + bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const; + ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source); + bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const; + ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map); + + QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const; QString displayNameForId(const QString &id) const; }; } //namespace Internal diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 7652949b81e..508e6146b9a 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -402,45 +402,47 @@ QMakeStepFactory::~QMakeStepFactory() { } -bool QMakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const +bool QMakeStepFactory::canCreate(BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const { + if (type != ProjectExplorer::Build) + return false; if (!qobject_cast<Qt4BuildConfiguration *>(parent)) return false; return (id == QLatin1String(QMAKE_BS_ID)); } -ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *parent, const QString &id) +ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *parent, ProjectExplorer::StepType type,const QString &id) { - if (!canCreate(parent, id)) + if (!canCreate(parent, type, id)) return 0; Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); Q_ASSERT(bc); return new QMakeStep(bc); } -bool QMakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const +bool QMakeStepFactory::canClone(BuildConfiguration *parent, ProjectExplorer::StepType type, BuildStep *source) const { - return canCreate(parent, source->id()); + return canCreate(parent, type, source->id()); } -ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) +ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) { - if (!canClone(parent, source)) + if (!canClone(parent, type, source)) return 0; Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); Q_ASSERT(bc); return new QMakeStep(bc, qobject_cast<QMakeStep *>(source)); } -bool QMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const +bool QMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const { QString id(ProjectExplorer::idFromMap(map)); - return canCreate(parent, id); + return canCreate(parent, type, id); } -ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) +ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) { - if (!canRestore(parent, map)) + if (!canRestore(parent, type, map)) return 0; Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); Q_ASSERT(bc); @@ -451,11 +453,12 @@ ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConf return 0; } -QStringList QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +QStringList QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const { - if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(parent)) - if (!bc->qmakeStep()) - return QStringList() << QLatin1String(QMAKE_BS_ID); + if (type == Build) + if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(parent)) + if (!bc->qmakeStep()) + return QStringList() << QLatin1String(QMAKE_BS_ID); return QStringList(); } diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index c90606f7730..436183ec001 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -55,13 +55,13 @@ class QMakeStepFactory : public ProjectExplorer::IBuildStepFactory public: explicit QMakeStepFactory(QObject *parent = 0); virtual ~QMakeStepFactory(); - bool canCreate(ProjectExplorer::BuildConfiguration *parent, const QString & id) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, const QString &id); - bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *bs) const; - ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *bs); - bool canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const; - ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map); - QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc) const; + bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QString & id) const; + ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QString &id); + bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,ProjectExplorer::BuildStep *bs) const; + ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,ProjectExplorer::BuildStep *bs); + bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QVariantMap &map) const; + ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type,const QVariantMap &map); + QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, ProjectExplorer::StepType type) const; QString displayNameForId(const QString &id) const; }; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 5254dab4af6..2ac72ee3486 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -362,7 +362,7 @@ void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUser QMakeStep *Qt4BuildConfiguration::qmakeStep() const { QMakeStep *qs = 0; - foreach(BuildStep *bs, buildSteps()) + foreach(BuildStep *bs, steps(ProjectExplorer::Build)) if ((qs = qobject_cast<QMakeStep *>(bs)) != 0) return qs; return 0; @@ -371,7 +371,7 @@ QMakeStep *Qt4BuildConfiguration::qmakeStep() const MakeStep *Qt4BuildConfiguration::makeStep() const { MakeStep *qs = 0; - foreach(BuildStep *bs, buildSteps()) + foreach(BuildStep *bs, steps(ProjectExplorer::Build)) if ((qs = qobject_cast<MakeStep *>(bs)) != 0) return qs; return 0; diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 1ce701fa9b0..856fd4b5e6b 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -244,15 +244,15 @@ Qt4BuildConfiguration *Qt4Target::addQt4BuildConfiguration(QString displayName, bc->setDisplayName(displayName); QMakeStep *qmakeStep = new QMakeStep(bc); - bc->insertBuildStep(0, qmakeStep); + bc->insertStep(ProjectExplorer::Build, 0, qmakeStep); MakeStep *makeStep = new MakeStep(bc); - bc->insertBuildStep(1, makeStep); + bc->insertStep(ProjectExplorer::Build, 1, makeStep); MakeStep* cleanStep = new MakeStep(bc); cleanStep->setClean(true); cleanStep->setUserArguments(QStringList() << "clean"); - bc->insertCleanStep(0, cleanStep); + bc->insertStep(ProjectExplorer::Clean, 0, cleanStep); if (!additionalArguments.isEmpty()) qmakeStep->setUserArguments(additionalArguments); -- GitLab