summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@nokia.com>2010-01-14 17:41:29 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2010-02-01 12:23:12 +0100
commit1726688434b4f974d0179d4ec979ce00f208c9b2 (patch)
tree502f06910adc0744a1fb13b4f8f1d0d01731b844 /src/plugins/qt4projectmanager
parentc410d268dbe05c26563f4beceab99e2420f7a521 (diff)
downloadqt-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.cpp129
-rw-r--r--src/plugins/qt4projectmanager/makestep.h37
-rw-r--r--src/plugins/qt4projectmanager/qmakestep.cpp116
-rw-r--r--src/plugins/qt4projectmanager/qmakestep.h33
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;