diff options
16 files changed, 334 insertions, 99 deletions
diff --git a/src/plugins/qmldesigner/designercore/designercore.pri b/src/plugins/qmldesigner/designercore/designercore.pri index bac4a7972b..1165001b27 100644 --- a/src/plugins/qmldesigner/designercore/designercore.pri +++ b/src/plugins/qmldesigner/designercore/designercore.pri @@ -106,7 +106,8 @@ SOURCES += $$PWD/model/abstractview.cpp \ $$PWD/instances/statepreviewimagechangedcommand.cpp \ $$PWD/instances/imagecontainer.cpp \ $$PWD/instances/completecomponentcommand.cpp \ - $$PWD/instances/componentcompletedcommand.cpp + $$PWD/instances/componentcompletedcommand.cpp \ + $$PWD/instances/addimportcontainer.cpp HEADERS += $$PWD/include/corelib_global.h \ $$PWD/include/abstractview.h \ @@ -212,7 +213,8 @@ HEADERS += $$PWD/include/corelib_global.h \ $$PWD/instances/statepreviewimagechangedcommand.h \ $$PWD/instances/imagecontainer.h \ $$PWD/instances/completecomponentcommand.h \ - $$PWD/instances/componentcompletedcommand.h + $$PWD/instances/componentcompletedcommand.h \ + $$PWD/instances/addimportcontainer.h contains(CONFIG, plugin) { # If core.pri has been included in the qmldesigner plugin SOURCES += $$PWD/model/basetexteditmodifier.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp b/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp index bb132896d0..c8ad15fc7c 100644 --- a/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp +++ b/src/plugins/qmldesigner/designercore/instances/addimportcommand.cpp @@ -6,58 +6,27 @@ AddImportCommand::AddImportCommand() { } -AddImportCommand::AddImportCommand(const QUrl &url, const QString &fileName, const QString &version, const QString &alias, const QStringList &importPathList) - : m_url(url), - m_fileName(fileName), - m_version(version), - m_alias(alias), - m_importPathList(importPathList) +AddImportCommand::AddImportCommand(const AddImportContainer &container) + : m_importContainer(container) { } -QUrl AddImportCommand::url() const +AddImportContainer AddImportCommand::import() const { - return m_url; + return m_importContainer; } -QString AddImportCommand::fileName() const -{ - return m_fileName; -} - -QString AddImportCommand::version() const -{ - return m_version; -} - -QString AddImportCommand::alias() const -{ - return m_alias; -} - -QStringList AddImportCommand::importPaths() const -{ - return m_importPathList; -} QDataStream &operator<<(QDataStream &out, const AddImportCommand &command) { - out << command.url(); - out << command.fileName(); - out << command.version(); - out << command.alias(); - out << command.importPaths(); + out << command.import(); return out; } QDataStream &operator>>(QDataStream &in, AddImportCommand &command) { - in >> command.m_url; - in >> command.m_fileName; - in >> command.m_version; - in >> command.m_alias; - in >> command.m_importPathList; + in >> command.m_importContainer; return in; } diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcommand.h b/src/plugins/qmldesigner/designercore/instances/addimportcommand.h index 748e40b47f..17cc7bc708 100644 --- a/src/plugins/qmldesigner/designercore/instances/addimportcommand.h +++ b/src/plugins/qmldesigner/designercore/instances/addimportcommand.h @@ -1,10 +1,7 @@ #ifndef ADDIMPORTCOMMAND_H #define ADDIMPORTCOMMAND_H -#include <QMetaType> -#include <QUrl> -#include <QString> -#include <QStringList> +#include "addimportcontainer.h" namespace QmlDesigner { @@ -13,20 +10,12 @@ class AddImportCommand friend QDataStream &operator>>(QDataStream &in, AddImportCommand &command); public: AddImportCommand(); - AddImportCommand(const QUrl &url, const QString &fileName, const QString &version, const QString &alias, const QStringList &mportPathList); + AddImportCommand(const AddImportContainer &container); - QUrl url() const; - QString fileName() const; - QString version() const; - QString alias() const; - QStringList importPaths() const; + AddImportContainer import() const; private: - QUrl m_url; - QString m_fileName; - QString m_version; - QString m_alias; - QStringList m_importPathList; + AddImportContainer m_importContainer; }; QDataStream &operator<<(QDataStream &out, const AddImportCommand &command); diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcontainer.cpp b/src/plugins/qmldesigner/designercore/instances/addimportcontainer.cpp new file mode 100644 index 0000000000..6df7f25e6b --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/addimportcontainer.cpp @@ -0,0 +1,65 @@ +#include "addimportcontainer.h" + +namespace QmlDesigner { + +AddImportContainer::AddImportContainer() +{ +} + +AddImportContainer::AddImportContainer(const QUrl &url, const QString &fileName, const QString &version, const QString &alias, const QStringList &importPathList) + : m_url(url), + m_fileName(fileName), + m_version(version), + m_alias(alias), + m_importPathList(importPathList) +{ +} + +QUrl AddImportContainer::url() const +{ + return m_url; +} + +QString AddImportContainer::fileName() const +{ + return m_fileName; +} + +QString AddImportContainer::version() const +{ + return m_version; +} + +QString AddImportContainer::alias() const +{ + return m_alias; +} + +QStringList AddImportContainer::importPaths() const +{ + return m_importPathList; +} + +QDataStream &operator<<(QDataStream &out, const AddImportContainer &command) +{ + out << command.url(); + out << command.fileName(); + out << command.version(); + out << command.alias(); + out << command.importPaths(); + + return out; +} + +QDataStream &operator>>(QDataStream &in, AddImportContainer &command) +{ + in >> command.m_url; + in >> command.m_fileName; + in >> command.m_version; + in >> command.m_alias; + in >> command.m_importPathList; + + return in; +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/addimportcontainer.h b/src/plugins/qmldesigner/designercore/instances/addimportcontainer.h new file mode 100644 index 0000000000..c06c3a6d10 --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/addimportcontainer.h @@ -0,0 +1,39 @@ +#ifndef ADDIMPORTCONTAINER_H +#define ADDIMPORTCONTAINER_H + +#include <QMetaType> +#include <QUrl> +#include <QString> +#include <QStringList> + +namespace QmlDesigner { + +class AddImportContainer +{ + friend QDataStream &operator>>(QDataStream &in, AddImportContainer &command); +public: + AddImportContainer(); + AddImportContainer(const QUrl &url, const QString &fileName, const QString &version, const QString &alias, const QStringList &mportPathList); + + QUrl url() const; + QString fileName() const; + QString version() const; + QString alias() const; + QStringList importPaths() const; + +private: + QUrl m_url; + QString m_fileName; + QString m_version; + QString m_alias; + QStringList m_importPathList; +}; + +QDataStream &operator<<(QDataStream &out, const AddImportContainer &command); +QDataStream &operator>>(QDataStream &in, AddImportContainer &command); + +} // namespace QmlDesigner + +Q_DECLARE_METATYPE(QmlDesigner::AddImportContainer) + +#endif // ADDIMPORTCONTAINER_H diff --git a/src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp b/src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp index 4842feb601..4c0ba197d5 100644 --- a/src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp +++ b/src/plugins/qmldesigner/designercore/instances/createscenecommand.cpp @@ -11,12 +11,14 @@ CreateSceneCommand::CreateSceneCommand(const QVector<InstanceContainer> &instanc const QVector<IdContainer> &idVector, const QVector<PropertyValueContainer> &valueChangeVector, const QVector<PropertyBindingContainer> &bindingChangeVector, + const QVector<AddImportContainer> &importVector, const QUrl &fileUrl) : m_instanceVector(instanceContainer), m_reparentInstanceVector(reparentContainer), m_idVector(idVector), m_valueChangeVector(valueChangeVector), m_bindingChangeVector(bindingChangeVector), + m_importVector(importVector), m_fileUrl(fileUrl) { } @@ -46,6 +48,11 @@ QVector<PropertyBindingContainer> CreateSceneCommand::bindingChanges() const return m_bindingChangeVector; } +QVector<AddImportContainer> CreateSceneCommand::imports() const +{ + return m_importVector; +} + QUrl CreateSceneCommand::fileUrl() const { return m_fileUrl; @@ -58,6 +65,7 @@ QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command) out << command.ids(); out << command.valueChanges(); out << command.bindingChanges(); + out << command.imports(); out << command.fileUrl(); return out; @@ -70,6 +78,7 @@ QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command) in >> command.m_idVector; in >> command.m_valueChangeVector; in >> command.m_bindingChangeVector; + in >> command.m_importVector; in >> command.m_fileUrl; return in; diff --git a/src/plugins/qmldesigner/designercore/instances/createscenecommand.h b/src/plugins/qmldesigner/designercore/instances/createscenecommand.h index 0423d75435..8ed13b0ce4 100644 --- a/src/plugins/qmldesigner/designercore/instances/createscenecommand.h +++ b/src/plugins/qmldesigner/designercore/instances/createscenecommand.h @@ -10,7 +10,7 @@ #include "idcontainer.h" #include "propertyvaluecontainer.h" #include "propertybindingcontainer.h" - +#include "addimportcontainer.h" namespace QmlDesigner { @@ -25,6 +25,7 @@ public: const QVector<IdContainer> &idVector, const QVector<PropertyValueContainer> &valueChangeVector, const QVector<PropertyBindingContainer> &bindingChangeVector, + const QVector<AddImportContainer> &importVector, const QUrl &fileUrl); QVector<InstanceContainer> instances() const; @@ -32,6 +33,7 @@ public: QVector<IdContainer> ids() const; QVector<PropertyValueContainer> valueChanges() const; QVector<PropertyBindingContainer> bindingChanges() const; + QVector<AddImportContainer> imports() const; QUrl fileUrl() const; private: @@ -40,6 +42,7 @@ private: QVector<IdContainer> m_idVector; QVector<PropertyValueContainer> m_valueChangeVector; QVector<PropertyBindingContainer> m_bindingChangeVector; + QVector<AddImportContainer> m_importVector; QUrl m_fileUrl; }; diff --git a/src/plugins/qmldesigner/designercore/instances/instances.pri b/src/plugins/qmldesigner/designercore/instances/instances.pri index 060f8ed144..662289f8a3 100644 --- a/src/plugins/qmldesigner/designercore/instances/instances.pri +++ b/src/plugins/qmldesigner/designercore/instances/instances.pri @@ -3,6 +3,8 @@ INCLUDEPATH += $$PWD/../include HEADERS += $$PWD/behaviornodeinstance.h +HEADERS += $$PWD/addimportcontainer.h +HEADERS += $$PWD/previewnodeinstanceserver.h HEADERS += $$PWD/componentcompletedcommand.h HEADERS += $$PWD//completecomponentcommand.h HEADERS += $$PWDstatepreviewimagechangedcommand.h @@ -47,6 +49,8 @@ HEADERS += $$PWD/../include/nodeinstanceserverinterface.h SOURCES += $$PWD/behaviornodeinstance.cpp +SOURCES += $$PWD/addimportcontainer.cpp +SOURCES += $$PWD/previewnodeinstanceserver.cpp SOURCES += $$PWD/componentcompletedcommand.cpp SOURCES += $$PWD/completecomponentcommand.cpp SOURCES += $$PWD/statepreviewimagechangedcommand.cpp diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp index bf1a1dec41..c9cd903b5a 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp @@ -6,6 +6,7 @@ #include <QStringList> #include "nodeinstanceserver.h" +#include "previewnodeinstanceserver.h" #include "propertyabstractcontainer.h" #include "propertyvaluecontainer.h" @@ -37,7 +38,8 @@ namespace QmlDesigner { NodeInstanceClientProxy::NodeInstanceClientProxy(QObject *parent) : QObject(parent), - m_nodeinstanceServer(new NodeInstanceServer(this)), + m_nodeInstanceServer(new NodeInstanceServer(this)), + m_baseStateNodeInstancePreview(new PreviewNodeInstanceServer(this)), m_blockSize(0) { m_slowSocket = new QLocalSocket(this); @@ -148,7 +150,72 @@ void NodeInstanceClientProxy::readDataStream() NodeInstanceServerInterface *NodeInstanceClientProxy::nodeInstanceServer() const { - return m_nodeinstanceServer; + return m_nodeInstanceServer; +} + +void NodeInstanceClientProxy::createInstances(const CreateInstancesCommand &command) +{ + nodeInstanceServer()->createInstances(command); +} + +void NodeInstanceClientProxy::changeFileUrl(const ChangeFileUrlCommand &command) +{ + nodeInstanceServer()->changeFileUrl(command); +} + +void NodeInstanceClientProxy::createScene(const CreateSceneCommand &command) +{ + nodeInstanceServer()->createScene(command); +} + +void NodeInstanceClientProxy::clearScene(const ClearSceneCommand &command) +{ + nodeInstanceServer()->clearScene(command); +} + +void NodeInstanceClientProxy::removeInstances(const RemoveInstancesCommand &command) +{ + nodeInstanceServer()->removeInstances(command); +} + +void NodeInstanceClientProxy::removeProperties(const RemovePropertiesCommand &command) +{ + nodeInstanceServer()->removeProperties(command); +} + +void NodeInstanceClientProxy::changePropertyBindings(const ChangeBindingsCommand &command) +{ + nodeInstanceServer()->changePropertyBindings(command); +} + +void NodeInstanceClientProxy::changePropertyValues(const ChangeValuesCommand &command) +{ + nodeInstanceServer()->changePropertyValues(command); +} + +void NodeInstanceClientProxy::reparentInstances(const ReparentInstancesCommand &command) +{ + nodeInstanceServer()->reparentInstances(command); +} + +void NodeInstanceClientProxy::changeIds(const ChangeIdsCommand &command) +{ + nodeInstanceServer()->changeIds(command); +} + +void NodeInstanceClientProxy::changeState(const ChangeStateCommand &command) +{ + nodeInstanceServer()->changeState(command); +} + +void NodeInstanceClientProxy::addImport(const AddImportCommand &command) +{ + nodeInstanceServer()->addImport(command); +} + +void NodeInstanceClientProxy::completeComponent(const CompleteComponentCommand &command) +{ + nodeInstanceServer()->completeComponent(command); } void NodeInstanceClientProxy::dispatchCommand(const QVariant &command) @@ -167,32 +234,32 @@ void NodeInstanceClientProxy::dispatchCommand(const QVariant &command) static const int addImportCommandType = QMetaType::type("AddImportCommand"); static const int completeComponentCommandType = QMetaType::type("CompleteComponentCommand"); - if (command.userType() == createInstancesCommandType) - nodeInstanceServer()->createInstances(command.value<CreateInstancesCommand>()); - else if (command.userType() == changeFileUrlCommandType) - nodeInstanceServer()->changeFileUrl(command.value<ChangeFileUrlCommand>()); + if (command.userType() == createInstancesCommandType) { + createInstances(command.value<CreateInstancesCommand>()); + } else if (command.userType() == changeFileUrlCommandType) + changeFileUrl(command.value<ChangeFileUrlCommand>()); else if (command.userType() == createSceneCommandType) - nodeInstanceServer()->createScene(command.value<CreateSceneCommand>()); + createScene(command.value<CreateSceneCommand>()); else if (command.userType() == clearSceneCommandType) - nodeInstanceServer()->clearScene(command.value<ClearSceneCommand>()); + clearScene(command.value<ClearSceneCommand>()); else if (command.userType() == removeInstancesCommandType) - nodeInstanceServer()->removeInstances(command.value<RemoveInstancesCommand>()); + removeInstances(command.value<RemoveInstancesCommand>()); else if (command.userType() == removePropertiesCommandType) - nodeInstanceServer()->removeProperties(command.value<RemovePropertiesCommand>()); + removeProperties(command.value<RemovePropertiesCommand>()); else if (command.userType() == changeBindingsCommandType) - nodeInstanceServer()->changePropertyBindings(command.value<ChangeBindingsCommand>()); + changePropertyBindings(command.value<ChangeBindingsCommand>()); else if (command.userType() == changeValuesCommandType) - nodeInstanceServer()->changePropertyValues(command.value<ChangeValuesCommand>()); + changePropertyValues(command.value<ChangeValuesCommand>()); else if (command.userType() == reparentInstancesCommandType) - nodeInstanceServer()->reparentInstances(command.value<ReparentInstancesCommand>()); + reparentInstances(command.value<ReparentInstancesCommand>()); else if (command.userType() == changeIdsCommandType) - nodeInstanceServer()->changeIds(command.value<ChangeIdsCommand>()); + changeIds(command.value<ChangeIdsCommand>()); else if (command.userType() == changeStateCommandType) - nodeInstanceServer()->changeState(command.value<ChangeStateCommand>()); + changeState(command.value<ChangeStateCommand>()); else if (command.userType() == addImportCommandType) - nodeInstanceServer()->addImport(command.value<AddImportCommand>()); + addImport(command.value<AddImportCommand>()); else if (command.userType() == completeComponentCommandType) - nodeInstanceServer()->completeComponent(command.value<CompleteComponentCommand>()); + completeComponent(command.value<CompleteComponentCommand>()); else Q_ASSERT(false); } diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h index e28d8071b6..6d769c114c 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h @@ -4,6 +4,8 @@ #include "nodeinstanceclientinterface.h" #include <QObject> +#include <QHash> +#include <QWeakPointer> QT_BEGIN_NAMESPACE class QLocalSocket; @@ -12,6 +14,19 @@ QT_END_NAMESPACE namespace QmlDesigner { class NodeInstanceServerInterface; +class CreateSceneCommand; +class CreateInstancesCommand; +class ClearSceneCommand; +class ReparentInstancesCommand; +class ChangeFileUrlCommand; +class ChangeValuesCommand; +class ChangeBindingsCommand; +class ChangeIdsCommand; +class RemoveInstancesCommand; +class RemovePropertiesCommand; +class AddImportCommand; +class CompleteComponentCommand; +class ChangeStateCommand; class NodeInstanceClientProxy : public QObject, public NodeInstanceClientInterface { @@ -36,13 +51,29 @@ protected: void dispatchCommand(const QVariant &command); NodeInstanceServerInterface *nodeInstanceServer() const; + void createInstances(const CreateInstancesCommand &command); + void changeFileUrl(const ChangeFileUrlCommand &command); + void createScene(const CreateSceneCommand &command); + void clearScene(const ClearSceneCommand &command); + void removeInstances(const RemoveInstancesCommand &command); + void removeProperties(const RemovePropertiesCommand &command); + void changePropertyBindings(const ChangeBindingsCommand &command); + void changePropertyValues(const ChangeValuesCommand &command); + void reparentInstances(const ReparentInstancesCommand &command); + void changeIds(const ChangeIdsCommand &command); + void changeState(const ChangeStateCommand &command); + void addImport(const AddImportCommand &command); + void completeComponent(const CompleteComponentCommand &command); + private slots: void readDataStream(); private: QLocalSocket *m_slowSocket; QLocalSocket *m_fastSocket; - NodeInstanceServerInterface *m_nodeinstanceServer; + NodeInstanceServerInterface *m_nodeInstanceServer; + NodeInstanceServerInterface *m_baseStateNodeInstancePreview; + QHash<qint32, QWeakPointer<NodeInstanceServerInterface> > m_nodeInstancePreviewVector; quint32 m_blockSize; }; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 87a7b1329f..4a034958cc 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -53,12 +53,8 @@ NodeInstanceServer::NodeInstanceServer(NodeInstanceClientInterface *nodeInstance m_timer(0), m_slowRenderTimer(false) { + m_importList.append("import Qt 4.7"); connect(m_childrenChangeEventFilter.data(), SIGNAL(childrenChanged(QObject*)), this, SLOT(emitParentChanged(QObject*))); - - m_declarativeView = new QDeclarativeView; - m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); - m_declarativeView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); - m_declarativeView->show(); } NodeInstanceServer::~NodeInstanceServer() @@ -159,9 +155,18 @@ void NodeInstanceServer::stopRenderTimer() void NodeInstanceServer::createScene(const CreateSceneCommand &command) { + Q_ASSERT(!m_declarativeView.data()); + + m_declarativeView = new QDeclarativeView; + m_declarativeView->setAttribute(Qt::WA_DontShowOnScreen, true); + m_declarativeView->setViewportUpdateMode(QGraphicsView::NoViewportUpdate); + m_declarativeView->show(); + 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()); @@ -270,30 +275,37 @@ void NodeInstanceServer::completeComponent(const CompleteComponentCommand &comma nodeInstanceClient()->componentCompleted(createComponentCompletedCommand(instanceList)); } -void NodeInstanceServer::addImport(const AddImportCommand &command) +void NodeInstanceServer::addImports(const QVector<AddImportContainer> &containerVector) { - QString importStatement = QString("import "); + foreach (const AddImportContainer &container, containerVector) { + QString importStatement = QString("import "); + + if (!container.fileName().isEmpty()) + importStatement += '"' + container.fileName() + '"'; + else if (!container.url().isEmpty()) + importStatement += container.url().toString(); - if (!command.fileName().isEmpty()) - importStatement += '"' + command.fileName() + '"'; - else if (!command.url().isEmpty()) - importStatement += command.url().toString(); + if (!container.version().isEmpty()) + importStatement += " " + container.version(); - if (!command.version().isEmpty()) - importStatement += " " + command.version(); + if (!container.alias().isEmpty()) + importStatement += " as " + container.alias(); - if (!command.alias().isEmpty()) - importStatement += " as " + command.alias(); + if (!m_importList.contains(importStatement)) + m_importList.append(importStatement); - m_importList.append(importStatement); + foreach(const QString &importPath, container.importPaths()) { // this is simply ugly + engine()->addImportPath(importPath); + engine()->addPluginPath(importPath); + } + } QDeclarativeComponent importComponent(engine(), 0); - QString componentString = QString("import Qt 4.7\n%1\n Item{}\n").arg(importStatement); + QString componentString; + foreach(const QString &importStatement, m_importList) + componentString += QString("%1\n").arg(importStatement); - foreach(const QString &importPath, command.importPaths()) { - engine()->addImportPath(importPath); - engine()->addPluginPath(importPath); - } + componentString += QString("Item {}\n"); importComponent.setData(componentString.toUtf8(), QUrl()); @@ -301,6 +313,11 @@ void NodeInstanceServer::addImport(const AddImportCommand &command) qDebug() << "QmlDesigner.NodeInstances: import wrong: " << importComponent.errorString(); } +void NodeInstanceServer::addImport(const AddImportCommand &command) +{ + addImports(QVector<AddImportContainer>() << command.import()); +} + void NodeInstanceServer::changeFileUrl(const ChangeFileUrlCommand &command) { m_fileUrl = command.fileUrl(); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h index a50382eb33..1a1420eec3 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h @@ -25,6 +25,7 @@ class InformationChangedCommand; class ChildrenChangedCommand; class ReparentContainer; class ComponentCompletedCommand; +class AddImportContainer; namespace Internal { class ChildrenChangeEventFilter; @@ -87,7 +88,8 @@ public slots: protected: QList<ServerNodeInstance> createInstances(const QVector<InstanceContainer> &container); - void reparentInstances(const QVector<ReparentContainer> &container); + void reparentInstances(const QVector<ReparentContainer> &containerVector); + void addImports(const QVector<AddImportContainer> &container); Internal::ChildrenChangeEventFilter *childrenChangeEventFilter(); void resetInstanceProperty(const PropertyAbstractContainer &propertyContainer); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp index d4a567d20c..b789ae4f87 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverinterface.cpp @@ -17,6 +17,7 @@ #include "changeidscommand.h" #include "changestatecommand.h" #include "completecomponentcommand.h" +#include "addimportcontainer.h" #include "informationchangedcommand.h" #include "pixmapchangedcommand.h" @@ -125,6 +126,9 @@ void NodeInstanceServerInterface::registerCommands() qRegisterMetaType<ComponentCompletedCommand>("ComponentCompletedCommand"); qRegisterMetaTypeStreamOperators<ComponentCompletedCommand>("ComponentCompletedCommand"); + + qRegisterMetaType<AddImportContainer>("AddImportContainer"); + qRegisterMetaTypeStreamOperators<AddImportContainer>("AddImportContainer"); } } diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index b6cf360e0a..7dc0fbac08 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -144,9 +144,6 @@ void NodeInstanceView::modelAttached(Model *model) setBlockUpdates(true); - foreach(const Import &import, model->imports()) - nodeInstanceServer()->addImport(createImportCommand(import)); - nodeInstanceServer()->createScene(createCreateSceneCommand()); setBlockUpdates(false); @@ -704,11 +701,16 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand() } } + QVector<AddImportContainer> importVector; + foreach(const Import &import, model()->imports()) + importVector.append(AddImportContainer(import.url(), import.file(), import.version(), import.alias(), import.importPaths())); + return CreateSceneCommand(instanceContainerList, reparentContainerList, idContainerList, valueContainerList, bindingContainerList, + importVector, model()->fileUrl()); } @@ -886,7 +888,7 @@ RemovePropertiesCommand NodeInstanceView::createRemovePropertiesCommand(const QL AddImportCommand NodeInstanceView::createImportCommand(const Import &import) { - return AddImportCommand(import.url(), import.file(), import.version(), import.alias(), import.importPaths()); + return AddImportCommand(AddImportContainer(import.url(), import.file(), import.version(), import.alias(), import.importPaths())); } void NodeInstanceView::valuesChanged(const ValuesChangedCommand &command) diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp new file mode 100644 index 0000000000..ea258bca41 --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp @@ -0,0 +1,10 @@ +#include "previewnodeinstanceserver.h" + +namespace QmlDesigner { + +PreviewNodeInstanceServer::PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) : + NodeInstanceServer(nodeInstanceClient) +{ +} + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h new file mode 100644 index 0000000000..d5eba79629 --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h @@ -0,0 +1,22 @@ +#ifndef PREVIEWNODEINSTANCESERVER_H +#define PREVIEWNODEINSTANCESERVER_H + +#include "nodeinstanceserver.h" + +namespace QmlDesigner { + +class PreviewNodeInstanceServer : public NodeInstanceServer +{ + Q_OBJECT +public: + explicit PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient); + +signals: + +public slots: + +}; + +} // namespace QmlDesigner + +#endif // PREVIEWNODEINSTANCESERVER_H |