From c3be93f23c594709d7c0ec3052869a52faacfef5 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@digia.com>
Date: Tue, 30 Jul 2013 17:49:31 +0200
Subject: [PATCH] QmlDesigner: Refactor QmlItemNode::createQmlItemNodeFromImage

Change-Id: I1fa0eb94d36ae48bb131da2ceca75e19a4175a4d
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
---
 .../designercore/model/qmlitemnode.cpp        | 88 +++++++++----------
 1 file changed, 44 insertions(+), 44 deletions(-)

diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 73ef4079f3a..e4268c2cb65 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -171,66 +171,66 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
     return newQmlItemNode;
 }
 
+static void checkImageImport(AbstractView *view)
+{
+    const QString newImportUrl = QLatin1String("QtQuick");
+    const QString newImportVersion = QLatin1String("1.1");
+    Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion);
+
+    foreach (const Import &import, view->model()->imports()) {
+        if (import.isLibraryImport()
+            && import.url() == newImport.url()) {
+            // reuse this import
+            newImport = import;
+            break;
+        }
+    }
+
+    if (!view->model()->hasImport(newImport, true, true))
+        view->model()->changeImports(QList<Import>() << newImport, QList<Import>());
+}
+
 QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QString &imageName, const QPointF &position, QmlItemNode parentQmlItemNode)
 {
-    if (!parentQmlItemNode.isValid() && QmlItemNode::isValidQmlItemNode(view->rootModelNode()))
+    QmlItemNode newQmlItemNode;
+    if (!parentQmlItemNode.isValid())
         parentQmlItemNode = QmlItemNode(view->rootModelNode());
-    else
-        return QmlItemNode();
 
-    QmlItemNode newQmlItemNode;
-    RewriterTransaction transaction = view->beginRewriterTransaction();
-    {
-        const QString newImportUrl = QLatin1String("QtQuick");
-        const QString newImportVersion = QLatin1String("1.1");
-        Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion);
-
-        foreach (const Import &import, view->model()->imports()) {
-            if (import.isLibraryImport()
-                && import.url() == newImport.url()) {
-                // reuse this import
-                newImport = import;
-                break;
-            }
-        }
+    if (parentQmlItemNode.isValid()) {
+        RewriterTransaction transaction = view->beginRewriterTransaction();
 
-        if (!view->model()->hasImport(newImport, true, true))
-            view->model()->changeImports(QList<Import>() << newImport, QList<Import>());
+        checkImageImport(view);
 
-        QList<QPair<PropertyName, QVariant> > propertyPairList;
-        propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
-        propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
+        if (view->model()->hasNodeMetaInfo("QtQuick.Image")) {
+            NodeMetaInfo metaInfo = view->model()->metaInfo("QtQuick.Image");
+            QList<QPair<PropertyName, QVariant> > propertyPairList;
+            propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
+            propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
 
-        QString relativeImageName = imageName;
+            QString relativeImageName = imageName;
 
-        //use relative path
-        if (QFileInfo(view->model()->fileUrl().toLocalFile()).exists()) {
-            QDir fileDir(QFileInfo(view->model()->fileUrl().toLocalFile()).absolutePath());
-            relativeImageName = fileDir.relativeFilePath(imageName);
-        }
+            //use relative path
+            if (QFileInfo(view->model()->fileUrl().toLocalFile()).exists()) {
+                QDir fileDir(QFileInfo(view->model()->fileUrl().toLocalFile()).absolutePath());
+                relativeImageName = fileDir.relativeFilePath(imageName);
+                propertyPairList.append(qMakePair(PropertyName("source"), QVariant(relativeImageName)));
+            }
 
-        propertyPairList.append(qMakePair(PropertyName("source"), QVariant(relativeImageName)));
-        NodeMetaInfo metaInfo = view->model()->metaInfo("QtQuick.Image");
-        if (metaInfo.isValid()) {
-            int minorVersion = metaInfo.minorVersion();
-            int majorVersion = metaInfo.majorVersion();
-            newQmlItemNode = QmlItemNode(view->createModelNode("QtQuick.Image", majorVersion, minorVersion, propertyPairList));
-            parentQmlItemNode.nodeAbstractProperty("data").reparentHere(newQmlItemNode);
-        }
+            newQmlItemNode = QmlItemNode(view->createModelNode("QtQuick.Image", metaInfo.majorVersion(), metaInfo.minorVersion(), propertyPairList));
+            parentQmlItemNode.defaultNodeAbstractProperty().reparentHere(newQmlItemNode);
 
-        Q_ASSERT(newQmlItemNode.isValid());
+            newQmlItemNode.setId(view->generateNewId("image"));
 
-        newQmlItemNode.setId(view->generateNewId("image"));
+            if (!QmlModelState(view->actualStateNode()).isBaseState()) {
+                newQmlItemNode.modelNode().variantProperty("opacity").setValue(0);
+                newQmlItemNode.setVariantProperty("opacity", 1);
+            }
 
-        if (!QmlModelState(view->actualStateNode()).isBaseState()) {
-            newQmlItemNode.modelNode().variantProperty("opacity").setValue(0);
-            newQmlItemNode.setVariantProperty("opacity", 1);
+            Q_ASSERT(newQmlItemNode.isValid());
         }
-
         Q_ASSERT(newQmlItemNode.isValid());
     }
 
-    Q_ASSERT(newQmlItemNode.isValid());
 
     return newQmlItemNode;
 }
-- 
GitLab