diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index deaf760fa4c..07ed48d1e85 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -262,6 +262,7 @@ void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event) { if (event->mimeData()->hasFormat("application/vnd.bauhaus.itemlibraryinfo") || event->mimeData()->hasFormat("application/vnd.bauhaus.libraryresource")) { + QList importToBeAddedList; m_blockMove = false; if (event->mimeData()->hasFormat("application/vnd.bauhaus.itemlibraryinfo")) { Q_ASSERT(!event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo").isEmpty()); @@ -272,12 +273,14 @@ void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event) Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); if (!view()->model()->imports().contains(newImport)) { - view()->model()->addImport(newImport); + importToBeAddedList.append(newImport); } } } + view()->model()->changeImports(importToBeAddedList, QList()); + if (!m_rewriterTransaction.isValid()) { view()->clearSelectedModelNodes(); m_rewriterTransaction = view()->beginRewriterTransaction(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 880a650ee1b..c07f0c48d18 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -148,12 +148,7 @@ void FormEditorView::modelAboutToBeDetached(Model *model) QmlModelView::modelAboutToBeDetached(model); } -void FormEditorView::importAdded(const Import &) -{ - reset(); -} - -void FormEditorView::importRemoved(const Import &) +void FormEditorView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) { reset(); } diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h index 2c286fda7f2..b8a4c57d190 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h @@ -70,8 +70,7 @@ public: void modelAttached(Model *model); void modelAboutToBeDetached(Model *model); - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void nodeCreated(const ModelNode &createdNode); void nodeAboutToBeRemoved(const ModelNode &removedNode); diff --git a/src/plugins/qmldesigner/components/integration/componentview.cpp b/src/plugins/qmldesigner/components/integration/componentview.cpp index fd1c4b132ea..214f0484edc 100644 --- a/src/plugins/qmldesigner/components/integration/componentview.cpp +++ b/src/plugins/qmldesigner/components/integration/componentview.cpp @@ -185,6 +185,6 @@ void ComponentView::nodeOrderChanged(const NodeListProperty &/*listProperty*/, c void ComponentView::auxiliaryDataChanged(const ModelNode &/*node*/, const QString &/*name*/, const QVariant &/*data*/) {} void ComponentView::customNotification(const AbstractView * /*view*/, const QString &/*identifier*/, const QList &/*nodeList*/, const QList &/*data*/) {} - +void ComponentView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) {} } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/integration/componentview.h b/src/plugins/qmldesigner/components/integration/componentview.h index cb542ed1726..db99d61dd98 100644 --- a/src/plugins/qmldesigner/components/integration/componentview.h +++ b/src/plugins/qmldesigner/components/integration/componentview.h @@ -95,6 +95,7 @@ public: void customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data); + void importsChanged(const QList &addedImports, const QList &removedImports); QStandardItemModel *standardItemModel() const; diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 1bc64542b5a..34c04b9b1e0 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -481,8 +481,7 @@ void DesignDocumentController::copySelected() QScopedPointer model(Model::create("Qt/Rectangle")); model->setMetaInfo(m_d->model->metaInfo()); model->setFileUrl(m_d->model->fileUrl()); - foreach (const Import &import, m_d->model->imports()) - model->addImport(import); + model->changeImports(m_d->model->imports(), QList()); Q_ASSERT(model); @@ -578,8 +577,8 @@ void DesignDocumentController::paste() QScopedPointer model(Model::create("empty")); model->setMetaInfo(m_d->model->metaInfo()); model->setFileUrl(m_d->model->fileUrl()); - foreach (const Import &import, m_d->model->imports()) - model->addImport(import); + model->changeImports(m_d->model->imports(), QList()); + Q_ASSERT(model); if (!m_d->model) diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp index 11e646a5efb..7f1c0ac0572 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp @@ -107,6 +107,11 @@ void DesignDocumentControllerView::actualStateChanged(const ModelNode &/*node*/) { } +void DesignDocumentControllerView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) +{ + +} + static QStringList arrayToStringList(const QByteArray &byteArray) { QString str(QString::fromLatin1(byteArray)); diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.h b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.h index 586c196a0b3..30dbf9a7f68 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.h +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.h @@ -75,6 +75,8 @@ public: void actualStateChanged(const ModelNode &node); + void importsChanged(const QList &addedImports, const QList &removedImports); + ModelNode insertModel(const ModelNode &modelNode) { return m_modelMerger.insertModel(modelNode); } void replaceModel(const ModelNode &modelNode) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp index d7dc82e8a3e..a04709af98f 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp @@ -32,12 +32,7 @@ void ItemLibraryView::modelAboutToBeDetached(Model *model) m_widget->setModel(0); } -void ItemLibraryView::importAdded(const Import &) -{ - updateImports(); -} - -void ItemLibraryView::importRemoved(const Import &) +void ItemLibraryView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) { updateImports(); } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h index 7bc936c97d1..3f11f9a5131 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h @@ -58,8 +58,7 @@ public: void modelAttached(Model *model); void modelAboutToBeDetached(Model *model); - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void nodeCreated(const ModelNode &createdNode); void nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 4eeaac24dc6..9c38729bbd1 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -500,18 +500,20 @@ void ItemLibraryWidget::wheelEvent(QWheelEvent *event) { if (!m_d->model) return; + + QList toBeRemovedImportList; foreach (const Import &import, m_d->model->imports()) if (import.isLibraryImport() && import.url().compare(name, Qt::CaseInsensitive) == 0) - m_d->model->removeImport(import); + toBeRemovedImportList.append(import); + + m_d->model->changeImports(QList(), toBeRemovedImportList); } void ItemLibraryWidget::addImport(const QString &name, const QString &version) { if (!m_d->model) return; - - m_d->model->addImport(Import::createLibraryImport(name, version)); - + m_d->model->changeImports(QList() << Import::createLibraryImport(name, version), QList()); } } diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 65ebb49e7dc..bbf2c04db94 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -111,17 +111,11 @@ void NavigatorView::modelAboutToBeDetached(Model *model) AbstractView::modelAboutToBeDetached(model); } -void NavigatorView::importAdded(const Import &) +void NavigatorView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) { treeWidget()->update(); } -void NavigatorView::importRemoved(const Import &) -{ - treeWidget()->update(); -} - - void NavigatorView::nodeCreated(const ModelNode & /*createdNode*/) { } diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.h b/src/plugins/qmldesigner/components/navigator/navigatorview.h index c39a6f74ef3..11b889975dc 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.h +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.h @@ -66,8 +66,7 @@ public: void modelAttached(Model *model); void modelAboutToBeDetached(Model *model); - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void nodeCreated(const ModelNode &createdNode); void nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange); diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 3162b86cfe5..547db245502 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -141,7 +141,7 @@ void StatesEditorView::addState() try { if (rootStateGroup().allStates().count() < 1) - model()->addImport(Import::createLibraryImport("QtQuick", "1.0")); + model()->changeImports(QList() << Import::createLibraryImport("QtQuick", "1.0"), QList()); ModelNode newState = rootStateGroup().addState(newStateName); setCurrentState(newState); } catch (RewritingException &e) { diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index 188f7e36afa..461f6dc778e 100644 --- a/src/plugins/qmldesigner/designercore/include/abstractview.h +++ b/src/plugins/qmldesigner/designercore/include/abstractview.h @@ -154,8 +154,7 @@ public: virtual void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) = 0; - virtual void importAdded(const Import &import); - virtual void importRemoved(const Import &import); + virtual void importsChanged(const QList &addedImports, const QList &removedImports) = 0; virtual void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data); diff --git a/src/plugins/qmldesigner/designercore/include/forwardview.h b/src/plugins/qmldesigner/designercore/include/forwardview.h index d1358e74582..d90dee3b516 100644 --- a/src/plugins/qmldesigner/designercore/include/forwardview.h +++ b/src/plugins/qmldesigner/designercore/include/forwardview.h @@ -74,9 +74,7 @@ public: void fileUrlChanged(const QUrl &oldUrl, const QUrl &newUrl); void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex); - - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data); @@ -224,12 +222,10 @@ void ForwardView::nodeOrderChanged(const NodeListProperty &listPropert } template -void ForwardView::importAdded(const Import &import) +void ForwardView::importChanged(const QList &addedImports, const QList &removedImports) { - AbstractView::importAdded(import); - foreach (const ViewTypePointer &view, m_targetViewList) - view->importAdded(import); + view->importChanged(addedImport, removedImport); } template diff --git a/src/plugins/qmldesigner/designercore/include/model.h b/src/plugins/qmldesigner/designercore/include/model.h index 49b65213734..2445a7389d8 100644 --- a/src/plugins/qmldesigner/designercore/include/model.h +++ b/src/plugins/qmldesigner/designercore/include/model.h @@ -105,8 +105,7 @@ public: // Imports: QList imports() const; - void addImport(const Import &import); - void removeImport(const Import &import); + void changeImports(const QList &importsToBeAdded, const QList &importsToBeRemoved); RewriterView *rewriterView() const; diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index 9430a190264..038e7000169 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -103,8 +103,7 @@ public: void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList); void instancePropertyChange(const QList > &propertyList); void instancesCompleted(const QVector &completedNodeList); - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void instanceInformationsChange(const QVector &nodeList); void instancesRenderImageChanged(const QVector &nodeList); void instancesPreviewImageChanged(const QVector &nodeList); diff --git a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h index 2fe58761cd1..33e9b86cfba 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h +++ b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h @@ -119,6 +119,7 @@ public: void scriptFunctionsChanged(const ModelNode &node, const QStringList &scriptFunctionList); void selectedNodesChanged(const QList &selectedNodeList, const QList &lastSelectedNodeList); + void importsChanged(const QList &addedImports, const QList &removedImports); protected: NodeInstance instanceForModelNode(const ModelNode &modelNode); diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 2ae356ebef6..3a03ca4b0dc 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -152,6 +152,7 @@ public: void importAdded(const Import &import); void importRemoved(const Import &import); + void importsChanged(const QList &addedImports, const QList &removedImports); void fileUrlChanged(const QUrl &oldUrl, const QUrl &newUrl); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index aa375a34ce2..f4c555f6e1c 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -443,13 +443,7 @@ void NodeInstanceView::instancesCompleted(const QVector &/*completedN { } -void NodeInstanceView::importAdded(const Import & /*import*/) -{ - restartProcess(); -} - - -void NodeInstanceView::importRemoved(const Import &/*import*/) +void NodeInstanceView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) { restartProcess(); } diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index b002c7c7e65..dfd85766889 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -206,22 +206,6 @@ void AbstractView::fileUrlChanged(const QUrl &/*oldUrl*/, const QUrl &/*newUrl*/ { } -/*! -\fn AbstractView::importAdded(const Import &import) -\brief Called when an import has been added to the model -*/ -void AbstractView::importAdded(const Import &/*import*/) -{ -} - -/*! -\fn AbstractView::importRemoved(const Import &import) -\brief Called when an import has been removed from the model -*/ -void AbstractView::importRemoved(const Import &/*import*/) -{ -} - /*! \fn void AbstractView::nodeAboutToBeRemoved(const ModelNode &) \brief this is called if a node will be removed diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 5e8a1721bd5..5a3afcaa816 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -132,31 +132,36 @@ Model *ModelPrivate::create(QString type, int major, int minor) return model; } -void ModelPrivate::addImport(const Import &import) +void ModelPrivate::changeImports(const QList &toBeAddedImportList, const QList &toBeRemovedImportList) { - if (m_imports.contains(import)) - return; + QList removedImportList; + foreach (const Import &import, toBeRemovedImportList) { + if (m_imports.contains(import)) { + removedImportList.append(import); + m_imports.removeOne(import); + } + } - m_imports.append(import); - notifyImportAdded(import); + QList addedImportList; + foreach (const Import &import, toBeAddedImportList) { + if (!m_imports.contains(import)) { + addedImportList.append(import); + m_imports.append(import); + } + } + + if (!removedImportList.isEmpty() || !addedImportList.isEmpty()) + notifyImportsChanged(addedImportList, removedImportList); } -void ModelPrivate::removeImport(const Import &import) -{ - if (!m_imports.removeOne(import)) - return; - - notifyImportRemoved(import); -} - -void ModelPrivate::notifyImportAdded(const Import &import) +void ModelPrivate::notifyImportsChanged(const QList &addedImports, const QList &removedImports) { bool resetModel = false; QString description; try { if (rewriterView()) { - rewriterView()->importAdded(import); + rewriterView()->importsChanged(addedImports, removedImports); } } catch (RewritingException &e) { description = e.description(); @@ -166,37 +171,10 @@ void ModelPrivate::notifyImportAdded(const Import &import) NodeMetaInfo::clearCache(); if (nodeInstanceView()) - nodeInstanceView()->importAdded(import); + nodeInstanceView()->importsChanged(addedImports, removedImports); foreach (const QWeakPointer &view, m_viewList) - view->importAdded(import); - - if (resetModel) { - resetModelByRewriter(description); - } -} - -void ModelPrivate::notifyImportRemoved(const Import &import) -{ - bool resetModel = false; - QString description; - - try { - if (rewriterView()) { - rewriterView()->importRemoved(import); - } - } catch (RewritingException &e) { - description = e.description(); - resetModel = true; - } - - NodeMetaInfo::clearCache(); - - if (nodeInstanceView()) - nodeInstanceView()->importRemoved(import); - - foreach (const QWeakPointer &view, m_viewList) - view->importRemoved(import); + view->importsChanged(addedImports, removedImports); if (resetModel) { resetModelByRewriter(description); @@ -1698,14 +1676,9 @@ QList Model::imports() const return m_d->imports(); } -void Model::addImport(const Import &import) +void Model::changeImports(const QList &importsToBeAdded, const QList &importsToBeRemoved) { - m_d->addImport(import); -} - -void Model::removeImport(const Import &import) -{ - m_d->removeImport(import); + m_d->changeImports(importsToBeAdded, importsToBeRemoved); } RewriterView *Model::rewriterView() const diff --git a/src/plugins/qmldesigner/designercore/model/model_p.h b/src/plugins/qmldesigner/designercore/model/model_p.h index 8e4df9947a6..2f15c18082f 100644 --- a/src/plugins/qmldesigner/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/designercore/model/model_p.h @@ -175,8 +175,8 @@ public: QList imports() const { return m_imports; } void addImport(const Import &import); void removeImport(const Import &import); - void notifyImportAdded(const Import &import); - void notifyImportRemoved(const Import &import); + void changeImports(const QList &importsToBeAdded, const QList &importToBeRemoved); + void notifyImportsChanged(const QList &addedImports, const QList &removedImports); //node state property manipulation diff --git a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp index 1193d8c88e5..b87d831ee60 100644 --- a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp @@ -158,10 +158,9 @@ static ModelNode createNodeFromNode(const ModelNode &modelNode,const QHashbeginRewriterTransaction()); + RewriterTransaction transaction(view()->beginRewriterTransaction()); - foreach (const Import &import, modelNode.model()->imports()) - view()->model()->addImport(import); + view()->model()->changeImports(modelNode.model()->imports(), QList()); QHash idRenamingHash; setupIdRenamingHash(modelNode, idRenamingHash, view()); @@ -176,8 +175,7 @@ void ModelMerger::replaceModel(const ModelNode &modelNode) try { RewriterTransaction transaction(view()->beginRewriterTransaction()); - foreach (const Import &import, modelNode.model()->imports()) - view()->model()->addImport(import); + view()->model()->changeImports(modelNode.model()->imports(), QList()); view()->model()->setFileUrl(modelNode.model()->fileUrl()); ModelNode rootNode(view()->rootModelNode()); diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp index 469172cc4e2..88936964c23 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp @@ -117,7 +117,7 @@ QmlItemNode QmlModelView::createQmlItemNodeFromImage(const QString &imageName, c } if (!model()->imports().contains(newImport)) { - model()->addImport(newImport); + model()->changeImports(QList() << newImport, QList()); } QList > propertyPairList; @@ -187,7 +187,7 @@ QmlItemNode QmlModelView::createQmlItemNode(const ItemLibraryEntry &itemLibraryE } if (!model()->imports().contains(newImport)) { - model()->addImport(newImport); + model()->changeImports(QList() << newImport, QList()); } } @@ -372,6 +372,10 @@ void QmlModelView::instancesChildrenChanged(const QVector &/*nodeList } +void QmlModelView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) +{ + +} void QmlModelView::rewriterBeginTransaction() { diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 69059c44f84..fb77a03f2f3 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -283,6 +283,15 @@ void RewriterView::nodeAboutToBeReparented(const ModelNode &/*node*/, const Node { } +void RewriterView::importsChanged(const QList &addedImports, const QList &removedImports) +{ + foreach (const Import &import, addedImports) + importAdded(import); + + foreach (const Import &import, removedImports) + importRemoved(import); + +} void RewriterView::importAdded(const Import &import) { diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 454f2203f7f..39c3d9c33bb 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -1152,12 +1152,12 @@ void ModelValidator::idsDiffer(ModelNode &modelNode, const QString &qmlId) void ModelAmender::modelMissesImport(const Import &import) { - m_merger->view()->model()->addImport(import); + m_merger->view()->model()->changeImports(QList() << import, QList()); } void ModelAmender::importAbsentInQMl(const Import &import) { - m_merger->view()->model()->removeImport(import); + m_merger->view()->model()->changeImports(QList(), QList() << import); } void ModelAmender::bindingExpressionsDiffer(BindingProperty &modelProperty, diff --git a/src/plugins/qmldesigner/designercore/model/viewlogger.cpp b/src/plugins/qmldesigner/designercore/model/viewlogger.cpp index 0ed9e9d442a..253ed1f28f7 100644 --- a/src/plugins/qmldesigner/designercore/model/viewlogger.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewlogger.cpp @@ -183,16 +183,20 @@ void ViewLogger::nodeOrderChanged(const NodeListProperty &listProperty, const Mo m_output << time() << indent("nodeOrderChanged:") << listProperty << movedNode << oldIndex << endl; } -void ViewLogger::importsChanged() -{ - m_output << time() << indent("importsChanged:") << endl; -} - void ViewLogger::auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data) { m_output << time() << indent("auxiliaryDataChanged:") << node << "\t" << name << "\t" << data.toString() << endl; } +void ViewLogger::importsChanged(const QList &addedImports, const QList &removedImports) +{ + m_output << time() << indent("importsChanged:") << endl; + foreach(const Import &import, addedImports) + m_output << time() << indent("import added: ") << import.toString() << endl; + foreach(const Import &import, removedImports) + m_output << time() << indent("import removed: ") << import.toString() << endl; +} + void ViewLogger::customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data) { m_output << time() << indent("customNotification:") << view << identifier << endl; diff --git a/src/plugins/qmldesigner/designercore/model/viewlogger.h b/src/plugins/qmldesigner/designercore/model/viewlogger.h index 2841e03c3ba..004fc398bda 100644 --- a/src/plugins/qmldesigner/designercore/model/viewlogger.h +++ b/src/plugins/qmldesigner/designercore/model/viewlogger.h @@ -70,7 +70,7 @@ public: void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex); - void importsChanged(); + void importsChanged(const QList &addedImports, const QList &removedImports); void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data);