From 406d853e2b262f6bfa0d9c2ac037982a6290f036 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Tue, 21 Jul 2009 14:50:54 +0200
Subject: [PATCH] Move the qmake config settign into qt4project.

One less need for qmakestep.
---
 .../qt4projectmanager/projectloadwizard.cpp   | 23 +++++++++----------
 src/plugins/qt4projectmanager/qmakestep.cpp   | 12 +++++-----
 .../qt-s60/gccetoolchain.cpp                  |  2 +-
 .../qt-s60/s60devicerunconfiguration.cpp      |  2 +-
 .../qt-s60/s60emulatorrunconfiguration.cpp    |  2 +-
 src/plugins/qt4projectmanager/qt4project.cpp  | 19 +++++++++++++++
 .../qt4projectconfigwidget.cpp                |  3 +--
 .../qt4projectmanager/qt4runconfiguration.cpp |  2 +-
 8 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index 2aa999114c4..44de7c6e5a5 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -93,35 +93,34 @@ ProjectLoadWizard::~ProjectLoadWizard()
 
 }
 
-void ProjectLoadWizard::addBuildConfiguration(QString name, QtVersion *qtversion, QtVersion::QmakeBuildConfig buildConfiguration)
+void ProjectLoadWizard::addBuildConfiguration(QString buildConfigurationName, QtVersion *qtversion, QtVersion::QmakeBuildConfig qmakeBuildConfiguration)
 {
-    QMakeStep *qmakeStep = m_project->qmakeStep();
     MakeStep *makeStep = m_project->makeStep();
 
-    bool debug = buildConfiguration & QtVersion::DebugBuild;
+    bool debug = qmakeBuildConfiguration & QtVersion::DebugBuild;
     // Check that bc.name is not already in use
-    if (m_project->buildConfigurations().contains(name)) {
+    if (m_project->buildConfigurations().contains(buildConfigurationName)) {
         int i =1;
         do {
             ++i;
-        } while (m_project->buildConfigurations().contains(name + " " + QString::number(i)));
-        name.append(" " + QString::number(i));
+        } while (m_project->buildConfigurations().contains(buildConfigurationName + " " + QString::number(i)));
+        buildConfigurationName.append(" " + QString::number(i));
     }
 
     // Add the buildconfiguration
-    m_project->addBuildConfiguration(name);
+    m_project->addBuildConfiguration(buildConfigurationName);
     // set some options for qmake and make
-    if (buildConfiguration & QtVersion::BuildAll) // debug_and_release => explicit targets
-        makeStep->setValue(name, "makeargs", QStringList() << (debug ? "debug" : "release"));
+    if (qmakeBuildConfiguration & QtVersion::BuildAll) // debug_and_release => explicit targets
+        makeStep->setValue(buildConfigurationName, "makeargs", QStringList() << (debug ? "debug" : "release"));
 
-    qmakeStep->setValue(name, "buildConfiguration", int(buildConfiguration));
+    m_project->setValue(buildConfigurationName, "buildConfiguration", int(qmakeBuildConfiguration));
 
     // Finally set the qt version
     bool defaultQtVersion = (qtversion == 0);
     if (defaultQtVersion)
-        m_project->setQtVersion(name, 0);
+        m_project->setQtVersion(buildConfigurationName, 0);
     else
-        m_project->setQtVersion(name, qtversion->uniqueId());
+        m_project->setQtVersion(buildConfigurationName, qtversion->uniqueId());
 }
 
 void ProjectLoadWizard::done(int result)
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 300bf60a7e4..5494ff815c0 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -67,10 +67,10 @@ QStringList QMakeStep::arguments(const QString &buildConfiguration)
 
     arguments << "-r";
 
-    if (value(buildConfiguration, "buildConfiguration").isValid()) {
+    if (project()->value(buildConfiguration, "buildConfiguration").isValid()) {
         QStringList configarguments;
         QtVersion::QmakeBuildConfig defaultBuildConfiguration = m_pro->qtVersion(buildConfiguration)->defaultBuildConfig();
-        QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(value(buildConfiguration, "buildConfiguration").toInt());
+        QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(project()->value(buildConfiguration, "buildConfiguration").toInt());
         if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll))
             configarguments << "CONFIG-=debug_and_release";
         if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll))
@@ -82,7 +82,7 @@ QStringList QMakeStep::arguments(const QString &buildConfiguration)
         if (!configarguments.isEmpty())
             arguments << configarguments;
     } else {
-        arguments << "CONFIG+=debug_and_release";
+        qWarning()<< "The project should always have a qmake build configuration set";
     }
 
     if (!additonalArguments.isEmpty())
@@ -231,14 +231,14 @@ void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited()
 
 void QMakeStepConfigWidget::buildConfigurationChanged()
 {
-    QtVersion::QmakeBuildConfig buildConfiguration = QtVersion::QmakeBuildConfig(m_step->value(m_buildConfiguration, "buildConfiguration").toInt());
+    QtVersion::QmakeBuildConfig buildConfiguration = QtVersion::QmakeBuildConfig(m_step->project()->value(m_buildConfiguration, "buildConfiguration").toInt());
     if (m_ui.buildConfigurationComboBox->currentIndex() == 0) {
         // debug
         buildConfiguration = QtVersion::QmakeBuildConfig(buildConfiguration | QtVersion::DebugBuild);
     } else {
         buildConfiguration = QtVersion::QmakeBuildConfig(buildConfiguration & ~QtVersion::DebugBuild);
     }
-    m_step->setValue(m_buildConfiguration, "buildConfiguration", int(buildConfiguration));
+    m_step->project()->setValue(m_buildConfiguration, "buildConfiguration", int(buildConfiguration));
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(m_buildConfiguration)));
     static_cast<Qt4Project *>(m_step->project())->invalidateCachedTargetInformation();
 }
