From e32cd328f3cc9d401b3320eafe3da99a286276ec Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Tue, 11 Jan 2011 14:09:12 +0100 Subject: [PATCH] QmlDesigner.NodeInstances: Refactor server --- .../instances/nodeinstanceserver.cpp | 83 +++++++++++-------- .../instances/nodeinstanceserver.h | 2 + 2 files changed, 50 insertions(+), 35 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index b8e5b67f70c..c85e0232bd1 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -155,41 +155,8 @@ void NodeInstanceServer::stopRenderTimer() void NodeInstanceServer::createScene(const CreateSceneCommand &command) { - Q_ASSERT(!m_declarativeView.data()); - - m_declarativeView = new QDeclarativeView; - m_declarativeView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); - m_declarativeView->show(); - m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); - - if (!command.fileUrl().isEmpty()) - engine()->setBaseUrl(command.fileUrl()); - - addImports(command.imports()); - - static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->processDirtyItemsEmitted = true; - - QList<ServerNodeInstance> instanceList = createInstances(command.instances()); - reparentInstances(command.reparentInstances()); - - foreach(const IdContainer &container, command.ids()) { - if (hasInstanceForId(container.instanceId())) - instanceForId(container.instanceId()).setId(container.id()); - } - - foreach(const PropertyValueContainer &container, command.valueChanges()) - setInstancePropertyVariant(container); - - foreach(const PropertyBindingContainer &container, command.bindingChanges()) - setInstancePropertyBinding(container); - - foreach(ServerNodeInstance instance, instanceList) - instance.doComponentComplete(); - - - - m_declarativeView->scene()->setSceneRect(rootNodeInstance().boundingRect()); - + initializeDeclarativeView(); + QList<ServerNodeInstance> instanceList = setupScene(command); nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(instanceList, true)); nodeInstanceClient()->valuesChanged(createValuesChangedCommand(instanceList)); @@ -807,6 +774,52 @@ void NodeInstanceServer::resetAllItems() static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->resetDirtyItem(item); } +void NodeInstanceServer::initializeDeclarativeView() +{ + Q_ASSERT(!m_declarativeView.data()); + + m_declarativeView = new QDeclarativeView; +#ifndef Q_WS_MAC + m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif + m_declarativeView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); + m_declarativeView->show(); +#ifdef Q_WS_MAC + m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); +#endif +} + +QList<ServerNodeInstance> NodeInstanceServer::setupScene(const CreateSceneCommand &command) +{ + if (!command.fileUrl().isEmpty()) + engine()->setBaseUrl(command.fileUrl()); + + addImports(command.imports()); + + static_cast<QGraphicsScenePrivate*>(QObjectPrivate::get(m_declarativeView->scene()))->processDirtyItemsEmitted = true; + + QList<ServerNodeInstance> instanceList = createInstances(command.instances()); + reparentInstances(command.reparentInstances()); + + foreach(const IdContainer &container, command.ids()) { + if (hasInstanceForId(container.instanceId())) + instanceForId(container.instanceId()).setId(container.id()); + } + + foreach(const PropertyValueContainer &container, command.valueChanges()) + setInstancePropertyVariant(container); + + foreach(const PropertyBindingContainer &container, command.bindingChanges()) + setInstancePropertyBinding(container); + + foreach(ServerNodeInstance instance, instanceList) + instance.doComponentComplete(); + + m_declarativeView->scene()->setSceneRect(rootNodeInstance().boundingRect()); + + return instanceList; +} + void NodeInstanceServer::findItemChangesAndSendChangeCommands() { static bool inFunction = false; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h index fb7af10d5f6..c209a915a7b 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h @@ -121,6 +121,8 @@ protected: void startRenderTimer(); void slowDownRenderTimer(); void stopRenderTimer(); + void initializeDeclarativeView(); + QList<ServerNodeInstance> setupScene(const CreateSceneCommand &command); private: ServerNodeInstance m_rootNodeInstance; -- GitLab