diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2010-01-14 17:41:29 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2010-02-01 12:23:12 +0100 |
commit | 1726688434b4f974d0179d4ec979ce00f208c9b2 (patch) | |
tree | 502f06910adc0744a1fb13b4f8f1d0d01731b844 /src/plugins/cmakeprojectmanager | |
parent | c410d268dbe05c26563f4beceab99e2420f7a521 (diff) | |
download | qt-creator-1726688434b4f974d0179d4ec979ce00f208c9b2.tar.gz |
Make use of ProjectConfiguration class in BuildSteps
* Use new BuildSteps interface (as seen in ProjectConfiguration).
* Use new factory to construct/clone/restore them.
Reviewed-by: dt
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r-- | src/plugins/cmakeprojectmanager/makestep.cpp | 140 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/makestep.h | 41 |
2 files changed, 121 insertions, 60 deletions
diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index cd37ee9745..0c3b09843d 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -26,7 +26,9 @@ ** contact the sales department at http://qt.nokia.com/contact. ** **************************************************************************/ + #include "makestep.h" + #include "cmakeprojectconstants.h" #include "cmakeproject.h" #include "cmakebuildconfiguration.h" @@ -44,25 +46,48 @@ using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; using namespace ProjectExplorer; +namespace { +const char * const MS_ID("CMakeProjectManager.MakeStep"); + +const char * const CLEAN_KEY("CMakeProjectManager.MakeStep.Clean"); +const char * const BUILD_TARGETS_KEY("CMakeProjectManager.MakeStep.BuildTargets"); +const char * const ADDITIONAL_ARGUMENTS_KEY("CMakeProjectManager.MakeStep.AdditionalArguments"); +} + +// TODO: Move progress information into an IOutputParser! + MakeStep::MakeStep(BuildConfiguration *bc) : - AbstractProcessStep(bc), m_clean(false), m_futureInterface(0) + AbstractProcessStep(bc, QLatin1String(MS_ID)), m_clean(false), + m_futureInterface(0) { - m_percentProgress = QRegExp("^\\[\\s*(\\d*)%\\]"); + ctor(); +} + +MakeStep::MakeStep(BuildConfiguration *bc, const QString &id) : + AbstractProcessStep(bc, id), m_clean(false), + m_futureInterface(0) +{ + ctor(); } -MakeStep::MakeStep(MakeStep *bs, BuildConfiguration *bc) : - AbstractProcessStep(bs, bc), +MakeStep::MakeStep(BuildConfiguration *bc, MakeStep *bs) : + AbstractProcessStep(bc, bs), m_clean(bs->m_clean), m_futureInterface(0), m_buildTargets(bs->m_buildTargets), m_additionalArguments(bs->m_buildTargets) { + ctor(); +} +void MakeStep::ctor() +{ + m_percentProgress = QRegExp("^\\[\\s*(\\d*)%\\]"); + setDisplayName(tr("Make", "CMakeProjectManager::MakeStep display name.")); } MakeStep::~MakeStep() { - } CMakeBuildConfiguration *MakeStep::cmakeBuildConfiguration() const @@ -75,31 +100,25 @@ void MakeStep::setClean(bool clean) m_clean = clean; } -void MakeStep::restoreFromGlobalMap(const QMap<QString, QVariant> &map) +QVariantMap MakeStep::toMap() const { - if (map.value("clean").isValid() && map.value("clean").toBool()) - m_clean = true; - AbstractProcessStep::restoreFromGlobalMap(map); + QVariantMap map(AbstractProcessStep::toMap()); + map.insert(QLatin1String(CLEAN_KEY), m_clean); + map.insert(QLatin1String(BUILD_TARGETS_KEY), m_buildTargets); + map.insert(QLatin1String(ADDITIONAL_ARGUMENTS_KEY), m_additionalArguments); + return map; } -void MakeStep::restoreFromLocalMap(const QMap<QString, QVariant> &map) +bool MakeStep::fromMap(const QVariantMap &map) { - m_buildTargets = map["buildTargets"].toStringList(); - m_additionalArguments = map["additionalArguments"].toStringList(); - if (map.value("clean").isValid() && map.value("clean").toBool()) - m_clean = true; - AbstractProcessStep::restoreFromLocalMap(map); -} + m_clean = map.value(QLatin1String(CLEAN_KEY)).toBool(); + m_buildTargets = map.value(QLatin1String(BUILD_TARGETS_KEY)).toStringList(); + m_additionalArguments = map.value(QLatin1String(ADDITIONAL_ARGUMENTS_KEY)).toStringList(); -void MakeStep::storeIntoLocalMap(QMap<QString, QVariant> &map) -{ - map["buildTargets"] = m_buildTargets; - map["additionalArguments"] = m_additionalArguments; - if (m_clean) - map["clean"] = true; - AbstractProcessStep::storeIntoLocalMap(map); + return BuildStep::fromMap(map); } + bool MakeStep::init() { CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); @@ -132,16 +151,6 @@ void MakeStep::run(QFutureInterface<bool> &fi) m_futureInterface = 0; } -QString MakeStep::id() -{ - return Constants::MAKESTEP; -} - -QString MakeStep::displayName() -{ - return QLatin1String("Make"); -} - BuildStepConfigWidget *MakeStep::createConfigWidget() { return new MakeStepConfigWidget(this); @@ -238,7 +247,7 @@ void MakeStepConfigWidget::itemChanged(QListWidgetItem *item) QString MakeStepConfigWidget::displayName() const { - return "Make"; + return tr("Make", "CMakeProjectManager::MakeStepConfigWidget display name."); } void MakeStepConfigWidget::init() @@ -298,31 +307,68 @@ QString MakeStepConfigWidget::summaryText() const // MakeStepFactory // -bool MakeStepFactory::canCreate(const QString &id) const +MakeStepFactory::MakeStepFactory(QObject *parent) : + ProjectExplorer::IBuildStepFactory(parent) { - return (Constants::MAKESTEP == id); } -BuildStep *MakeStepFactory::create(BuildConfiguration *bc, const QString &id) const +MakeStepFactory::~MakeStepFactory() { - Q_ASSERT(id == Constants::MAKESTEP); - return new MakeStep(bc); } -BuildStep *MakeStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) const +bool MakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const { - return new MakeStep(static_cast<MakeStep *>(bs), bc); + if (!qobject_cast<CMakeBuildConfiguration *>(parent)) + return false; + return QLatin1String(MS_ID) == id; } -QStringList MakeStepFactory::canCreateForBuildConfiguration(BuildConfiguration *bc) const +BuildStep *MakeStepFactory::create(BuildConfiguration *parent, const QString &id) { - Q_UNUSED(bc); - return QStringList(); + if (!canCreate(parent, id)) + return 0; + return new MakeStep(parent); } -QString MakeStepFactory::displayNameForId(const QString &id) const +bool MakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const +{ + return canCreate(parent, source->id()); +} + +BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, BuildStep *source) +{ + if (!canClone(parent, source)) + return 0; + return new MakeStep(parent, static_cast<MakeStep *>(source)); +} + +bool MakeStepFactory::canRestore(BuildConfiguration *parent, const QVariantMap &map) const { - Q_UNUSED(id); - return "Make"; + QString id(ProjectExplorer::idFromMap(map)); + return canCreate(parent, id); } +BuildStep *MakeStepFactory::restore(BuildConfiguration *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; +} + +QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +{ + if (!qobject_cast<CMakeBuildConfiguration *>(parent)) + return QStringList(); + return QStringList() << QLatin1String(MS_ID); +} + +QString MakeStepFactory::displayNameForId(const QString &id) const +{ + if (id == QLatin1String(MS_ID)) + return tr("Make", "Display name for CMakeProjectManager::MakeStep id."); + return QString(); +} diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h index a2ab1888dc..2a54a0e0e3 100644 --- a/src/plugins/cmakeprojectmanager/makestep.h +++ b/src/plugins/cmakeprojectmanager/makestep.h @@ -42,16 +42,18 @@ namespace CMakeProjectManager { namespace Internal { class CMakeBuildConfiguration; +class MakeStepFactory; class MakeStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT + friend class MakeStepFactory; friend class MakeStepConfigWidget; // TODO remove // This is for modifying internal data + public: MakeStep(ProjectExplorer::BuildConfiguration *bc); - MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc); - ~MakeStep(); + virtual ~MakeStep(); CMakeBuildConfiguration *cmakeBuildConfiguration() const; @@ -59,8 +61,6 @@ public: virtual void run(QFutureInterface<bool> &fi); - virtual QString id(); - virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; bool buildsTarget(const QString &target) const; @@ -68,17 +68,22 @@ public: QStringList additionalArguments() const; void setAdditionalArguments(const QStringList &list); - virtual void restoreFromGlobalMap(const QMap<QString, QVariant> &map); - - virtual void restoreFromLocalMap(const QMap<QString, QVariant> &map); - virtual void storeIntoLocalMap(QMap<QString, QVariant> &map); - void setClean(bool clean); + QVariantMap toMap() const; + protected: + MakeStep(ProjectExplorer::BuildConfiguration *bc, MakeStep *bs); + MakeStep(ProjectExplorer::BuildConfiguration *bc, const QString &id); + + bool fromMap(const QVariantMap &map); + // For parsing [ 76%] virtual void stdOut(const QString &line); + private: + void ctor(); + bool m_clean; QRegExp m_percentProgress; QFutureInterface<bool> *m_futureInterface; @@ -108,10 +113,20 @@ private: class MakeStepFactory : public ProjectExplorer::IBuildStepFactory { - virtual bool canCreate(const QString &id) const; - virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &id) const; - virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; - virtual QStringList canCreateForBuildConfiguration(ProjectExplorer::BuildConfiguration *bc) const; + Q_OBJECT + +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 QString displayNameForId(const QString &id) const; }; |