This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/doric-Qt/example/doric/shader/DoricSwitchNode.cpp
2021-07-21 19:03:29 +08:00

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