summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/designercore/model/bindingproperty.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@nokia.com>2010-05-07 13:35:06 +0200
committerThomas Hartmann <Thomas.Hartmann@nokia.com>2010-05-07 13:35:06 +0200
commit7226937c8f047ad7cdb584fa4478ae75fa3fdb32 (patch)
treeaf50f9b17fc873898bda96bc4273ae4682b70915 /src/plugins/qmldesigner/designercore/model/bindingproperty.cpp
parent9e7c13721eef68d9d87b33b14fab4560b03af658 (diff)
downloadqt-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.cpp37
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)
{