OSDN Git Service

QmlDesigner: using hasImport
authorThomas Hartmann <Thomas.Hartmann@nokia.com>
Mon, 16 May 2011 14:12:29 +0000 (16:12 +0200)
committerThomas Hartmann <Thomas.Hartmann@nokia.com>
Mon, 16 May 2011 14:20:05 +0000 (16:20 +0200)
This change avoids adding an import if the same import with different alias
already exists.

src/plugins/qmldesigner/components/formeditor/dragtool.cpp
src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
src/plugins/qmldesigner/designercore/model/modelmerger.cpp

index f677311..cda3d78 100644 (file)
@@ -292,7 +292,7 @@ void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event)
                 const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion()));
                 Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion);
 
-                if (!view()->model()->imports().contains(newImport)) {
+                if (!view()->model()->hasImport(newImport, true)) {
                     importToBeAddedList.append(newImport);
                 }
 
index 2402aa5..18d9a06 100644 (file)
@@ -383,10 +383,11 @@ bool ItemLibraryModel::isItemVisible(int itemLibId)
     return elementModel(sectionLibId)->isItemVisible(itemLibId);
 }
 
-QString entryToImport(const ItemLibraryEntry &entry)
+Import entryToImport(const ItemLibraryEntry &entry)
 {
-    return entry.requiredImport() + QLatin1Char(' ') + QString::number(entry.majorVersion())
-            + QLatin1Char('.') + QString::number(entry.minorVersion());
+    return Import::createLibraryImport(entry.requiredImport(), QString::number(entry.majorVersion()) + QLatin1Char('.') +
+                                                               QString::number(entry.minorVersion()));
+
 }
 
 void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
@@ -407,7 +408,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
 
          bool valid = model->metaInfo(entry.typeName(), entry.majorVersion(), entry.minorVersion()).isValid();
 
-        if (valid && (entry.requiredImport().isEmpty() || imports.contains(entryToImport(entry), Qt::CaseInsensitive))) {
+        if (valid && (entry.requiredImport().isEmpty() || model->hasImport(entryToImport(entry), true) || entry.forceImport())) {
             QString itemSectionName = entry.category();
             ItemLibrarySectionModel *sectionModel;
             ItemLibraryItemModel *itemModel;
index 69c96d2..4f60c2e 100644 (file)
@@ -140,8 +140,8 @@ void StatesEditorView::addState()
 
     try {
         if ((rootStateGroup().allStates().count() < 1) && //QtQuick import might be missing
-            (!model()->imports().contains(Import::createLibraryImport("QtQuick", "1.0")) &&
-             !model()->imports().contains(Import::createLibraryImport("QtQuick", "1.1"))))
+            (!model()->hasImport(Import::createLibraryImport("QtQuick", "1.0"), true) &&
+             !model()->hasImport(Import::createLibraryImport("QtQuick", "1.1"), true)))
             model()->changeImports(QList<Import>() << Import::createLibraryImport("QtQuick", "1.0"), QList<Import>());
         ModelNode newState = rootStateGroup().addState(newStateName);
         setCurrentState(newState);
index d463214..d66165c 100644 (file)
@@ -159,7 +159,15 @@ ModelNode ModelMerger::insertModel(const ModelNode &modelNode)
 {
     RewriterTransaction transaction(view()->beginRewriterTransaction());
 
-    view()->model()->changeImports(modelNode.model()->imports(), QList<Import>());
+    QList<Import> newImports;
+
+    foreach (const Import &import, modelNode.model()->imports()) {
+        if (!view()->model()->hasImport(import, true)) {
+            newImports.append(import);
+        }
+    }
+
+    view()->model()->changeImports(newImports, QList<Import>());
 
     QHash<QString, QString> idRenamingHash;
     setupIdRenamingHash(modelNode, idRenamingHash, view());