aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2020-11-09 16:35:00 +0100
committerMarco Bubke <marco.bubke@qt.io>2020-11-10 14:35:12 +0000
commit2a2dfbec7373c76bb4688e6500142fc17c4d6578 (patch)
tree4f8242f1157245dc306e03db31d66dcae1e2dba9 /share
parent2ee63af4cd70bdb98296c636ffb71efacd3c2308 (diff)
QmlDesigner: Add states to ImageCache
Task-number: QDS-2998 Change-Id: I8e65881181ae1010ef1f8bab92fa71d92c961bcd Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp138
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h118
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp43
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h1
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp5
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp9
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp2
8 files changed, 120 insertions, 198 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp
index 1ee34ff447..da86573a7a 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.cpp
@@ -29,136 +29,20 @@
namespace QmlDesigner {
-CreateSceneCommand::CreateSceneCommand() = default;
-
-CreateSceneCommand::CreateSceneCommand(const QVector<InstanceContainer> &instanceContainer,
- const QVector<ReparentContainer> &reparentContainer,
- const QVector<IdContainer> &idVector,
- const QVector<PropertyValueContainer> &valueChangeVector,
- const QVector<PropertyBindingContainer> &bindingChangeVector,
- const QVector<PropertyValueContainer> &auxiliaryChangeVector,
- const QVector<AddImportContainer> &importVector,
- const QVector<MockupTypeContainer> &mockupTypeVector,
- const QUrl &fileUrl,
- const QHash<QString, QVariantMap> &edit3dToolStates,
- const QString &language)
- : m_instanceVector(instanceContainer),
- m_reparentInstanceVector(reparentContainer),
- m_idVector(idVector),
- m_valueChangeVector(valueChangeVector),
- m_bindingChangeVector(bindingChangeVector),
- m_auxiliaryChangeVector(auxiliaryChangeVector),
- m_importVector(importVector),
- m_mockupTypeVector(mockupTypeVector),
- m_fileUrl(fileUrl),
- m_edit3dToolStates(edit3dToolStates),
- m_language(language)
-{
-}
-
-QVector<InstanceContainer> CreateSceneCommand::instances() const
-{
- return m_instanceVector;
-}
-
-QVector<ReparentContainer> CreateSceneCommand::reparentInstances() const
-{
- return m_reparentInstanceVector;
-}
-
-QVector<IdContainer> CreateSceneCommand::ids() const
-{
- return m_idVector;
-}
-
-QVector<PropertyValueContainer> CreateSceneCommand::valueChanges() const
-{
- return m_valueChangeVector;
-}
-
-QVector<PropertyBindingContainer> CreateSceneCommand::bindingChanges() const
-{
- return m_bindingChangeVector;
-}
-
-QVector<PropertyValueContainer> CreateSceneCommand::auxiliaryChanges() const
-{
- return m_auxiliaryChangeVector;
-}
-
-QVector<AddImportContainer> CreateSceneCommand::imports() const
-{
- return m_importVector;
-}
-
-QVector<MockupTypeContainer> CreateSceneCommand::mockupTypes() const
-{
- return m_mockupTypeVector;
-}
-
-QUrl CreateSceneCommand::fileUrl() const
-{
- return m_fileUrl;
-}
-
-QHash<QString, QVariantMap> CreateSceneCommand::edit3dToolStates() const
-{
- return m_edit3dToolStates;
-}
-
-QString CreateSceneCommand::language() const
-{
- return m_language;
-}
-
-QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command)
-{
- out << command.instances();
- out << command.reparentInstances();
- out << command.ids();
- out << command.valueChanges();
- out << command.bindingChanges();
- out << command.auxiliaryChanges();
- out << command.imports();
- out << command.mockupTypes();
- out << command.fileUrl();
- out << command.edit3dToolStates();
- out << command.language();
-
- return out;
-}
-
-QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command)
-{
- in >> command.m_instanceVector;
- in >> command.m_reparentInstanceVector;
- in >> command.m_idVector;
- in >> command.m_valueChangeVector;
- in >> command.m_bindingChangeVector;
- in >> command.m_auxiliaryChangeVector;
- in >> command.m_importVector;
- in >> command.m_mockupTypeVector;
- in >> command.m_fileUrl;
- in >> command.m_edit3dToolStates;
- in >> command.m_language;
-
- return in;
-}
-
QDebug operator <<(QDebug debug, const CreateSceneCommand &command)
{
return debug.nospace() << "CreateSceneCommand("
- << "instances: " << command.instances() << ", "
- << "reparentInstances: " << command.reparentInstances() << ", "
- << "ids: " << command.ids() << ", "
- << "valueChanges: " << command.valueChanges() << ", "
- << "bindingChanges: " << command.bindingChanges() << ", "
- << "auxiliaryChanges: " << command.auxiliaryChanges() << ", "
- << "imports: " << command.imports() << ", "
- << "mockupTypes: " << command.mockupTypes() << ", "
- << "fileUrl: " << command.fileUrl() << ", "
- << "edit3dToolStates: " << command.edit3dToolStates() << ", "
- << "language: " << command.language() << ")";
+ << "instances: " << command.instances << ", "
+ << "reparentInstances: " << command.reparentInstances << ", "
+ << "ids: " << command.ids << ", "
+ << "valueChanges: " << command.valueChanges << ", "
+ << "bindingChanges: " << command.bindingChanges << ", "
+ << "auxiliaryChanges: " << command.auxiliaryChanges << ", "
+ << "imports: " << command.imports << ", "
+ << "mockupTypes: " << command.mockupTypes << ", "
+ << "fileUrl: " << command.fileUrl << ", "
+ << "edit3dToolStates: " << command.edit3dToolStates << ", "
+ << "language: " << command.language << ")";
}
}
diff --git a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h
index aee8fe0d47..021d43a60e 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h
+++ b/share/qtcreator/qml/qmlpuppet/commands/createscenecommand.h
@@ -41,53 +41,87 @@ namespace QmlDesigner {
class CreateSceneCommand
{
- friend QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command);
-
public:
- CreateSceneCommand();
- explicit CreateSceneCommand(
- const QVector<InstanceContainer> &instanceContainer,
- const QVector<ReparentContainer> &reparentContainer,
- const QVector<IdContainer> &idVector,
- const QVector<PropertyValueContainer> &valueChangeVector,
- const QVector<PropertyBindingContainer> &bindingChangeVector,
- const QVector<PropertyValueContainer> &auxiliaryChangeVector,
- const QVector<AddImportContainer> &importVector,
- const QVector<MockupTypeContainer> &mockupTypeVector,
- const QUrl &fileUrl,
- const QHash<QString, QVariantMap> &edit3dToolStates,
- const QString &language);
+ CreateSceneCommand() = default;
+ explicit CreateSceneCommand(const QVector<InstanceContainer> &instanceContainer,
+ const QVector<ReparentContainer> &reparentContainer,
+ const QVector<IdContainer> &idVector,
+ const QVector<PropertyValueContainer> &valueChangeVector,
+ const QVector<PropertyBindingContainer> &bindingChangeVector,
+ const QVector<PropertyValueContainer> &auxiliaryChangeVector,
+ const QVector<AddImportContainer> &importVector,
+ const QVector<MockupTypeContainer> &mockupTypeVector,
+ const QUrl &fileUrl,
+ const QHash<QString, QVariantMap> &edit3dToolStates,
+ const QString &language,
+ qint32 stateInstanceId)
+ : instances(instanceContainer)
+ , reparentInstances(reparentContainer)
+ , ids(idVector)
+ , valueChanges(valueChangeVector)
+ , bindingChanges(bindingChangeVector)
+ , auxiliaryChanges(auxiliaryChangeVector)
+ , imports(importVector)
+ , mockupTypes(mockupTypeVector)
+ , fileUrl(fileUrl)
+ , edit3dToolStates(edit3dToolStates)
+ , language(language)
+ , stateInstanceId{stateInstanceId}
+ {}
+
+ friend QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command)
+ {
+ out << command.instances;
+ out << command.reparentInstances;
+ out << command.ids;
+ out << command.valueChanges;
+ out << command.bindingChanges;
+ out << command.auxiliaryChanges;
+ out << command.imports;
+ out << command.mockupTypes;
+ out << command.fileUrl;
+ out << command.edit3dToolStates;
+ out << command.language;
+ out << command.stateInstanceId;
+
+ return out;
+ }
- QVector<InstanceContainer> instances() const;
- QVector<ReparentContainer> reparentInstances() const;
- QVector<IdContainer> ids() const;
- QVector<PropertyValueContainer> valueChanges() const;
- QVector<PropertyBindingContainer> bindingChanges() const;
- QVector<PropertyValueContainer> auxiliaryChanges() const;
- QVector<AddImportContainer> imports() const;
- QVector<MockupTypeContainer> mockupTypes() const;
- QUrl fileUrl() const;
- QHash<QString, QVariantMap> edit3dToolStates() const;
- QString language() const;
+ friend QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command)
+ {
+ in >> command.instances;
+ in >> command.reparentInstances;
+ in >> command.ids;
+ in >> command.valueChanges;
+ in >> command.bindingChanges;
+ in >> command.auxiliaryChanges;
+ in >> command.imports;
+ in >> command.mockupTypes;
+ in >> command.fileUrl;
+ in >> command.edit3dToolStates;
+ in >> command.language;
+ in >> command.stateInstanceId;
-private:
- QVector<InstanceContainer> m_instanceVector;
- QVector<ReparentContainer> m_reparentInstanceVector;
- QVector<IdContainer> m_idVector;
- QVector<PropertyValueContainer> m_valueChangeVector;
- QVector<PropertyBindingContainer> m_bindingChangeVector;
- QVector<PropertyValueContainer> m_auxiliaryChangeVector;
- QVector<AddImportContainer> m_importVector;
- QVector<MockupTypeContainer> m_mockupTypeVector;
- QUrl m_fileUrl;
- QHash<QString, QVariantMap> m_edit3dToolStates;
- QString m_language;
+ return in;
+ }
+
+public:
+ QVector<InstanceContainer> instances;
+ QVector<ReparentContainer> reparentInstances;
+ QVector<IdContainer> ids;
+ QVector<PropertyValueContainer> valueChanges;
+ QVector<PropertyBindingContainer> bindingChanges;
+ QVector<PropertyValueContainer> auxiliaryChanges;
+ QVector<AddImportContainer> imports;
+ QVector<MockupTypeContainer> mockupTypes;
+ QUrl fileUrl;
+ QHash<QString, QVariantMap> edit3dToolStates;
+ QString language;
+ qint32 stateInstanceId = 0;
};
-QDataStream &operator<<(QDataStream &out, const CreateSceneCommand &command);
-QDataStream &operator>>(QDataStream &in, CreateSceneCommand &command);
+QDebug operator<<(QDebug debug, const CreateSceneCommand &command);
-QDebug operator <<(QDebug debug, const CreateSceneCommand &command);
-}
+} // namespace QmlDesigner
Q_DECLARE_METATYPE(QmlDesigner::CreateSceneCommand)
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index 39add144fb..552d323247 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -318,12 +318,13 @@ void NodeInstanceServer::stopRenderTimer()
void NodeInstanceServer::createScene(const CreateSceneCommand &command)
{
- setTranslationLanguage(command.language());
+ setTranslationLanguage(command.language);
initializeView();
Internal::QmlPrivateGate::stopUnifiedTimer();
setupScene(command);
+ setupState(command.stateInstanceId);
refreshBindings();
startRenderTimer();
}
@@ -399,15 +400,7 @@ void NodeInstanceServer::reparentInstances(const ReparentInstancesCommand &comma
void NodeInstanceServer::changeState(const ChangeStateCommand &command)
{
- if (hasInstanceForId(command.stateInstanceId())) {
- if (activeStateInstance().isValid())
- activeStateInstance().deactivateState();
- ServerNodeInstance instance = instanceForId(command.stateInstanceId());
- instance.activateState();
- } else {
- if (activeStateInstance().isValid())
- activeStateInstance().deactivateState();
- }
+ setupState(command.stateInstanceId());
startRenderTimer();
}
@@ -569,38 +562,37 @@ void NodeInstanceServer::setupDefaultDummyData()
QList<ServerNodeInstance> NodeInstanceServer::setupInstances(const CreateSceneCommand &command)
{
- QList<ServerNodeInstance> instanceList = createInstances(command.instances());
+ QList<ServerNodeInstance> instanceList = createInstances(command.instances);
- foreach (const IdContainer &container, command.ids()) {
+ for (const IdContainer &container : std::as_const(command.ids)) {
if (hasInstanceForId(container.instanceId()))
instanceForId(container.instanceId()).setId(container.id());
}
- foreach (const PropertyValueContainer &container, command.valueChanges()) {
+ for (const PropertyValueContainer &container : std::as_const(command.valueChanges)) {
if (container.isDynamic())
setInstancePropertyVariant(container);
}
- foreach (const PropertyValueContainer &container, command.valueChanges()) {
+ for (const PropertyValueContainer &container : std::as_const(command.valueChanges)) {
if (!container.isDynamic())
setInstancePropertyVariant(container);
}
- reparentInstances(command.reparentInstances());
+ reparentInstances(command.reparentInstances);
- foreach (const PropertyBindingContainer &container, command.bindingChanges()) {
+ for (const PropertyBindingContainer &container : std::as_const(command.bindingChanges)) {
if (container.isDynamic())
setInstancePropertyBinding(container);
}
- foreach (const PropertyBindingContainer &container, command.bindingChanges()) {
+ for (const PropertyBindingContainer &container : std::as_const(command.bindingChanges)) {
if (!container.isDynamic())
setInstancePropertyBinding(container);
}
- foreach (const PropertyValueContainer &container, command.auxiliaryChanges()) {
+ for (const PropertyValueContainer &container : std::as_const(command.auxiliaryChanges))
setInstanceAuxiliaryData(container);
- }
for (int i = instanceList.size(); --i >= 0; )
instanceList[i].doComponentComplete();
@@ -1498,4 +1490,17 @@ void NodeInstanceServer::handleInstanceHidden(const ServerNodeInstance &/*instan
{
}
+void NodeInstanceServer::setupState(qint32 stateInstanceId)
+{
+ if (hasInstanceForId(stateInstanceId)) {
+ if (activeStateInstance().isValid())
+ activeStateInstance().deactivateState();
+ ServerNodeInstance instance = instanceForId(stateInstanceId);
+ instance.activateState();
+ } else {
+ if (activeStateInstance().isValid())
+ activeStateInstance().deactivateState();
+ }
+}
+
} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
index 1d1533884d..021a2bd6d0 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
@@ -289,6 +289,7 @@ protected:
static QList<QObject*> allSubObjectsForObject(QObject *object);
virtual void resizeCanvasSizeToRootItemSize() = 0;
+ void setupState(qint32 stateInstanceId);
private:
void setupOnlyWorkingImports(const QStringList &workingImportStatementList);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index 99dbe5ffe1..07f2398151 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -1316,8 +1316,7 @@ void Qt5InformationNodeInstanceServer::createScene(const CreateSceneCommand &com
Qt5NodeInstanceServer::createScene(command);
QList<ServerNodeInstance> instanceList;
- const auto instances = command.instances();
- for (const InstanceContainer &container : instances) {
+ for (const InstanceContainer &container : std::as_const(command.instances)) {
if (hasInstanceForId(container.instanceId())) {
ServerNodeInstance instance = instanceForId(container.instanceId());
if (instance.isValid())
@@ -1331,7 +1330,7 @@ void Qt5InformationNodeInstanceServer::createScene(const CreateSceneCommand &com
nodeInstanceClient()->componentCompleted(createComponentCompletedCommand(instanceList));
if (isQuick3DMode())
- setup3DEditView(instanceList, command.edit3dToolStates());
+ setup3DEditView(instanceList, command.edit3dToolStates);
QObject::connect(&m_renderModelNodeImageViewTimer, &QTimer::timeout,
this, &Qt5InformationNodeInstanceServer::doRenderModelNodeImageView);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
index 3cc541545e..8ea68bd231 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
@@ -116,11 +116,10 @@ void Qt5NodeInstanceServer::resetAllItems()
void Qt5NodeInstanceServer::setupScene(const CreateSceneCommand &command)
{
-
- setupMockupTypes(command.mockupTypes());
- setupFileUrl(command.fileUrl());
- setupImports(command.imports());
- setupDummyData(command.fileUrl());
+ setupMockupTypes(command.mockupTypes);
+ setupFileUrl(command.fileUrl);
+ setupImports(command.imports);
+ setupDummyData(command.fileUrl);
setupInstances(command);
quickView()->resize(rootNodeInstance().boundingRect().size().toSize());
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
index 810c8f0dcf..ae167ad6ca 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
@@ -46,7 +46,7 @@ Qt5PreviewNodeInstanceServer::Qt5PreviewNodeInstanceServer(NodeInstanceClientInt
void Qt5PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command)
{
- setTranslationLanguage(command.language());
+ setTranslationLanguage(command.language);
initializeView();
setupScene(command);
startRenderTimer();
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
index 9722280dfa..4a45c626be 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
@@ -137,7 +137,7 @@ void Qt5RenderNodeInstanceServer::createScene(const CreateSceneCommand &command)
Qt5NodeInstanceServer::createScene(command);
QList<ServerNodeInstance> instanceList;
- foreach (const InstanceContainer &container, command.instances()) {
+ for (const InstanceContainer &container : std::as_const(command.instances)) {
if (hasInstanceForId(container.instanceId())) {
ServerNodeInstance instance = instanceForId(container.instanceId());
if (instance.isValid()) {