From ace6d87bdab54672c0cbdb0a7aa6eda27d9c636d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=8A=B2=E9=B9=8F?= Date: Fri, 19 Mar 2021 16:13:02 +0800 Subject: [PATCH] add click for text stack hlayout vlayout --- doric-Qt/doric/resources/hlayout.qml | 13 +++++++++++-- doric-Qt/doric/resources/stack.qml | 10 ++++++++++ doric-Qt/doric/resources/text.qml | 4 +++- doric-Qt/doric/resources/vlayout.qml | 13 +++++++++++-- doric-Qt/doric/shader/DoricGroupNode.cpp | 2 +- doric-Qt/doric/shader/DoricHLayoutNode.cpp | 5 +++-- doric-Qt/doric/shader/DoricStackNode.cpp | 1 + doric-Qt/doric/shader/DoricTextNode.cpp | 1 + doric-Qt/doric/shader/DoricVLayoutNode.cpp | 5 +++-- doric-Qt/doric/utils/DoricConstant.cpp | 1 + doric-Qt/doric/utils/DoricConstant.h | 1 + doric-Qt/doric/utils/DoricMouseAreaBridge.cpp | 7 +++++-- doric-Qt/doric/utils/DoricMouseAreaBridge.h | 2 +- 13 files changed, 52 insertions(+), 13 deletions(-) diff --git a/doric-Qt/doric/resources/hlayout.qml b/doric-Qt/doric/resources/hlayout.qml index d854d874..2f51ad70 100644 --- a/doric-Qt/doric/resources/hlayout.qml +++ b/doric-Qt/doric/resources/hlayout.qml @@ -6,6 +6,8 @@ import "util.mjs" as Util import "gravity.mjs" as Gravity Rectangle { + property int wrapper: 0 + property var tag: "HLayout" property var uuid: Util.uuidv4() @@ -29,7 +31,7 @@ Rectangle { if (this.widthSpec === 2) { this.width = parent.width -// children[0].width = parent.width +// children[1].width = parent.width } } @@ -39,7 +41,7 @@ Rectangle { if (this.heightSpec === 2) { this.height = parent.height - children[0].height = parent.height + children[1].height = parent.height } } @@ -60,6 +62,13 @@ Rectangle { color: 'transparent' + MouseArea { + anchors.fill: parent + onClicked: { + mouseAreaBridge.onClick(wrapper) + } + } + RowLayout { property int gravity: 0 diff --git a/doric-Qt/doric/resources/stack.qml b/doric-Qt/doric/resources/stack.qml index 366cb714..5bd1e097 100644 --- a/doric-Qt/doric/resources/stack.qml +++ b/doric-Qt/doric/resources/stack.qml @@ -5,7 +5,10 @@ import QtQuick.Layouts 1.15 import "util.mjs" as Util Rectangle { + property int wrapper: 0 + property var uuid: Util.uuidv4() + property int widthSpec: 0 property int heightSpec: 0 property int childrenRectWidth: childrenRect.width @@ -54,4 +57,11 @@ Rectangle { } color: 'transparent' + + MouseArea { + anchors.fill: parent + onClicked: { + mouseAreaBridge.onClick(wrapper) + } + } } diff --git a/doric-Qt/doric/resources/text.qml b/doric-Qt/doric/resources/text.qml index c618603d..011706b3 100644 --- a/doric-Qt/doric/resources/text.qml +++ b/doric-Qt/doric/resources/text.qml @@ -5,6 +5,8 @@ import "util.mjs" as Util import "gravity.mjs" as Gravity Rectangle { + property int wrapper: 0 + property var uuid: Util.uuidv4() property int childrenRectWidth: childrenRect.width property int childrenRectHeight: childrenRect.width @@ -52,7 +54,7 @@ Rectangle { MouseArea { anchors.fill: parent onClicked: { - mouseAreaBridge.onClick("index") + mouseAreaBridge.onClick(wrapper) } } } diff --git a/doric-Qt/doric/resources/vlayout.qml b/doric-Qt/doric/resources/vlayout.qml index 41c897e9..2a46ecc6 100644 --- a/doric-Qt/doric/resources/vlayout.qml +++ b/doric-Qt/doric/resources/vlayout.qml @@ -6,6 +6,8 @@ import "util.mjs" as Util import "gravity.mjs" as Gravity Rectangle { + property int wrapper: 0 + property var tag: "VLayout" property var uuid: Util.uuidv4() @@ -29,7 +31,7 @@ Rectangle { if (this.widthSpec === 2) { this.width = parent.width - children[0].width = parent.width + children[1].width = parent.width } } @@ -39,7 +41,7 @@ Rectangle { if (this.heightSpec === 2) { this.height = parent.height -// children[0].height = parent.height +// children[1].height = parent.height } } @@ -60,6 +62,13 @@ Rectangle { color: 'transparent' + MouseArea { + anchors.fill: parent + onClicked: { + mouseAreaBridge.onClick(wrapper) + } + } + ColumnLayout { property int gravity: 0 diff --git a/doric-Qt/doric/shader/DoricGroupNode.cpp b/doric-Qt/doric/shader/DoricGroupNode.cpp index 9c4b45d8..65d26f23 100644 --- a/doric-Qt/doric/shader/DoricGroupNode.cpp +++ b/doric-Qt/doric/shader/DoricGroupNode.cpp @@ -27,7 +27,7 @@ void DoricGroupNode::configChildNode() { if (mType.isEmpty() || mType == "Stack") { parent = mView; } else { - parent = mView->childItems().at(0); + parent = mView->childItems().at(1); } for (int idx = 0; idx < mChildViewIds.size(); idx++) { QString id = mChildViewIds.at(idx); diff --git a/doric-Qt/doric/shader/DoricHLayoutNode.cpp b/doric-Qt/doric/shader/DoricHLayoutNode.cpp index 95b56112..d2b00585 100644 --- a/doric-Qt/doric/shader/DoricHLayoutNode.cpp +++ b/doric-Qt/doric/shader/DoricHLayoutNode.cpp @@ -11,14 +11,15 @@ QQuickItem *DoricHLayoutNode::build() { } QQuickItem *item = qobject_cast(component.create()); + item->setProperty("wrapper", (qint64)this); return item; } void DoricHLayoutNode::blend(QQuickItem *view, QString name, QJSValue prop) { if (name == "space") { - view->childItems().at(0)->setProperty("spacing", prop.toInt()); + view->childItems().at(1)->setProperty("spacing", prop.toInt()); } else if (name == "gravity") { - view->childItems().at(0)->setProperty("gravity", prop.toInt()); + view->childItems().at(1)->setProperty("gravity", prop.toInt()); } else { DoricGroupNode::blend(view, name, prop); } diff --git a/doric-Qt/doric/shader/DoricStackNode.cpp b/doric-Qt/doric/shader/DoricStackNode.cpp index d757c610..70a43229 100644 --- a/doric-Qt/doric/shader/DoricStackNode.cpp +++ b/doric-Qt/doric/shader/DoricStackNode.cpp @@ -11,6 +11,7 @@ QQuickItem *DoricStackNode::build() { } QQuickItem *item = qobject_cast(component.create()); + item->setProperty("wrapper", (qint64)this); return item; } diff --git a/doric-Qt/doric/shader/DoricTextNode.cpp b/doric-Qt/doric/shader/DoricTextNode.cpp index 036a8522..8e3a8737 100644 --- a/doric-Qt/doric/shader/DoricTextNode.cpp +++ b/doric-Qt/doric/shader/DoricTextNode.cpp @@ -12,6 +12,7 @@ QQuickItem *DoricTextNode::build() { } QQuickItem *item = qobject_cast(component.create()); + item->setProperty("wrapper", (qint64)this); return item; } diff --git a/doric-Qt/doric/shader/DoricVLayoutNode.cpp b/doric-Qt/doric/shader/DoricVLayoutNode.cpp index c1c67c41..bd79d4ec 100644 --- a/doric-Qt/doric/shader/DoricVLayoutNode.cpp +++ b/doric-Qt/doric/shader/DoricVLayoutNode.cpp @@ -11,14 +11,15 @@ QQuickItem *DoricVLayoutNode::build() { } QQuickItem *item = qobject_cast(component.create()); + item->setProperty("wrapper", (qint64)this); return item; } void DoricVLayoutNode::blend(QQuickItem *view, QString name, QJSValue prop) { if (name == "space") { - view->childItems().at(0)->setProperty("spacing", prop.toInt()); + view->childItems().at(1)->setProperty("spacing", prop.toInt()); } else if (name == "gravity") { - view->childItems().at(0)->setProperty("gravity", prop.toInt()); + view->childItems().at(1)->setProperty("gravity", prop.toInt()); } else { DoricGroupNode::blend(view, name, prop); } diff --git a/doric-Qt/doric/utils/DoricConstant.cpp b/doric-Qt/doric/utils/DoricConstant.cpp index 3128019f..926d39a2 100644 --- a/doric-Qt/doric/utils/DoricConstant.cpp +++ b/doric-Qt/doric/utils/DoricConstant.cpp @@ -29,6 +29,7 @@ const QString DoricConstant::GLOBAL_DORIC = "doric"; const QString DoricConstant::DORIC_CONTEXT_INVOKE = "jsCallEntityMethod"; const QString DoricConstant::DORIC_TIMER_CALLBACK = "jsCallbackTimer"; +const QString DoricConstant::DORIC_ENTITY_RESPONSE = "__response__"; const QString DoricConstant::DORIC_ENTITY_INIT = "__init__"; const QString DoricConstant::DORIC_ENTITY_CREATE = "__onCreate__"; const QString DoricConstant::DORIC_ENTITY_BUILD = "__build__"; diff --git a/doric-Qt/doric/utils/DoricConstant.h b/doric-Qt/doric/utils/DoricConstant.h index aa3fdba0..edb09d5f 100644 --- a/doric-Qt/doric/utils/DoricConstant.h +++ b/doric-Qt/doric/utils/DoricConstant.h @@ -26,6 +26,7 @@ public: static const QString DORIC_CONTEXT_INVOKE; static const QString DORIC_TIMER_CALLBACK; + static const QString DORIC_ENTITY_RESPONSE; static const QString DORIC_ENTITY_CREATE; static const QString DORIC_ENTITY_INIT; static const QString DORIC_ENTITY_BUILD; diff --git a/doric-Qt/doric/utils/DoricMouseAreaBridge.cpp b/doric-Qt/doric/utils/DoricMouseAreaBridge.cpp index 3041e09b..7db1b513 100644 --- a/doric-Qt/doric/utils/DoricMouseAreaBridge.cpp +++ b/doric-Qt/doric/utils/DoricMouseAreaBridge.cpp @@ -1,7 +1,10 @@ #include "DoricMouseAreaBridge.h" +#include "shader/DoricViewNode.h" DoricMouseAreaBridge::DoricMouseAreaBridge(QObject *parent) : QObject(parent) {} -void DoricMouseAreaBridge::onClick(QVariant functionId) { - qCritical() << functionId; +void DoricMouseAreaBridge::onClick(qint64 pointer) { + QObject *object = (QObject *)(pointer); + DoricViewNode *viewNode = dynamic_cast(object); + qCritical() << viewNode; } diff --git a/doric-Qt/doric/utils/DoricMouseAreaBridge.h b/doric-Qt/doric/utils/DoricMouseAreaBridge.h index 5316c371..a8ce93ee 100644 --- a/doric-Qt/doric/utils/DoricMouseAreaBridge.h +++ b/doric-Qt/doric/utils/DoricMouseAreaBridge.h @@ -10,7 +10,7 @@ public: explicit DoricMouseAreaBridge(QObject *parent = nullptr); Q_INVOKABLE - void onClick(QVariant functionId); + void onClick(qint64 pointer); signals: };