History

isolate calls to the QtScript libraries to an interface we control

Heather Anderson committed 5 years ago

Commit 1e018db1 parent 713b29e260 files · +6904 −5064Browse files

Showing the changes to libraries/script-engine/src/VariantMapToScriptValue.cpp (1 of 260 files). Show all

Unified · Split

libraries/script-engine/src/VariantMapToScriptValue.cpp+77−0
@@ -0,0 +1,77 @@
1+//
2+// VariantMapToScriptValue.cpp
3+// libraries/shared/src/
4+//
5+// Created by Brad Hefta-Gaub on 12/6/13.
6+// Copyright 2013 High Fidelity, Inc.
7+//
8+// Distributed under the Apache License, Version 2.0.
9+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10+//
11+
12+#include "VariantMapToScriptValue.h"
13+
14+#include <QDebug>
15+
16+#include "SharedLogging.h"
17+
18+ScriptValuePointer variantToScriptValue(QVariant& qValue, ScriptEngine& scriptEngine) {
19+ switch(qValue.type()) {
20+ case QVariant::Bool:
21+ return scriptEngine.newValue(qValue.toBool());
22+ break;
23+ case QVariant::Int:
24+ return scriptEngine.newValue(qValue.toInt());
25+ break;
26+ case QVariant::Double:
27+ return scriptEngine.newValue(qValue.toDouble());
28+ break;
29+ case QVariant::String:
30+ case QVariant::Url:
31+ return scriptEngine.newValue(qValue.toString());
32+ break;
33+ case QVariant::Map: {
34+ QVariantMap childMap = qValue.toMap();
35+ return variantMapToScriptValue(childMap, scriptEngine);
36+ break;
37+ }
38+ case QVariant::List: {
39+ QVariantList childList = qValue.toList();
40+ return variantListToScriptValue(childList, scriptEngine);
41+ break;
42+ }
43+ default:
44+ if (qValue.canConvert<float>()) {
45+ return scriptEngine.newValue(qValue.toFloat());
46+ }
47+ //qCDebug(shared) << "unhandled QScript type" << qValue.type();
48+ break;
49+ }
50+
51+ return ScriptValuePointer();
52+}
53+
54+
55+ScriptValuePointer variantMapToScriptValue(QVariantMap& variantMap, ScriptEngine& scriptEngine) {
56+ ScriptValuePointer scriptValue = scriptEngine.newObject();
57+
58+ for (QVariantMap::const_iterator iter = variantMap.begin(); iter != variantMap.end(); ++iter) {
59+ QString key = iter.key();
60+ QVariant qValue = iter.value();
61+ scriptValue->setProperty(key, variantToScriptValue(qValue, scriptEngine));
62+ }
63+
64+ return scriptValue;
65+}
66+
67+
68+ScriptValuePointer variantListToScriptValue(QVariantList& variantList, ScriptEngine& scriptEngine) {
69+
70+ ScriptValuePointer scriptValue = scriptEngine.newArray();
71+
72+ for (int i = 0; i < variantList.size(); i++) {
73+ scriptValue->setProperty(i, variantToScriptValue(variantList[i], scriptEngine));
74+ }
75+
76+ return scriptValue;
77+}