54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#include "DoricSwitchNode.h"
|
|
|
|
#include "../utils/DoricUtils.h"
|
|
|
|
QQuickItem *DoricSwitchNode::build() {
|
|
QQmlComponent component(getContext()->getQmlEngine());
|
|
|
|
const QUrl url(QStringLiteral("qrc:/doric/qml/switch.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 DoricSwitchNode::blend(QQuickItem *view, QString name, QJsonValue prop) {
|
|
if (name == "state") {
|
|
checkByCodeToggle = true;
|
|
view->setProperty("checked", prop.toBool());
|
|
checkByCodeToggle = false;
|
|
} else if (name == "onSwitch") {
|
|
onSwitchFuncId = prop.toString();
|
|
} else if (name == "offTintColor") {
|
|
view->setProperty(
|
|
"offTintColor",
|
|
QVariant::fromValue(DoricUtils::doricColor(prop.toInt())));
|
|
} else if (name == "onTintColor") {
|
|
view->setProperty("onTintColor", QVariant::fromValue(
|
|
DoricUtils::doricColor(prop.toInt())));
|
|
} else if (name == "thumbTintColor") {
|
|
view->setProperty(
|
|
"thumbTintColor",
|
|
QVariant::fromValue(DoricUtils::doricColor(prop.toInt())));
|
|
} else {
|
|
DoricViewNode::blend(view, name, prop);
|
|
}
|
|
}
|
|
|
|
void DoricSwitchNode::onSwitch(bool checked) {
|
|
if (checkByCodeToggle)
|
|
return;
|
|
if (!onSwitchFuncId.isEmpty()) {
|
|
QVariantList args;
|
|
args.append(checked);
|
|
callJSResponse(onSwitchFuncId, args);
|
|
}
|
|
}
|