handle input on text change & padding
This commit is contained in:
@@ -32,7 +32,35 @@ void DoricInputNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
||||
view->setProperty("placeholderText", prop.toString());
|
||||
} else if (name == "textAlignment") {
|
||||
view->setProperty("textAlignment", prop.toInt());
|
||||
} else if (name == "onTextChange") {
|
||||
this->onTextChangeId = prop.toString();
|
||||
} else if (name == "onFocusChange") {
|
||||
this->onFocusChangeId = prop.toString();
|
||||
} else if (name == "padding") {
|
||||
DoricViewNode::blend(view, name, prop);
|
||||
view->setProperty("leftPadding", prop["left"].toDouble());
|
||||
view->setProperty("rightPadding", prop["right"].toDouble());
|
||||
view->setProperty("topPadding", prop["top"].toDouble());
|
||||
view->setProperty("bottomPadding", prop["bottom"].toDouble());
|
||||
} else {
|
||||
DoricViewNode::blend(view, name, prop);
|
||||
}
|
||||
}
|
||||
|
||||
QSizeF DoricInputNode::sizeThatFits(QSizeF size) {
|
||||
DoricLayouts *layout =
|
||||
(DoricLayouts *)mView->property("doricLayout").toULongLong();
|
||||
|
||||
QSizeF ret = DoricViewNode::sizeThatFits(size);
|
||||
return QSizeF(
|
||||
ret.width() - layout->getPaddingLeft() - layout->getPaddingRight(),
|
||||
ret.height() - layout->getPaddingTop() - layout->getPaddingBottom());
|
||||
}
|
||||
|
||||
void DoricInputNode::onTextChange(QString text) {
|
||||
if (!onTextChangeId.isEmpty()) {
|
||||
QVariantList args;
|
||||
args.append(text);
|
||||
callJSResponse(onTextChangeId, args);
|
||||
}
|
||||
}
|
||||
|
@@ -6,12 +6,20 @@
|
||||
#include "DoricViewNode.h"
|
||||
|
||||
class DORIC_EXPORT DoricInputNode : public DoricViewNode {
|
||||
private:
|
||||
QString onTextChangeId;
|
||||
QString onFocusChangeId;
|
||||
|
||||
public:
|
||||
using DoricViewNode::DoricViewNode;
|
||||
|
||||
QQuickItem *build() override;
|
||||
|
||||
virtual void blend(QQuickItem *view, QString name, QJsonValue prop) override;
|
||||
|
||||
QSizeF sizeThatFits(QSizeF size);
|
||||
|
||||
void onTextChange(QString text);
|
||||
};
|
||||
|
||||
#endif // DORICINPUTNODE_H
|
||||
|
@@ -242,3 +242,8 @@ void DoricViewNode::onClick() {
|
||||
QVariantList args;
|
||||
callJSResponse(clickFunction, args);
|
||||
}
|
||||
|
||||
QSizeF DoricViewNode::sizeThatFits(QSizeF size) {
|
||||
return QSizeF(qMin(size.width(), mView->width()),
|
||||
qMin(size.height(), mView->height()));
|
||||
}
|
||||
|
@@ -84,5 +84,7 @@ public:
|
||||
|
||||
std::shared_ptr<DoricAsyncResult> pureCallJSResponse(QString funcId,
|
||||
QVariantList args);
|
||||
|
||||
QSizeF sizeThatFits(QSizeF size);
|
||||
};
|
||||
#endif // DORICVIEWNODE_H
|
||||
|
Reference in New Issue
Block a user