From 3a7a1c5e81ef0f9bd7bb78b53b81afa7438ff3d2 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 14 Jun 2019 14:27:17 +0200 Subject: [PATCH] QmlDesigner: Add createQmlObjectNode() The item library can also create pure QtObjects now. This should be reflected in the API. Change-Id: I58f8306232137c9feecf51d0abb938191c0a113a Reviewed-by: Tim Jenssen --- .../navigator/navigatortreemodel.cpp | 10 ++--- .../designercore/include/qmlitemnode.h | 7 +++- .../designercore/model/qmlitemnode.cpp | 37 +++++++++++-------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 4ceb51e985e..f21a0430a7a 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -503,17 +503,17 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in if (!NodeHints::fromItemLibraryEntry(itemLibraryEntry).canBeDroppedInNavigator()) return; - const QmlItemNode newQmlItemNode = QmlItemNode::createQmlItemNode(m_view, itemLibraryEntry, QPointF(), targetProperty); + const QmlObjectNode newQmlObjectNode = QmlItemNode::createQmlObjectNode(m_view, itemLibraryEntry, QPointF(), targetProperty); - if (newQmlItemNode.isValid() && targetProperty.isNodeListProperty()) { + if (newQmlObjectNode.isValid() && targetProperty.isNodeListProperty()) { QList newModelNodeList; - newModelNodeList.append(newQmlItemNode); + newModelNodeList.append(newQmlObjectNode); moveNodesInteractive(targetProperty, newModelNodeList, targetRowNumber); } - if (newQmlItemNode.isValid()) - m_view->selectModelNode(newQmlItemNode.modelNode()); + if (newQmlObjectNode.isValid()) + m_view->selectModelNode(newQmlObjectNode.modelNode()); } } diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index f857a36432e..1560ebb3ff4 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -53,10 +53,15 @@ public: static bool isItemOrWindow(const ModelNode &modelNode); static QmlItemNode createQmlItemNode(AbstractView *view, + const ItemLibraryEntry &itemLibraryEntry, + const QPointF &position, + QmlItemNode parentQmlItemNode); + + static QmlObjectNode createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode); - static QmlItemNode createQmlItemNode(AbstractView *view, + static QmlObjectNode createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty); diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index ea40b46e8bf..65b34f1de4f 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -85,8 +85,15 @@ static QmlItemNode createQmlItemNodeFromSource(AbstractView *view, const QString return QmlItemNode(); } +QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, + const ItemLibraryEntry &itemLibraryEntry, + const QPointF &position, + QmlItemNode parentQmlItemNode) +{ + return QmlItemNode(createQmlObjectNode(view, itemLibraryEntry, position, parentQmlItemNode)); +} -QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode) +QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode) { if (!parentQmlItemNode.isValid()) parentQmlItemNode = QmlItemNode(view->rootModelNode()); @@ -95,14 +102,14 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary NodeAbstractProperty parentProperty = parentQmlItemNode.defaultNodeAbstractProperty(); - return QmlItemNode::createQmlItemNode(view, itemLibraryEntry, position, parentProperty); + return QmlItemNode::createQmlObjectNode(view, itemLibraryEntry, position, parentProperty); } -QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty) +QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty) { - QmlItemNode newQmlItemNode; + QmlObjectNode newQmlObjectNode; - view->executeInTransaction("QmlItemNode::createQmlItemNode", [=, &newQmlItemNode, &parentproperty](){ + view->executeInTransaction("QmlItemNode::createQmlItemNode", [=, &newQmlObjectNode, &parentproperty](){ NodeMetaInfo metaInfo = view->model()->metaInfo(itemLibraryEntry.typeName()); int minorVersion = metaInfo.minorVersion(); @@ -128,31 +135,31 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary } } - newQmlItemNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList)); + newQmlObjectNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList)); } else { - newQmlItemNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position); + newQmlObjectNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position); } if (parentproperty.isValid()) - parentproperty.reparentHere(newQmlItemNode); + parentproperty.reparentHere(newQmlObjectNode); - if (!newQmlItemNode.isValid()) + if (!newQmlObjectNode.isValid()) return; - newQmlItemNode.setId(view->generateNewId(itemLibraryEntry.name())); + newQmlObjectNode.setId(view->generateNewId(itemLibraryEntry.name())); for (const auto &propertyBindingEntry : propertyBindingList) - newQmlItemNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second); + newQmlObjectNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second); for (const auto &propertyBindingEntry : propertyEnumList) - newQmlItemNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8()); + newQmlObjectNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8()); - Q_ASSERT(newQmlItemNode.isValid()); + Q_ASSERT(newQmlObjectNode.isValid()); }); - Q_ASSERT(newQmlItemNode.isValid()); + Q_ASSERT(newQmlObjectNode.isValid()); - return newQmlItemNode; + return newQmlObjectNode; } QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QString &imageName, const QPointF &position, QmlItemNode parentQmlItemNode)