@@ -254,7 +254,7 @@ void QMakeStepConfigWidget::init(const QString &buildConfiguration)
     QString qmakeArgs = ProjectExplorer::Environment::joinArgumentList(m_step->value(buildConfiguration, "qmakeArgs").toStringList());
     m_ui.qmakeAdditonalArgumentsLineEdit->setText(qmakeArgs);
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(buildConfiguration)));
-    bool debug = QtVersion::QmakeBuildConfig(m_step->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild;
+    bool debug = QtVersion::QmakeBuildConfig(m_step->project()->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild;
     m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
index 60eaf1ebcea..89e0458aed7 100644
--- a/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/gccetoolchain.cpp
@@ -84,7 +84,7 @@ QString GCCEToolChain::defaultMakeTarget() const
 {
     const Qt4Project *qt4project = qobject_cast<const Qt4Project *>(m_project);
     if (qt4project) {
-        if (!(QtVersion::QmakeBuildConfig(qt4project->qmakeStep()->value(
+        if (!(QtVersion::QmakeBuildConfig(qt4project->value(
                 qt4project->activeBuildConfiguration(),
                 "buildConfiguration").toInt()) & QtVersion::DebugBuild)) {
             return "release-gcce";
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index f7d3c7af67e..c9e470978d1 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -163,7 +163,7 @@ void S60DeviceRunConfiguration::updateTarget()
 
     // Find out what flags we pass on to qmake, this code is duplicated in the qmake step
     QtVersion::QmakeBuildConfig defaultBuildConfiguration = qtVersion->defaultBuildConfig();
-    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->qmakeStep()->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
+    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
     QStringList addedUserConfigArguments;
     QStringList removedUserConfigArguments;
     if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll))
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index d01439ce021..ac618ef190c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -123,7 +123,7 @@ void S60EmulatorRunConfiguration::updateTarget()
 
     // Find out what flags we pass on to qmake, this code is duplicated in the qmake step
     QtVersion::QmakeBuildConfig defaultBuildConfiguration = qtVersion->defaultBuildConfig();
-    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->qmakeStep()->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
+    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
     QStringList addedUserConfigArguments;
     QStringList removedUserConfigArguments;
     if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll))
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 11bd2b8a76f..adbe99c9053 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -721,6 +721,25 @@ void Qt4Project::addDefaultBuild()
         ProjectLoadWizard wizard(this);
         wizard.execDialog();
     } else {
+        // Migrate settings
+        QMakeStep *qs = 0;
+        foreach(BuildStep *bs, buildSteps())
+            if ( (qs = qobject_cast<QMakeStep *>(bs)) != 0)
+                break;
+
+        foreach (const QString &buildConfiguration, buildConfigurations()) {
+            QVariant v = qs->value(buildConfiguration, "buildConfiguration");
+            if (v.isValid()) {
+                qs->setValue(buildConfiguration, "buildConfiguration", QVariant());
+                setValue(buildConfiguration, "buildConfiguration", v);
+            } else {
+                if (QtVersion *version = qtVersion(buildConfiguration))
+                    setValue(buildConfiguration, "buildConfiguration", version->defaultBuildConfig());
+                else
+                    setValue(buildConfiguration, "buildConfiguration", int(QtVersion::BuildAll & QtVersion::DebugBuild));
+            }
+        }
+
         // Restoring configuration
         foreach(const QString &bc, buildConfigurations()) {
             setValue(bc, "addQDumper", QVariant());
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 3e86d948a7b..d237cf13d01 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -235,10 +235,9 @@ void Qt4ProjectConfigWidget::importLabelClicked()
                 // Combo box will be updated at the end
 
                 // Find qmakestep...
-                QMakeStep *qmakeStep = m_pro->qmakeStep();
                 MakeStep *makeStep = m_pro->makeStep();
 
-                qmakeStep->setValue(m_buildConfiguration, "buildConfiguration", int(qmakeBuildConfig));
+                m_pro->setValue(m_buildConfiguration, "buildConfiguration", int(qmakeBuildConfig));
                 // Adjust command line arguments, this is ugly as hell
                 // If we are switching to BuildAll we want "release" in there and no "debug"
                 // or "debug" in there and no "release"
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index e8fc87fc7b5..e5832ce95f3 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -551,7 +551,7 @@ void Qt4RunConfiguration::updateTarget()
 
     // Find out what flags we pass on to qmake, this code is duplicated in the qmake step
     QtVersion::QmakeBuildConfig defaultBuildConfiguration = pro->qtVersion(pro->activeBuildConfiguration())->defaultBuildConfig();
-    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->qmakeStep()->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
+    QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt());
     QStringList addedUserConfigArguments;
     QStringList removedUserConfigArguments;
     if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll))
-- 
GitLab