OSDN Git Service

QmlDesigner.qmlModelView: fixes adding imports
authorThomas Hartmann <Thomas.Hartmann@nokia.com>
Mon, 16 May 2011 14:19:21 +0000 (16:19 +0200)
committerThomas Hartmann <Thomas.Hartmann@nokia.com>
Mon, 16 May 2011 14:20:09 +0000 (16:20 +0200)
We use requiredImport() and only add an import if it does
not exists before (even with alias).

src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp

index 2239da3..876f822 100644 (file)
@@ -173,22 +173,26 @@ QmlItemNode QmlModelView::createQmlItemNode(const ItemLibraryEntry &itemLibraryE
     try {
         RewriterTransaction transaction = beginRewriterTransaction();
         if (itemLibraryEntry.typeName().contains('.')) {
-            const QString newImportUrl = itemLibraryEntry.typeName().split('.').first();
-            const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion()));
-            Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion);
-
-            foreach (const Import &import, model()->imports()) {
-                if (import.isLibraryImport()
-                    && import.url() == newImport.url()
-                    && import.version() == newImport.version()) {
-                    // reuse this import
-                    newImport = import;
-                    break;
+
+            const QString newImportUrl = itemLibraryEntry.requiredImport();
+
+            if (!itemLibraryEntry.requiredImport().isEmpty()) {
+                const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion()));
+                Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion);
+
+                foreach (const Import &import, model()->imports()) {
+                    if (import.isLibraryImport()
+                            && import.url() == newImport.url()
+                            && import.version() == newImport.version()) {
+                        // reuse this import
+                        newImport = import;
+                        break;
+                    }
                 }
-            }
 
-            if (!model()->imports().contains(newImport)) {
-                model()->changeImports(QList<Import>() << newImport, QList<Import>());
+                if (!model()->hasImport(newImport, true)) {
+                    model()->changeImports(QList<Import>() << newImport, QList<Import>());
+                }
             }
         }