summaryrefslogtreecommitdiff
path: root/src/plugins/cmakeprojectmanager
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/cmakeprojectmanager
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/cmakeprojectmanager')
-rw-r--r--src/plugins/cmakeprojectmanager/makestep.cpp140
-rw-r--r--src/plugins/cmakeprojectmanager/makestep.h41
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;
};