diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qmldesigner/designercore/include/bindingproperty.h | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/bindingproperty.cpp | 32 |
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()) |