aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-04-09 16:49:17 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-04-20 17:08:47 +0000
commiteb82d396e36d472918dd326199f9a89f54a42b22 (patch)
treeb372c098fb09c20049cd2060c78a8538dc62a621
parent2f99a87a3f9c9125bb898a88b263c5251be5eb23 (diff)
QmlDesigner: Add ModelNodeToArray() to BindingProperty
Change-Id: I98761ee607882f24bff89c3745af2f6f35587c1d Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/designercore/include/bindingproperty.h1
-rw-r--r--src/plugins/qmldesigner/designercore/model/bindingproperty.cpp32
2 files changed, 33 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/bindingproperty.h b/src/plugins/qmldesigner/designercore/include/bindingproperty.h
index a530cb203f..b8f60efbd8 100644
--- a/src/plugins/qmldesigner/designercore/include/bindingproperty.h
+++ b/src/plugins/qmldesigner/designercore/include/bindingproperty.h
@@ -49,6 +49,7 @@ public:
AbstractProperty resolveToProperty() const;
bool isList() const;
QList<ModelNode> resolveToModelNodeList() const;
+ void addModelNodeToArray(const ModelNode &modelNode);
bool isAliasExport() const;
diff --git a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp
index ebd3c7c709..1f1c1df58f 100644
--- a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp
+++ b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp
@@ -199,6 +199,38 @@ QList<ModelNode> BindingProperty::resolveToModelNodeList() const
return returnList;
}
+void BindingProperty::addModelNodeToArray(const ModelNode &modelNode)
+{
+ if (!isValid())
+ throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
+
+ if (isBindingProperty()) {
+ QStringList simplifiedList;
+ if (isList()) {
+ QString string = expression();
+ string.chop(1);
+ string.remove(0, 1);
+ QStringList simplifiedList = commaSeparatedSimplifiedStringList(string);
+ ModelNode node = modelNode;
+ simplifiedList.append(node.validId());
+ setExpression('[' + simplifiedList.join(',') + ']');
+ } else {
+ ModelNode currentNode = resolveToModelNode();
+ if (currentNode.isValid())
+ simplifiedList.append(currentNode.validId());
+ }
+ ModelNode node = modelNode;
+ simplifiedList.append(node.validId());
+ setExpression('[' + simplifiedList.join(',') + ']');
+ } else if (exists()) {
+ throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, name());
+ } else {
+ ModelNode node = modelNode;
+ setExpression('[' + node.validId() + ']');
+ }
+
+}
+
bool BindingProperty::isAliasExport() const
{
if (!isValid())