From 64da60dcd3172e2cd0d97a34f680a9fc0a845059 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 20 Dec 2012 17:02:11 +0100 Subject: [PATCH] QmlDesigner.DragTool: fixing creating file imports Creating file imports from the item library was broken. If the version is -1.-1 we have to create a FileImport instead of a library import. Change-Id: I6bef68ba308d2254c9c2cb607a91c81055a360d4 Reviewed-by: Marco Bubke --- .../components/formeditor/dragtool.cpp | 30 ++++++++++++------- .../components/formeditor/dragtool.h | 1 + 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index a019b6fe536..67d8250658c 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -204,6 +204,24 @@ FormEditorItem* DragTool::calculateContainer(const QPointF &point, FormEditorIte return 0; } + QList DragTool::missingImportList(const ItemLibraryEntry &itemLibraryEntry) +{ + QList importToBeAddedList; + + if (!itemLibraryEntry.requiredImport().isEmpty()) { + const QString newImportUrl = itemLibraryEntry.requiredImport(); + const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion())); + Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); + + if (itemLibraryEntry.majorVersion() == -1 && itemLibraryEntry.minorVersion() == -1) { + newImport = Import::createFileImport(newImportUrl, QString()); + } else { + newImport = Import::createLibraryImport(newImportUrl, newImportVersion); + } + } + return importToBeAddedList; +} + void DragTool::formEditorItemsChanged(const QList & itemList) { @@ -296,17 +314,9 @@ void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event) view()->widget()->setFocus(); m_Aborted = false; Q_ASSERT(!event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo").isEmpty()); - ItemLibraryEntry itemLibraryEntry = itemLibraryEntryFromData(event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo")); - if (!itemLibraryEntry.requiredImport().isEmpty()) { - const QString newImportUrl = itemLibraryEntry.requiredImport(); - const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion())); - Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); - if (!view()->model()->hasImport(newImport, true, true)) { - importToBeAddedList.append(newImport); - } - - } + importToBeAddedList = missingImportList( + itemLibraryEntryFromData(event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo"))); } view()->model()->changeImports(importToBeAddedList, QList()); diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.h b/src/plugins/qmldesigner/components/formeditor/dragtool.h index 34e699c443e..3db77b317a2 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.h +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.h @@ -114,6 +114,7 @@ private: void createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, QmlItemNode parentNode, QPointF scenePos); void createQmlItemNodeFromImage(const QString &imageName, QmlItemNode parentNode, QPointF scenePos); FormEditorItem* calculateContainer(const QPointF &point, FormEditorItem * currentItem = 0); + QList missingImportList(const ItemLibraryEntry &itemLibraryEntry); void begin(QPointF scenePos); void end(QPointF scenePos);