From 991d6328ef9b4b371dd6526fdb563f29d89712ab Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 8 Feb 2016 13:02:35 -0800 Subject: [PATCH] Fix JSON integration for JobConfig --- libraries/render/src/render/Task.h | 4 +++- libraries/shared/src/shared/JSONHelpers.cpp | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/render/src/render/Task.h b/libraries/render/src/render/Task.h index 75bc9d8643..a47f8e39fe 100644 --- a/libraries/render/src/render/Task.h +++ b/libraries/render/src/render/Task.h @@ -71,10 +71,12 @@ public: bool alwaysEnabled{ true }; bool enabled{ true }; + // This must be named toJSON to integrate with the global scripting JSON object Q_INVOKABLE QString toJSON() { return QJsonDocument(toJsonValue(*this).toObject()).toJson(QJsonDocument::Compact); } + Q_INVOKABLE void load(const QVariantMap& map) { qObjectFromJsonValue(QJsonObject::fromVariantMap(map), *this); } public slots: - Q_INVOKABLE void fromJSON(const QJsonValue& json) { qObjectFromJsonValue(json, *this); } + void load(const QJsonObject& val) { qObjectFromJsonValue(val, *this); } }; class TaskConfig : public JobConfig { diff --git a/libraries/shared/src/shared/JSONHelpers.cpp b/libraries/shared/src/shared/JSONHelpers.cpp index 3aab117370..e717050055 100644 --- a/libraries/shared/src/shared/JSONHelpers.cpp +++ b/libraries/shared/src/shared/JSONHelpers.cpp @@ -111,10 +111,9 @@ void qObjectFromJsonValue(const QJsonValue& j, QObject& o) { for (auto it = object.begin(); it != object.end(); it++) { std::string key = it.key().toStdString(); if (it.value().isObject()) { - QVariant child = o.property(key.c_str()); - if (child.isValid()) { - QObject* object = child.value(); - qObjectFromJsonValue(it.value(), *object); + QObject* child = o.findChild(key.c_str(), Qt::FindChildOption::FindDirectChildrenOnly); + if (child) { + qObjectFromJsonValue(it.value(), *child); } } else { o.setProperty(key.c_str(), it.value());