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/qt4projectmanager | |
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/qt4projectmanager')
-rw-r--r-- | src/plugins/qt4projectmanager/makestep.cpp | 129 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/makestep.h | 37 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qmakestep.cpp | 116 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qmakestep.h | 33 |
4 files changed, 205 insertions, 110 deletions
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 9166293ac1..3b791d1f21 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -43,24 +43,44 @@ using ExtensionSystem::PluginManager; using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; +namespace { +const char * const MAKESTEP_BS_ID("Qt4ProjectManager.MakeStep"); + +const char * const MAKE_ARGUMENTS_KEY("Qt4ProjectManager.MakeStep.MakeArguments"); +const char * const MAKE_COMMAND_KEY("Qt4ProjectManager.MakeStep.MakeCommand"); +const char * const CLEAN_KEY("Qt4ProjectManager.MakeStep.Clean"); +} + MakeStep::MakeStep(ProjectExplorer::BuildConfiguration *bc) : - AbstractProcessStep(bc), m_clean(false) + AbstractProcessStep(bc, QLatin1String(MAKESTEP_BS_ID)), + m_clean(false) { - + ctor(); } -MakeStep::MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc) : - AbstractProcessStep(bs, bc), +MakeStep::MakeStep(ProjectExplorer::BuildConfiguration *bc, MakeStep *bs) : + AbstractProcessStep(bc, bs), m_clean(bs->m_clean), m_userArgs(bs->m_userArgs), m_makeCmd(bs->m_makeCmd) { + ctor(); +} +MakeStep::MakeStep(ProjectExplorer::BuildConfiguration *bc, const QString &id) : + AbstractProcessStep(bc, id), + m_clean(false) +{ + ctor(); } -MakeStep::~MakeStep() +void MakeStep::ctor() { + setDisplayName(tr("Make", "Qt4 MakeStep display name.")); +} +MakeStep::~MakeStep() +{ } Qt4BuildConfiguration *MakeStep::qt4BuildConfiguration() const @@ -73,29 +93,22 @@ 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; - ProjectExplorer::AbstractProcessStep::restoreFromGlobalMap(map); + QVariantMap map(ProjectExplorer::AbstractProcessStep::toMap()); + map.insert(QLatin1String(MAKE_ARGUMENTS_KEY), m_userArgs); + map.insert(QLatin1String(MAKE_COMMAND_KEY), m_makeCmd); + map.insert(QLatin1String(CLEAN_KEY), m_clean); + return map; } -void MakeStep::restoreFromLocalMap(const QMap<QString, QVariant> &map) +bool MakeStep::fromMap(const QVariantMap &map) { - m_userArgs = map.value("makeargs").toStringList(); - m_makeCmd = map.value("makeCmd").toString(); - if (map.value("clean").isValid() && map.value("clean").toBool()) - m_clean = true; - ProjectExplorer::AbstractProcessStep::restoreFromLocalMap(map); -} + m_makeCmd = map.value(QLatin1String(MAKE_COMMAND_KEY)).toString(); + m_userArgs = map.value(QLatin1String(MAKE_ARGUMENTS_KEY)).toStringList(); + m_clean = map.value(QLatin1String(CLEAN_KEY)).toBool(); -void MakeStep::storeIntoLocalMap(QMap<QString, QVariant> &map) -{ - map["makeargs"] = m_userArgs; - map["makeCmd"] = m_makeCmd; - if (m_clean) - map["clean"] = true; - ProjectExplorer::AbstractProcessStep::storeIntoLocalMap(map); + return BuildStep::fromMap(map); } bool MakeStep::init() @@ -170,16 +183,6 @@ void MakeStep::run(QFutureInterface<bool> & fi) AbstractProcessStep::run(fi); } -QString MakeStep::id() -{ - return Constants::MAKESTEP; -} - -QString MakeStep::displayName() -{ - return QLatin1String("Make"); -} - bool MakeStep::immutable() const { return false; @@ -310,10 +313,11 @@ void MakeStepConfigWidget::makeArgumentsLineEdited() } /// -// MakeStep +// MakeStepFactory /// -MakeStepFactory::MakeStepFactory() +MakeStepFactory::MakeStepFactory(QObject *parent) : + ProjectExplorer::IBuildStepFactory(parent) { } @@ -321,32 +325,59 @@ MakeStepFactory::~MakeStepFactory() { } -bool MakeStepFactory::canCreate(const QString &id) const +bool MakeStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, const QString &id) const { - return (id == Constants::MAKESTEP); + if (!qobject_cast<Qt4BuildConfiguration *>(parent)) + return false; + return (id == QLatin1String(MAKESTEP_BS_ID)); } -ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *bc, const QString &id) const +ProjectExplorer::BuildStep *MakeStepFactory::create(ProjectExplorer::BuildConfiguration *parent, const QString &id) { - Q_UNUSED(id); - return new MakeStep(bc); + if (!canCreate(parent, id)) + return 0; + return new MakeStep(parent); } -ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const +bool MakeStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) const { - return new MakeStep(static_cast<MakeStep *>(bs), bc); + return canCreate(parent, source->id()); } -QStringList MakeStepFactory::canCreateForBuildConfiguration(ProjectExplorer::BuildConfiguration *pro) const +ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) { - if (qobject_cast<Qt4BuildConfiguration *>(pro)) - return QStringList() << Constants::MAKESTEP; - else - return QStringList(); + if (!canClone(parent, source)) + return 0; + return new MakeStep(parent, static_cast<MakeStep *>(source)); +} + +bool MakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const +{ + QString id(ProjectExplorer::idFromMap(map)); + return canCreate(parent, id); +} + +ProjectExplorer::BuildStep *MakeStepFactory::restore(ProjectExplorer::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<Qt4BuildConfiguration *>(parent)) + return QStringList() << QLatin1String(MAKESTEP_BS_ID); + return QStringList(); } QString MakeStepFactory::displayNameForId(const QString &id) const { - Q_UNUSED(id); - return tr("Make"); + if (id == QLatin1String(MAKESTEP_BS_ID)) + return tr("Make"); + return QString(); } diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index 2626acaf5f..f341bac6fb 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -49,13 +49,19 @@ class Qt4BuildConfiguration; class MakeStepFactory : public ProjectExplorer::IBuildStepFactory { Q_OBJECT + public: - MakeStepFactory(); + explicit MakeStepFactory(QObject *parent = 0); virtual ~MakeStepFactory(); - bool canCreate(const QString &id) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &id) const; - ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; - QStringList canCreateForBuildConfiguration(ProjectExplorer::BuildConfiguration *bc) const; + + 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; QString displayNameForId(const QString &id) const; }; } //namespace Internal @@ -65,33 +71,36 @@ class Qt4Project; class MakeStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT + friend class Internal::MakeStepFactory; friend class MakeStepConfigWidget; // TODO remove this // used to access internal stuff + public: - MakeStep(ProjectExplorer::BuildConfiguration *bc); - MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc); - ~MakeStep(); + explicit MakeStep(ProjectExplorer::BuildConfiguration *bc); + virtual ~MakeStep(); Internal::Qt4BuildConfiguration *qt4BuildConfiguration() const; virtual bool init(); virtual void run(QFutureInterface<bool> &); - virtual QString id(); - virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; QStringList userArguments(); void setUserArguments(const QStringList &arguments); void setClean(bool clean); - virtual void restoreFromGlobalMap(const QMap<QString, QVariant> &map); - - virtual void restoreFromLocalMap(const QMap<QString, QVariant> &map); - virtual void storeIntoLocalMap(QMap<QString, QVariant> &map); + QVariantMap toMap() const; signals: void userArgumentsChanged(); + +protected: + MakeStep(ProjectExplorer::BuildConfiguration *bc, MakeStep *bs); + MakeStep(ProjectExplorer::BuildConfiguration *bc, const QString &id); + virtual bool fromMap(const QVariantMap &map); + private: + void ctor(); bool m_clean; QStringList m_userArgs; QString m_makeCmd; diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 91d1663871..48d001ea77 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -46,16 +46,37 @@ using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; using namespace ProjectExplorer; -QMakeStep::QMakeStep(ProjectExplorer::BuildConfiguration *bc) : - AbstractProcessStep(bc), m_forced(false) +namespace { +const char * const QMAKE_BS_ID("QtProjectManager.QMakeBuildStep"); + +const char * const QMAKE_ARGUMENTS_KEY("QtProjectManager.QMakeBuildStep.QMakeArguments"); +} + +QMakeStep::QMakeStep(Qt4BuildConfiguration *bc) : + AbstractProcessStep(bc, QLatin1String(QMAKE_BS_ID)), + m_forced(false) { + ctor(); } -QMakeStep::QMakeStep(QMakeStep *bs, ProjectExplorer::BuildConfiguration *bc) : - AbstractProcessStep(bs, bc), +QMakeStep::QMakeStep(Qt4BuildConfiguration *bc, const QString &id) : + AbstractProcessStep(bc, id), + m_forced(false) +{ + ctor(); +} + +QMakeStep::QMakeStep(Qt4BuildConfiguration *bc, QMakeStep *bs) : + AbstractProcessStep(bc, bs), m_forced(false), m_userArgs(bs->m_userArgs) { + ctor(); +} + +void QMakeStep::ctor() +{ + setDisplayName(tr("QMake", "QMakeStep display name.")); } QMakeStep::~QMakeStep() @@ -172,16 +193,6 @@ void QMakeStep::run(QFutureInterface<bool> &fi) AbstractProcessStep::run(fi); } -QString QMakeStep::id() -{ - return QLatin1String(Constants::QMAKESTEP); -} - -QString QMakeStep::displayName() -{ - return QLatin1String("QMake"); -} - void QMakeStep::setForced(bool b) { m_forced = b; @@ -232,16 +243,18 @@ QStringList QMakeStep::userArguments() return m_userArgs; } -void QMakeStep::restoreFromLocalMap(const QMap<QString, QVariant> &map) +QVariantMap QMakeStep::toMap() const { - m_userArgs = map.value("qmakeArgs").toStringList(); - AbstractProcessStep::restoreFromLocalMap(map); + QVariantMap map(AbstractProcessStep::toMap()); + map.insert(QLatin1String(QMAKE_ARGUMENTS_KEY), m_userArgs); + return map; } -void QMakeStep::storeIntoLocalMap(QMap<QString, QVariant> &map) +bool QMakeStep::fromMap(const QVariantMap &map) { - map["qmakeArgs"] = m_userArgs; - AbstractProcessStep::storeIntoLocalMap(map); + m_userArgs = map.value(QLatin1String(QMAKE_ARGUMENTS_KEY)).toStringList(); + + return BuildStep::fromMap(map); } //// @@ -382,7 +395,8 @@ void QMakeStepConfigWidget::updateEffectiveQMakeCall() // QMakeStepFactory //// -QMakeStepFactory::QMakeStepFactory() +QMakeStepFactory::QMakeStepFactory(QObject *parent) : + ProjectExplorer::IBuildStepFactory(parent) { } @@ -390,34 +404,66 @@ QMakeStepFactory::~QMakeStepFactory() { } -bool QMakeStepFactory::canCreate(const QString &id) const +bool QMakeStepFactory::canCreate(BuildConfiguration *parent, const QString &id) const { - return (id == Constants::QMAKESTEP); + if (!qobject_cast<Qt4BuildConfiguration *>(parent)) + return false; + return (id == QLatin1String(QMAKE_BS_ID)); } -ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *bc, const QString &id) const +ProjectExplorer::BuildStep *QMakeStepFactory::create(BuildConfiguration *parent, const QString &id) { - Q_UNUSED(id); + if (!canCreate(parent, id)) + return 0; + Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); + Q_ASSERT(bc); return new QMakeStep(bc); } -ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const +bool QMakeStepFactory::canClone(BuildConfiguration *parent, BuildStep *source) const { - return new QMakeStep(static_cast<QMakeStep *>(bs), bc); + return canCreate(parent, source->id()); } -QStringList QMakeStepFactory::canCreateForBuildConfiguration(ProjectExplorer::BuildConfiguration *bc) const +ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep *source) { - if (Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration *>(bc)) - if (!qt4bc->qmakeStep()) - return QStringList() << Constants::QMAKESTEP; - return QStringList(); + if (!canClone(parent, source)) + return 0; + Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); + Q_ASSERT(bc); + return new QMakeStep(bc, qobject_cast<QMakeStep *>(source)); } -QString QMakeStepFactory::displayNameForId(const QString &id) const +bool QMakeStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) const +{ + QString id(ProjectExplorer::idFromMap(map)); + return canCreate(parent, id); +} + +ProjectExplorer::BuildStep *QMakeStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, const QVariantMap &map) { - Q_UNUSED(id); - return tr("QMake"); + if (!canRestore(parent, map)) + return 0; + Qt4BuildConfiguration *bc(qobject_cast<Qt4BuildConfiguration *>(parent)); + Q_ASSERT(bc); + QMakeStep *bs(new QMakeStep(bc)); + if (bs->fromMap(map)) + return bs; + delete bs; + return 0; } +QStringList QMakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent) const +{ + if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(parent)) + if (!bc->qmakeStep()) + return QStringList() << QLatin1String(QMAKE_BS_ID); + return QStringList(); +} +QString QMakeStepFactory::displayNameForId(const QString &id) const +{ + if (id == QLatin1String(QMAKE_BS_ID)) + return tr("QMake"); + return QString(); +} diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 53fa52d2e8..009f9be0b1 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -51,13 +51,17 @@ class Qt4BuildConfiguration; class QMakeStepFactory : public ProjectExplorer::IBuildStepFactory { Q_OBJECT + public: - QMakeStepFactory(); + explicit QMakeStepFactory(QObject *parent = 0); virtual ~QMakeStepFactory(); - bool canCreate(const QString & id) const; - ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &id) const; - ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const; - QStringList canCreateForBuildConfiguration(ProjectExplorer::BuildConfiguration *bc) const; + 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; QString displayNameForId(const QString &id) const; }; @@ -67,15 +71,15 @@ public: class QMakeStep : public ProjectExplorer::AbstractProcessStep { Q_OBJECT + friend class Internal::QMakeStepFactory; + public: - QMakeStep(ProjectExplorer::BuildConfiguration *bc); - QMakeStep(QMakeStep *bs, ProjectExplorer::BuildConfiguration *bc); - ~QMakeStep(); + explicit QMakeStep(Internal::Qt4BuildConfiguration *parent); + virtual ~QMakeStep(); + Internal::Qt4BuildConfiguration *qt4BuildConfiguration() const; virtual bool init(); virtual void run(QFutureInterface<bool> &); - virtual QString id(); - virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; void setForced(bool b); @@ -85,17 +89,22 @@ public: QStringList userArguments(); void setUserArguments(const QStringList &arguments); - virtual void restoreFromLocalMap(const QMap<QString, QVariant> &map); - virtual void storeIntoLocalMap(QMap<QString, QVariant> &map); + QVariantMap toMap() const; signals: void userArgumentsChanged(); protected: + QMakeStep(Internal::Qt4BuildConfiguration *parent, QMakeStep *source); + QMakeStep(Internal::Qt4BuildConfiguration *parent, const QString &id); + virtual bool fromMap(const QVariantMap &map); + virtual void processStartupFailed(); virtual bool processFinished(int exitCode, QProcess::ExitStatus status); private: + void ctor(); + // last values QStringList m_lastEnv; bool m_forced; |