summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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())