diff options
author | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2010-05-07 13:35:06 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2010-05-07 13:35:06 +0200 |
commit | 7226937c8f047ad7cdb584fa4478ae75fa3fdb32 (patch) | |
tree | af50f9b17fc873898bda96bc4273ae4682b70915 /src/plugins/qmldesigner/designercore/model/bindingproperty.cpp | |
parent | 9e7c13721eef68d9d87b33b14fab4560b03af658 (diff) | |
download | qt-creator-7226937c8f047ad7cdb584fa4478ae75fa3fdb32.tar.gz |
QmlDesigner.model resolving of lists in bindings
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/bindingproperty.cpp')
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/bindingproperty.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp index 6688f11f9d..80295d33a7 100644 --- a/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp +++ b/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp @@ -136,6 +136,16 @@ ModelNode BindingProperty::resolveToModelNode() const return resolveBinding(expression(), parentModelNode(), view()); } +static inline QStringList commaSeparatedSimplifiedStringList(const QString &string) +{ + QStringList stringList = string.split(QLatin1String(",")); + QStringList simpleList; + foreach (const QString &simpleString, stringList) + simpleList.append(simpleString.simplified()); + return simpleList; +} + + AbstractProperty BindingProperty::resolveToProperty() const { if (!isValid()) @@ -159,6 +169,33 @@ AbstractProperty BindingProperty::resolveToProperty() const return AbstractProperty(); } +bool BindingProperty::isList() const +{ + if (!isValid()) + throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); + + return expression().startsWith('[') && expression().endsWith(']'); +} + +QList<ModelNode> BindingProperty::resolveToModelNodeList() const +{ + QList<ModelNode> returnList; + if (!isValid()) + throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); + if (isList()) { + QString string = expression(); + string.chop(1); + string.remove(0, 1); + QStringList simplifiedList = commaSeparatedSimplifiedStringList(string); + foreach (const QString &nodeId, simplifiedList) { + ModelNode modelNode = view()->modelNodeForId(nodeId); + if (modelNode.isValid()) + returnList.append(modelNode); + } + } + return returnList; +} + void BindingProperty::setDynamicTypeNameAndExpression(const QString &typeName, const QString &expression) { |