diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-04-21 08:06:43 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-04-21 10:57:26 +0000 |
commit | 3caafb2b8194ab28c5ee9f9772abd6233aa3845d (patch) | |
tree | 7bafa729d4faaaa020e75699e48cff843ac8c857 /share/qtcreator | |
parent | dbccc57597169246827c5ec6087ad7316c2ad4e1 (diff) |
QmlDesigner: Inspect components for existing states
For each created items we retrieve a list of the names
of all existing states.
Task-number: QDS-1978
Change-Id: I8e85e439fce3c6204cb8bcf69f6be847cc8dae5c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'share/qtcreator')
8 files changed, 32 insertions, 0 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h b/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h index eb1bd41051..b5cf157a8c 100644 --- a/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h +++ b/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h @@ -34,6 +34,7 @@ enum InformationName { NoName, NoInformationChange = NoName, + AllStates, Size, BoundingRect, Transform, diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index cfdc513c1b..813057e10b 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -1061,6 +1061,7 @@ static QVector<InformationContainer> createInformationVector(const QList<ServerN informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling())); + informationVector.append(InformationContainer(instance.instanceId(), AllStates, instance.allStates())); informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.fill"), instance.hasAnchor("anchors.fill"))); informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.centerIn"), instance.hasAnchor("anchors.centerIn"))); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp index 7fabfcf903..87e0cc4d71 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp @@ -871,6 +871,11 @@ void ObjectNodeInstance::deactivateState() { } +QStringList ObjectNodeInstance::allStates() const +{ + return {}; +} + void ObjectNodeInstance::populateResetHashes() { QmlPrivateGate::registerCustomData(object()); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h index d716c4d755..3026ffefce 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h @@ -148,6 +148,7 @@ public: virtual void activateState(); virtual void deactivateState(); + virtual QStringList allStates() const; void populateResetHashes(); bool hasValidResetBinding(const PropertyName &propertyName) const; diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp index f697052575..cfa1b1eac0 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp @@ -232,6 +232,20 @@ QList<QQuickItem *> QuickItemNodeInstance::allItemsRecursive() const return itemList; } +QStringList QuickItemNodeInstance::allStates() const +{ + QStringList list; + + QList<QObject*> stateList = DesignerSupport::statesForItem(quickItem()); + for (QObject *state : stateList) { + QQmlProperty property(state, "name"); + if (property.isValid()) + list.append(property.read().toString()); + } + + return list; +} + QRectF QuickItemNodeInstance::contentItemBoundingBox() const { if (contentItem()) { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h index 8aab24178b..f42e45a8ff 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h @@ -96,6 +96,7 @@ public: void doComponentComplete() override; QList<QQuickItem*> allItemsRecursive() const override; + QStringList allStates() const override; protected: explicit QuickItemNodeInstance(QQuickItem*); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp index 483cf581c1..0c9f5721a5 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp @@ -661,6 +661,14 @@ QList<ServerNodeInstance> ServerNodeInstance::stateInstances() const return m_nodeInstance->stateInstances(); } +QStringList ServerNodeInstance::allStates() const +{ + if (isValid()) + return m_nodeInstance->allStates(); + + return {}; +} + Internal::ObjectNodeInstance::Pointer ServerNodeInstance::internalInstance() const { return m_nodeInstance; diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h index c85ba9a2b8..ceb3b1e5b1 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h @@ -164,6 +164,7 @@ public: QSharedPointer<Internal::ObjectNodeInstance> internalInstance() const; QList<ServerNodeInstance> stateInstances() const; + QStringList allStates() const; static bool isSubclassOf(QObject *object, const QByteArray &superTypeName); |