From: Thomas Hartmann Date: Mon, 16 May 2011 14:12:29 +0000 (+0200) Subject: QmlDesigner: using hasImport X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9b93ac78f8024276a6524dab8767f82145890660;p=qt-creator-jp%2Fqt-creator-jp.git QmlDesigner: using hasImport This change avoids adding an import if the same import with different alias already exists. --- diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index f677311e31..cda3d78efe 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -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); } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index 2402aa5020..18d9a0675a 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -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; diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 69c96d27d1..4f60c2eab2 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -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::createLibraryImport("QtQuick", "1.0"), QList()); ModelNode newState = rootStateGroup().addState(newStateName); setCurrentState(newState); diff --git a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp index d46321422e..d66165c343 100644 --- a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp @@ -159,7 +159,15 @@ ModelNode ModelMerger::insertModel(const ModelNode &modelNode) { RewriterTransaction transaction(view()->beginRewriterTransaction()); - view()->model()->changeImports(modelNode.model()->imports(), QList()); + QList newImports; + + foreach (const Import &import, modelNode.model()->imports()) { + if (!view()->model()->hasImport(import, true)) { + newImports.append(import); + } + } + + view()->model()->changeImports(newImports, QList()); QHash idRenamingHash; setupIdRenamingHash(modelNode, idRenamingHash, view());