add input demo

This commit is contained in:
王劲鹏 2021-05-25 16:51:39 +08:00 committed by osborn
parent a5522660a7
commit 715a20125c
8 changed files with 155 additions and 19 deletions

View File

@ -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;
}

View File

@ -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"
}
}

View File

@ -9,6 +9,7 @@
<file alias="EffectsDemo.js">../../../doric-demo/bundle/src/EffectsDemo.js</file>
<file alias="Gobang.js">../../../doric-demo/bundle/src/Gobang.js</file>
<file alias="ImageDemo.js">../../../doric-demo/bundle/src/ImageDemo.js</file>
<file alias="InputDemo.js">../../../doric-demo/bundle/src/InputDemo.js</file>
<file alias="LayoutDemo.js">../../../doric-demo/bundle/src/LayoutDemo.js</file>
<file alias="LayoutTestDemo.js">../../../doric-demo/bundle/src/LayoutTestDemo.js</file>
<file alias="ModalDemo.js">../../../doric-demo/bundle/src/ModalDemo.js</file>
@ -35,6 +36,7 @@
<file alias="scroller.qml">../doric/resources/scroller.qml</file>
<file alias="image.qml">../doric/resources/image.qml</file>
<file alias="slider.qml">../doric/resources/slider.qml</file>
<file alias="input.qml">../doric/resources/input.qml</file>
<file alias="toast.qml">../doric/resources/toast.qml</file>
<file alias="alert.qml">../doric/resources/alert.qml</file>

View File

@ -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<DoricImageNode>("Image");
registerViewNode<DoricSliderNode>("Slider");
registerViewNode<DoricSlideItemNode>("SlideItem");
registerViewNode<DoricInputNode>("Input");
}
bool DoricRegistry::acquirePluginInfo(QString name) {

View File

@ -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 \

View File

@ -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)
}
}
}

View File

@ -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<QQuickItem *>(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); }
}

View File

@ -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