diff options
8 files changed, 131 insertions, 12 deletions
diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 257f99a07e..a912b9c07e 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -413,8 +413,11 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps) void BuildManager::buildProjects(const QList<BuildConfiguration *> &configurations) { QList<BuildStep *> steps; - foreach(BuildConfiguration *bc, configurations) + foreach(BuildConfiguration *bc, configurations) { steps.append(bc->steps(BuildStep::Build)); + // TODO: Verify that this is indeed what we want. + steps.append(bc->steps(BuildStep::Deploy)); + } bool success = buildQueueAppend(steps); if (!success) { diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 5d0b8e5226..ff1138134f 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -250,6 +250,7 @@ void BuildSettingsWidget::updateBuildSettings() addSubWidget(generalConfigWidget->displayName(), generalConfigWidget); addSubWidget(tr("Build Steps"), new BuildStepsPage(m_target, BuildStep::Build)); + addSubWidget(tr("Deploy Steps"), new BuildStepsPage(m_target, BuildStep::Deploy)); addSubWidget(tr("Clean Steps"), new BuildStepsPage(m_target, BuildStep::Clean)); QList<BuildConfigWidget *> subConfigWidgets = m_target->project()->subConfigWidgets(); diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 571710828a..790646184f 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -75,6 +75,7 @@ public: enum Type { Build = 0, Clean, + Deploy, LastStepType }; Q_ENUMS(Type) diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 54b9be9563..7b2bd3d8dd 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -83,10 +83,16 @@ void BuildStepsPage::updateSummary() QString BuildStepsPage::displayName() const { - if (m_type == BuildStep::Build) + switch(m_type) { + case BuildStep::Build: return tr("Build Steps"); - else + case BuildStep::Deploy: + return tr("Deploy Steps"); + case BuildStep::Clean: return tr("Clean Steps"); + default: + return tr("Unknown Steps"); + } } void BuildStepsPage::init(BuildConfiguration *bc) @@ -295,7 +301,19 @@ void BuildStepsPage::setupUi() QHBoxLayout *hboxLayout = new QHBoxLayout(); hboxLayout->setContentsMargins(0, 4, 0, 0); m_addButton = new QPushButton(this); - m_addButton->setText(m_type == BuildStep::Clean ? tr("Add Clean Step") : tr("Add Build Step")); + switch (m_type) { + case BuildStep::Clean: + m_addButton->setText(tr("Add Clean Step")); + break; + case BuildStep::Build: + m_addButton->setText(tr("Add Build Step")); + break; + case BuildStep::Deploy: + m_addButton->setText(tr("Add Deploy Step")); + break; + default: + m_addButton->setText(tr("Add Step")); + } m_addButton->setMenu(new QMenu(this)); hboxLayout->addWidget(m_addButton); diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index 4c86df6043..e3a56fae9d 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -148,6 +148,23 @@ public: QVariantMap update(Project *project, const QVariantMap &map); }; +// Version 4 reflects the introduction of deploy steps +class Version4Handler : public UserFileVersionHandler +{ +public: + int userFileVersion() const + { + return 4; + } + + QString displayUserFileVersion() const + { + return QLatin1String("2.2pre1"); + } + + QVariantMap update(Project *project, const QVariantMap &map); +}; + // // Helper functions: // @@ -218,6 +235,7 @@ UserFileAccessor::UserFileAccessor() : addVersionHandler(new Version1Handler); addVersionHandler(new Version2Handler); addVersionHandler(new Version3Handler); + addVersionHandler(new Version4Handler); } UserFileAccessor::~UserFileAccessor() @@ -1010,3 +1028,78 @@ QVariantMap Version3Handler::update(Project *, const QVariantMap &map) } return result; } + + +// ------------------------------------------------------------------------- +// Version4Handler +// ------------------------------------------------------------------------- + +// Move packaging steps from build steps into deploy steps +QVariantMap Version4Handler::update(Project *, const QVariantMap &map) +{ + QVariantMap result; + QMapIterator<QString, QVariant> it(map); + while (it.hasNext()) { + it.next(); + const QString &globalKey = it.key(); + // check for target info + if (!globalKey.startsWith(QLatin1String("ProjectExplorer.Project.Target."))) { + result.insert(globalKey, it.value()); + continue; + } + const QVariantMap &originalTarget = it.value().toMap(); + // check for symbian and maemo device target + if (originalTarget.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")) + != QLatin1String("Qt4ProjectManager.Target.S60DeviceTarget") + && originalTarget.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")) + != QLatin1String("Qt4ProjectManager.Target.MaemoDeviceTarget")) + { + result.insert(globalKey, originalTarget); + continue; + } + + QVariantMap newTarget; + QMapIterator<QString, QVariant> targetIt(originalTarget); + while (targetIt.hasNext()) { + targetIt.next(); + const QString &targetKey = targetIt.key(); + if (!targetKey.startsWith(QLatin1String("ProjectExplorer.Target.BuildConfiguration."))) { + newTarget.insert(targetKey, targetIt.value()); + continue; + } + + bool movedBs = false; + const QVariantMap &originalBc = targetIt.value().toMap(); + QVariantMap newBc; + QMapIterator<QString, QVariant> bcIt(originalBc); + while(bcIt.hasNext()) { + bcIt.next(); + const QString &bcKey = bcIt.key(); + if (!bcKey.startsWith(QLatin1String("ProjectExplorer.BuildConfiguration.BuildStep."))) { + newBc.insert(bcKey, bcIt.value()); + continue; + } + + const QVariantMap &buildStep = bcIt.value().toMap(); + if ((buildStep.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")).toString() == + QLatin1String("Qt4ProjectManager.S60SignBuildStep")) + || (buildStep.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")).toString() == + QLatin1String("Qt4ProjectManager.MaemoPackageCreationStep"))) { + movedBs = true; + newBc.insert(QLatin1String("ProjectExplorer.BuildConfiguration.DeployStep.0"), buildStep); + } else { + newBc.insert(bcKey, buildStep); + } + } + if (movedBs) { + // adjust counts: + newBc.insert(QLatin1String("ProjectExplorer.BuildConfiguration.DeployStepsCount"), 1); + newBc.insert(QLatin1String("ProjectExplorer.BuildConfiguration.BuildStepsCount"), + newBc.value(QLatin1String("ProjectExplorer.BuildConfiguration.BuildStepsCount")).toInt() - 1); + } + newTarget.insert(targetKey, newBc); + } + result.insert(globalKey, newTarget); + } + return result; +} diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp index 38c7df3cb7..157e92fa86 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp @@ -105,22 +105,25 @@ BuildStep *MaemoPackageCreationFactory::restore(BuildConfiguration *parent, } bool MaemoPackageCreationFactory::canClone(BuildConfiguration *parent, - BuildStep::Type type, BuildStep *product) const + ProjectExplorer::BuildStep::Type type, + BuildStep *product) const { return canCreateInternally(parent, type, product->id()); } BuildStep *MaemoPackageCreationFactory::clone(BuildConfiguration *parent, - BuildStep::Type type, BuildStep *product) + ProjectExplorer::BuildStep::Type type, + BuildStep *product) { Q_ASSERT(canClone(parent, type, product)); return new MaemoPackageCreationStep(parent, static_cast<MaemoPackageCreationStep *>(product)); } bool MaemoPackageCreationFactory::canCreateInternally(BuildConfiguration *parent, - BuildStep::Type type, const QString &id) const + ProjectExplorer::BuildStep::Type type, + const QString &id) const { - return type == ProjectExplorer::BuildStep::Build + return type == ProjectExplorer::BuildStep::Deploy && id == MaemoPackageCreationStep::CreatePackageId && parent->target()->id() == Constants::MAEMO_DEVICE_TARGET_ID; } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp index 095376112a..1f99763b6b 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp @@ -185,7 +185,7 @@ S60CreatePackageStepFactory::~S60CreatePackageStepFactory() bool S60CreatePackageStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QString &id) const { - if (type != ProjectExplorer::BuildStep::Build) + if (type != ProjectExplorer::BuildStep::Deploy) return false; if (parent->target()->id() != Constants::S60_DEVICE_TARGET_ID) return false; @@ -230,7 +230,7 @@ ProjectExplorer::BuildStep *S60CreatePackageStepFactory::restore(ProjectExplorer QStringList S60CreatePackageStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type) const { - if (type != ProjectExplorer::BuildStep::Build) + if (type != ProjectExplorer::BuildStep::Deploy) return QStringList(); if (parent->target()->id() == Constants::S60_DEVICE_TARGET_ID) return QStringList() << QLatin1String(SIGN_BS_ID); diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 990d62111b..198e2e7eff 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -283,9 +283,9 @@ Qt4BuildConfiguration *Qt4Target::addQt4BuildConfiguration(QString displayName, if (id() == Constants::S60_DEVICE_TARGET_ID) { S60CreatePackageStep *packageStep = new S60CreatePackageStep(bc); - bc->insertStep(ProjectExplorer::BuildStep::Build, 2, packageStep); + bc->insertStep(ProjectExplorer::BuildStep::Deploy, 2, packageStep); } else if (id() == Constants::MAEMO_DEVICE_TARGET_ID) { - bc->insertStep(ProjectExplorer::BuildStep::Build, 2, new MaemoPackageCreationStep(bc)); + bc->insertStep(ProjectExplorer::BuildStep::Deploy, 2, new MaemoPackageCreationStep(bc)); } MakeStep* cleanStep = new MakeStep(bc); |