aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp')
-rw-r--r--src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp b/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp
index 0aeabb8b89..48b1ad6fc9 100644
--- a/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp
+++ b/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp
@@ -26,7 +26,9 @@
#include "listmodeleditormodel.h"
#include <abstractview.h>
+#include <bindingproperty.h>
#include <nodelistproperty.h>
+#include <nodeproperty.h>
#include <variantproperty.h>
#include <QVariant>
@@ -185,6 +187,22 @@ void renameProperties(const QStandardItemModel *model,
static_cast<ListModelItem *>(model->item(rowIndex, columnIndex))->renameProperty(newPropertyName);
}
+ModelNode listModelNode(const ModelNode &listViewNode,
+ const std::function<ModelNode()> &createModelCallback)
+{
+ if (listViewNode.hasProperty("model")) {
+ if (listViewNode.hasBindingProperty("model"))
+ return listViewNode.bindingProperty("model").resolveToModelNode();
+ else if (listViewNode.hasNodeProperty("model"))
+ return listViewNode.nodeProperty("model").modelNode();
+ }
+
+ ModelNode newModel = createModelCallback();
+ listViewNode.nodeProperty("model").reparentHere(newModel);
+
+ return newModel;
+}
+
} // namespace
void ListModelEditorModel::populateModel()
@@ -214,9 +232,20 @@ void ListModelEditorModel::appendItems(const ModelNode &listElementNode)
appendRow(row);
}
+void ListModelEditorModel::setListModel(ModelNode node)
+{
+ m_listModelNode = node;
+ populateModel();
+}
+
+void ListModelEditorModel::setListView(ModelNode listView)
+{
+ setListModel(listModelNode(listView, m_createModelCallback));
+}
+
void ListModelEditorModel::addRow()
{
- auto newElement = m_listModelNode.view()->createModelNode("QtQml.Models.ListElement", 2, 15);
+ auto newElement = m_createElementCallback();
m_listModelNode.defaultNodeListProperty().reparentHere(newElement);
appendItems(newElement);