From fa48cf8a2035552ee5d4114a53b020fb25c9b68e Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Thu, 9 Jun 2011 16:53:56 +0200
Subject: [PATCH] QmlDesigner.nodeInstanceView: adding parameter pathToQt

The NodeInstanceView is now informed about the build pathToQt.

Change-Id: I728c9c356354ccf73599950c1c0bf4a96bd0a628
Reviewed-on: http://codereview.qt.nokia.com/437
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Marco Bubke <marco.bubke@nokia.com>
---
 .../integration/designdocumentcontroller.cpp           |  6 ++++++
 .../designercore/include/nodeinstanceview.h            |  3 +++
 .../designercore/instances/nodeinstanceserverproxy.cpp |  2 +-
 .../designercore/instances/nodeinstanceserverproxy.h   |  2 +-
 .../designercore/instances/nodeinstanceview.cpp        | 10 ++++++++--
 5 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index 65f0a9a12f2..4378596940e 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -437,6 +437,7 @@ void DesignDocumentController::loadCurrentModel()
     Q_ASSERT(m_d->model);
     m_d->model->setMasterModel(m_d->masterModel.data());
 
+    m_d->nodeInstanceView->setPathToQt(pathToQt());
     m_d->model->attachView(m_d->nodeInstanceView.data());
     m_d->model->attachView(m_d->navigator.data());
     m_d->itemLibraryView->widget()->setResourcePath(QFileInfo(m_d->fileName).absolutePath());
@@ -822,8 +823,13 @@ void DesignDocumentController::activeQtVersionChanged()
         return;
     }
 
+    if (m_d->qt_versionId == newQtVersion->uniqueId())
+        return;
+
     m_d->qt_versionId = newQtVersion->uniqueId();
 
+    if (m_d->nodeInstanceView)
+        m_d->nodeInstanceView->setPathToQt(pathToQt());
 }
 
 #ifdef ENABLE_TEXT_VIEW
diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
index d006705fc40..0bbfa742259 100644
--- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
+++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
@@ -138,6 +138,8 @@ public:
 
     QImage statePreviewImage(const ModelNode &stateNode) const;
 
+    void setPathToQt(const QString &pathToQt);
+
 signals:
     void qmlPuppetCrashed();
 
@@ -195,6 +197,7 @@ private: //variables
     QImage m_baseStatePreviewImage;
     QTime m_lastCrashTime;
     NodeInstanceServerInterface::RunModus m_runModus;
+    QString m_pathToQt;
 };
 
 } // namespace ProxyNodeInstanceView
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
index 411c0c1d647..76f82d6a074 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
@@ -88,7 +88,7 @@ static bool hasQtQuick1(NodeInstanceView *nodeInstanceView)
     return false;
 }
 
-NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus)
+NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus, const QString &pathToQt)
     : NodeInstanceServerInterface(nodeInstanceView),
       m_localServer(new QLocalServer(this)),
       m_nodeInstanceView(nodeInstanceView),
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
index 42b29db73e8..2ed94bdf8a8 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
@@ -55,7 +55,7 @@ class NodeInstanceServerProxy : public NodeInstanceServerInterface
 {
     Q_OBJECT
 public:
-    explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus = NormalModus);
+    explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus = NormalModus, const QString &pathToQt = QString());
     ~NodeInstanceServerProxy();
     void createInstances(const CreateInstancesCommand &command);
     void changeFileUrl(const ChangeFileUrlCommand &command);
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index 472a179c947..eeb80734213 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -164,7 +164,7 @@ bool isSkippedNode(const ModelNode &node)
 void NodeInstanceView::modelAttached(Model *model)
 {
     AbstractView::modelAttached(model);
-    m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus);
+    m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_pathToQt);
     m_lastCrashTime.start();
     connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash()));
 
@@ -203,7 +203,7 @@ void NodeInstanceView::restartProcess()
     if (model()) {
         delete nodeInstanceServer();
 
-        m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus);
+        m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_pathToQt);
         connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash()));
 
         if (!isSkippedRootNode(rootModelNode()))
@@ -1076,6 +1076,12 @@ QImage NodeInstanceView::statePreviewImage(const ModelNode &stateNode) const
     return m_statePreviewImage.value(stateNode);
 }
 
+void NodeInstanceView::setPathToQt(const QString &pathToQt)
+{
+    m_pathToQt = pathToQt;
+    restartProcess();
+}
+
 void NodeInstanceView::statePreviewImagesChanged(const StatePreviewImageChangedCommand &command)
 {
     if (!model())
-- 
GitLab