add slider node

This commit is contained in:
王劲鹏
2021-05-07 18:17:07 +08:00
committed by osborn
parent 0ad7cfb52e
commit 0f2a6ef55c
12 changed files with 189 additions and 41 deletions

View File

@@ -54,3 +54,33 @@ void DoricSuperNode::blendSubLayoutConfig(DoricViewNode *viewNode,
QJsonValue jsValue) {
viewNode->blendLayoutConfig(jsValue);
}
bool DoricSuperNode::viewIdIsEqual(QJsonValue src, QJsonValue target) {
QString srcId = src["id"].toString();
QString targetId = target["id"].toString();
return srcId == targetId;
}
void DoricSuperNode::recursiveMixin(QJsonValue src, QJsonValue target) {
QJsonObject srcProps = src["props"].toObject();
QJsonObject targetProps = target["props"].toObject();
QJsonValue oriSubviews = targetProps["subviews"];
for (QString key : srcProps.keys()) {
QJsonValue jsValue = srcProps[key];
if ("subviews" == key && jsValue.isArray()) {
QJsonArray subviews = jsValue.toArray();
for (QJsonValue subview : subviews) {
if (oriSubviews.isArray()) {
for (QJsonValue targetSubview : oriSubviews.toArray()) {
if (viewIdIsEqual(subview, targetSubview)) {
recursiveMixin(subview, targetSubview);
break;
}
}
}
}
continue;
}
targetProps.insert(key, jsValue);
}
}