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>
This commit is contained in:
Thomas Hartmann
2020-04-21 08:06:43 +02:00
parent dbccc57597
commit 3caafb2b81
10 changed files with 50 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ enum InformationName
{
NoName,
NoInformationChange = NoName,
AllStates,
Size,
BoundingRect,
Transform,

View File

@@ -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")));

View File

@@ -871,6 +871,11 @@ void ObjectNodeInstance::deactivateState()
{
}
QStringList ObjectNodeInstance::allStates() const
{
return {};
}
void ObjectNodeInstance::populateResetHashes()
{
QmlPrivateGate::registerCustomData(object());

View File

@@ -148,6 +148,7 @@ public:
virtual void activateState();
virtual void deactivateState();
virtual QStringList allStates() const;
void populateResetHashes();
bool hasValidResetBinding(const PropertyName &propertyName) const;

View File

@@ -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()) {

View File

@@ -96,6 +96,7 @@ public:
void doComponentComplete() override;
QList<QQuickItem*> allItemsRecursive() const override;
QStringList allStates() const override;
protected:
explicit QuickItemNodeInstance(QQuickItem*);

View File

@@ -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;

View File

@@ -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);