diff --git a/doric-Qt/example/app/demo/DoricDemoBridge.cpp b/doric-Qt/example/app/demo/DoricDemoBridge.cpp
index f66643f3..fbd5a976 100644
--- a/doric-Qt/example/app/demo/DoricDemoBridge.cpp
+++ b/doric-Qt/example/app/demo/DoricDemoBridge.cpp
@@ -27,33 +27,36 @@ void DoricDemoBridge::navigate(QVariant route) {
name = "ImageDemo.js";
break;
case 4:
- name = "LayoutDemo.js";
+ name = "InputDemo.js";
break;
case 5:
- name = "LayoutTestDemo.js";
+ name = "LayoutDemo.js";
break;
case 6:
- name = "ModalDemo.js";
+ name = "LayoutTestDemo.js";
break;
case 7:
- name = "NetworkDemo.js";
+ name = "ModalDemo.js";
break;
case 8:
- name = "PopoverDemo.js";
+ name = "NetworkDemo.js";
break;
case 9:
- name = "ScrollerDemo.js";
+ name = "PopoverDemo.js";
break;
case 10:
- name = "SimpleDemo.js";
+ name = "ScrollerDemo.js";
break;
case 11:
- name = "Snake.js";
+ name = "SimpleDemo.js";
break;
case 12:
- name = "StorageDemo.js";
+ name = "Snake.js";
break;
case 13:
+ name = "StorageDemo.js";
+ break;
+ case 14:
name = "TextDemo.js";
break;
}
diff --git a/doric-Qt/example/app/main.qml b/doric-Qt/example/app/main.qml
index 147b67e4..8811add5 100644
--- a/doric-Qt/example/app/main.qml
+++ b/doric-Qt/example/app/main.qml
@@ -15,7 +15,7 @@ ApplicationWindow {
ListView {
width: parent.width
- model: 14
+ model: 15
delegate: Rectangle {
Column {
anchors.centerIn: parent
@@ -31,24 +31,26 @@ ApplicationWindow {
case 3:
return "ImageDemo.js"
case 4:
- return "LayoutDemo.js"
+ return "InputDemo.js"
case 5:
- return "LayoutTestDemo.js"
+ return "LayoutDemo.js"
case 6:
- return "ModalDemo.js"
+ return "LayoutTestDemo.js"
case 7:
- return "NetworkDemo.js"
+ return "ModalDemo.js"
case 8:
- return "PopoverDemo.js"
+ return "NetworkDemo.js"
case 9:
- return "ScrollerDemo.js"
+ return "PopoverDemo.js"
case 10:
- return "SimpleDemo.js"
+ return "ScrollerDemo.js"
case 11:
- return "Snake.js"
+ return "SimpleDemo.js"
case 12:
- return "StorageDemo.js"
+ return "Snake.js"
case 13:
+ return "StorageDemo.js"
+ case 14:
return "TextDemo.js"
}
}
diff --git a/doric-Qt/example/app/qml.qrc b/doric-Qt/example/app/qml.qrc
index 168d1688..8347b124 100644
--- a/doric-Qt/example/app/qml.qrc
+++ b/doric-Qt/example/app/qml.qrc
@@ -9,6 +9,7 @@
../../../doric-demo/bundle/src/EffectsDemo.js
../../../doric-demo/bundle/src/Gobang.js
../../../doric-demo/bundle/src/ImageDemo.js
+ ../../../doric-demo/bundle/src/InputDemo.js
../../../doric-demo/bundle/src/LayoutDemo.js
../../../doric-demo/bundle/src/LayoutTestDemo.js
../../../doric-demo/bundle/src/ModalDemo.js
@@ -35,6 +36,7 @@
../doric/resources/scroller.qml
../doric/resources/image.qml
../doric/resources/slider.qml
+ ../doric/resources/input.qml
../doric/resources/toast.qml
../doric/resources/alert.qml
diff --git a/doric-Qt/example/doric/DoricRegistry.cpp b/doric-Qt/example/doric/DoricRegistry.cpp
index 3cd10062..0bd0bf87 100644
--- a/doric-Qt/example/doric/DoricRegistry.cpp
+++ b/doric-Qt/example/doric/DoricRegistry.cpp
@@ -9,6 +9,7 @@
#include "shader/DoricHLayoutNode.h"
#include "shader/DoricImageNode.h"
+#include "shader/DoricInputNode.h"
#include "shader/DoricRootNode.h"
#include "shader/DoricScrollerNode.h"
#include "shader/DoricStackNode.h"
@@ -33,6 +34,7 @@ DoricRegistry::DoricRegistry() {
registerViewNode("Image");
registerViewNode("Slider");
registerViewNode("SlideItem");
+ registerViewNode("Input");
}
bool DoricRegistry::acquirePluginInfo(QString name) {
diff --git a/doric-Qt/example/doric/doric.pro b/doric-Qt/example/doric/doric.pro
index 2044dde3..cbc501a7 100644
--- a/doric-Qt/example/doric/doric.pro
+++ b/doric-Qt/example/doric/doric.pro
@@ -45,6 +45,7 @@ SOURCES += \
shader/DoricGroupNode.cpp \
shader/DoricHLayoutNode.cpp \
shader/DoricImageNode.cpp \
+ shader/DoricInputNode.cpp \
shader/DoricRootNode.cpp \
shader/DoricScrollerNode.cpp \
shader/DoricStackNode.cpp \
@@ -123,6 +124,7 @@ HEADERS += \
shader/DoricGroupNode.h \
shader/DoricHLayoutNode.h \
shader/DoricImageNode.h \
+ shader/DoricInputNode.h \
shader/DoricRootNode.h \
shader/DoricScrollerNode.h \
shader/DoricStackNode.h \
diff --git a/doric-Qt/example/doric/resources/input.qml b/doric-Qt/example/doric/resources/input.qml
new file mode 100644
index 00000000..e6fd8a39
--- /dev/null
+++ b/doric-Qt/example/doric/resources/input.qml
@@ -0,0 +1,86 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+
+import "util.mjs" as Util
+import "gravity.mjs" as Gravity
+
+TextArea {
+ property var wrapper
+
+ property var uuid: Util.uuidv4()
+
+ property var tag: "Input"
+
+ leftPadding: 0
+ topPadding: 0
+ rightPadding: 0
+ bottomPadding: 0
+
+ property int textAlignment: 0
+
+ background: Rectangle {
+ id: bg
+ color: 'transparent'
+ }
+
+ property var backgroundColor
+
+ onBackgroundColorChanged: {
+ bg.color = backgroundColor
+ }
+
+ horizontalAlignment: TextInput.AlignLeft
+ verticalAlignment: TextInput.AlignVCenter
+
+ onTextAlignmentChanged: {
+ let gravity = Gravity.enumerate()
+ let result = this.textAlignment | gravity.CENTER_Y
+ console.log(tag, uuid + " onTextAlignmentChanged: " + this.textAlignment)
+ switch(result) {
+ case gravity.CENTER:
+ this.horizontalAlignment = TextInput.AlignHCenter
+ this.verticalAlignment = TextInput.AlignVCenter
+ break
+ }
+ }
+
+ onWidthChanged: {
+ bg.implicitWidth = width
+ console.log(tag, uuid + " onWidthChanged: " + this.width)
+
+ let tempText = this.text
+ this.text = ""
+ this.text = tempText
+ }
+
+ onHeightChanged: {
+ bg.implicitHeight = height
+ console.log(tag, uuid + " onHeightChanged: " + this.height)
+
+ let tempText = this.text
+ this.text = ""
+ this.text = tempText
+ }
+
+ onTextChanged: {
+ console.log(tag, uuid + " onTextChanged: " + this.text)
+ }
+
+ property var borderWidth: 0
+ onBorderWidthChanged: {
+ bg.border.width = borderWidth
+ }
+
+ property var borderColor: ""
+ onBorderColorChanged: {
+ bg.border.color = borderColor
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ console.log(tag, uuid + " wrapper: " + wrapper)
+ mouseAreaBridge.onClick(wrapper)
+ }
+ }
+}
diff --git a/doric-Qt/example/doric/shader/DoricInputNode.cpp b/doric-Qt/example/doric/shader/DoricInputNode.cpp
new file mode 100644
index 00000000..d57280a0
--- /dev/null
+++ b/doric-Qt/example/doric/shader/DoricInputNode.cpp
@@ -0,0 +1,22 @@
+#include "DoricInputNode.h"
+
+QQuickItem *DoricInputNode::build() {
+ QQmlComponent component(getContext()->getQmlEngine());
+
+ const QUrl url(QStringLiteral("qrc:/doric/qml/input.qml"));
+ component.loadUrl(url);
+
+ if (component.isError()) {
+ qCritical() << component.errorString();
+ }
+
+ QQuickItem *item = qobject_cast(component.create());
+ this->createLayouts(item);
+
+ item->setProperty("wrapper", QString::number((qint64)this));
+ return item;
+}
+
+void DoricInputNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
+ { DoricViewNode::blend(view, name, prop); }
+}
diff --git a/doric-Qt/example/doric/shader/DoricInputNode.h b/doric-Qt/example/doric/shader/DoricInputNode.h
new file mode 100644
index 00000000..9cac63e5
--- /dev/null
+++ b/doric-Qt/example/doric/shader/DoricInputNode.h
@@ -0,0 +1,17 @@
+#ifndef DORICINPUTNODE_H
+#define DORICINPUTNODE_H
+
+#include "DoricExport.h"
+
+#include "DoricViewNode.h"
+
+class DORIC_EXPORT DoricInputNode : public DoricViewNode {
+public:
+ using DoricViewNode::DoricViewNode;
+
+ QQuickItem *build() override;
+
+ virtual void blend(QQuickItem *view, QString name, QJsonValue prop) override;
+};
+
+#endif // DORICINPUTNODE_H