From 9ad73fc93b20b91b876b4a71397ff11d8d4e507e Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Wed, 13 Oct 2010 13:02:26 +0200
Subject: [PATCH] QmlProject: Refresh the project when the Qt version changes.

Reviewed-by: Thomas Hartmann
---
 .../qmlprojectrunconfiguration.cpp             | 18 ++++++++++++++----
 .../qmlprojectrunconfiguration.h               |  1 +
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index aa7dab53ffe..7c270fc5a92 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -165,6 +165,15 @@ int QmlProjectRunConfiguration::qtVersionId() const
     return m_qtVersionId;
 }
 
+void QmlProjectRunConfiguration::setQtVersionId(int id)
+{
+    if (m_qtVersionId == id)
+        return;
+
+    m_qtVersionId = id;
+    qmlTarget()->qmlProject()->refresh(QmlProject::Configuration);
+}
+
 Qt4ProjectManager::QtVersion *QmlProjectRunConfiguration::qtVersion() const
 {
     if (m_qtVersionId == -1)
@@ -311,7 +320,7 @@ void QmlProjectRunConfiguration::onQtVersionSelectionChanged()
 {
     QVariant data = m_qtVersionComboBox.data()->itemData(m_qtVersionComboBox.data()->currentIndex());
     QTC_ASSERT(data.isValid() && data.canConvert(QVariant::Int), return)
-    m_qtVersionId = data.toInt();
+    setQtVersionId(data.toInt());
     updateEnabled();
 }
 
@@ -348,7 +357,7 @@ QVariantMap QmlProjectRunConfiguration::toMap() const
 
 bool QmlProjectRunConfiguration::fromMap(const QVariantMap &map)
 {
-    m_qtVersionId = map.value(QLatin1String(Constants::QML_VIEWER_QT_KEY), -1).toInt();
+    setQtVersionId(map.value(QLatin1String(Constants::QML_VIEWER_QT_KEY), -1).toInt());
     m_qmlViewerArgs = map.value(QLatin1String(Constants::QML_VIEWER_ARGUMENTS_KEY)).toString();
     m_scriptFile = map.value(QLatin1String(Constants::QML_MAINSCRIPT_KEY), M_CURRENT_FILE).toString();
 
@@ -411,14 +420,15 @@ void QmlProjectRunConfiguration::updateQtVersions()
     //
     if (!qtVersions->isValidId(m_qtVersionId)
             || !isValidVersion(qtVersions->version(m_qtVersionId))) {
-        m_qtVersionId = -1;
+        int newVersionId = -1;
         // take first one you find
         foreach (Qt4ProjectManager::QtVersion *version, qtVersions->validVersions()) {
             if (isValidVersion(version)) {
-                m_qtVersionId = version->uniqueId();
+                newVersionId = version->uniqueId();
                 break;
             }
         }
+        setQtVersionId(newVersionId);
     }
 
     updateEnabled();
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
index 7381fa1b545..9b231f430c5 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
@@ -111,6 +111,7 @@ protected:
 private:
     void ctor();
     static bool isValidVersion(Qt4ProjectManager::QtVersion *version);
+    void setQtVersionId(int id);
 
     // absolute path to current file (if being used)
     QString m_currentFileFilename;
-- 
GitLab