aboutsummaryrefslogtreecommitdiffstats
path: root/src/webchannel/qmetaobjectpublisher_p.h
diff options
context:
space:
mode:
authorAndrew Webster <awebster@arcx.com>2018-09-13 16:59:44 -0400
committerAndrew Webster <awebster@arcx.com>2019-02-06 18:56:35 +0000
commite283b0852c25dba2ef73556062b5605af3632b05 (patch)
treef14e5452047291e8e4dd1656f33d654db9fe8c9c /src/webchannel/qmetaobjectpublisher_p.h
parent93db9349c3f40fad6e4a7d94a719dcbeb1195590 (diff)
Convert QObjects in QVariantMaps
QObjects that are present in an array are already converted to an object identifier. This does the same for variant maps, which end up as ECMAScript objects. This allows QObjects put into a QVariantMap to be properly deserialized. For example, if a property is declared as such: Q_PROPERTY(QVariantMap propName READ propName CONSTANT) And propName is: QVariantMap propName() const { QVariantMap map; map.insert("theProperty", QVariant::fromValue(someQObject)); return map; } The "theProperty" property will now properly refer to the object. Change-Id: I3c6e71b860f6825a31eb337aeffa55302287c8ff Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Diffstat (limited to 'src/webchannel/qmetaobjectpublisher_p.h')
-rw-r--r--src/webchannel/qmetaobjectpublisher_p.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/webchannel/qmetaobjectpublisher_p.h b/src/webchannel/qmetaobjectpublisher_p.h
index d02a933..1535a70 100644
--- a/src/webchannel/qmetaobjectpublisher_p.h
+++ b/src/webchannel/qmetaobjectpublisher_p.h
@@ -199,6 +199,14 @@ public:
const QString &parentObjectId = QString());
/**
+ * Convert a variant map for consumption by the client.
+ *
+ * This properly handles QML values and also wraps the result if required.
+ */
+ QJsonObject wrapMap(const QVariantMap &map, QWebChannelAbstractTransport *transport,
+ const QString &parentObjectId = QString());
+
+ /**
* Invoke delete later on @p object.
*/
void deleteWrappedObject(QObject *object) const;