History

have variantMapToScriptValue handle lists.

Seth Alves committed 11 years ago

Commit 8735fa11 parent 0568dc92 files · +41 −13Browse files

Showing the changes to libraries/shared/src/VariantMapToScriptValue.cpp (1 of 2 files). Show all

Unified · Split

libraries/shared/src/VariantMapToScriptValue.cpp+39−13
@@ -13,35 +13,61 @@ · 12 unmodified lines
13#include "SharedLogging.h"13#include "SharedLogging.h"
14#include "VariantMapToScriptValue.h"14#include "VariantMapToScriptValue.h"
15 15
16QScriptValue variantMapToScriptValue(QVariantMap& variantMap, QScriptEngine& scriptEngine) {
17 QScriptValue scriptValue = scriptEngine.newObject();
18
19 for (QVariantMap::const_iterator iter = variantMap.begin(); iter != variantMap.end(); ++iter) {
20 QString key = iter.key();
21 QVariant qValue = iter.value();
22 16
23 switch(qValue.type()) {17QScriptValue variantToScriptValue(QVariant& qValue, QScriptEngine& scriptEngine) {
18 switch(qValue.type()) {
24 case QVariant::Bool:19 case QVariant::Bool:
25 scriptValue.setProperty(key, qValue.toBool());20 return qValue.toBool();
26 break;21 break;
27 case QVariant::Int:22 case QVariant::Int:
28 scriptValue.setProperty(key, qValue.toInt());23 return qValue.toInt();
29 break;24 break;
30 case QVariant::Double:25 case QVariant::Double:
31 scriptValue.setProperty(key, qValue.toDouble());26 return qValue.toDouble();
32 break;27 break;
33 case QVariant::String: {28 case QVariant::String: {
34 scriptValue.setProperty(key, scriptEngine.newVariant(qValue));29 return scriptEngine.newVariant(qValue);
35 break;30 break;
36 }31 }
37 case QVariant::Map: {32 case QVariant::Map: {
38 QVariantMap childMap = qValue.toMap();33 QVariantMap childMap = qValue.toMap();
39 scriptValue.setProperty(key, variantMapToScriptValue(childMap, scriptEngine));34 return variantMapToScriptValue(childMap, scriptEngine);
35 break;
36 }
37 case QVariant::List: {
38 QVariantList childList = qValue.toList();
39 return variantListToScriptValue(childList, scriptEngine);
40 break;40 break;
41 }41 }
42 default:42 default:
43 qCDebug(shared) << "unhandled QScript type" << qValue.type();43 qCDebug(shared) << "unhandled QScript type" << qValue.type();
44 }44 break;
45 }
46
47 return QScriptValue();
48}
49
50
51QScriptValue variantMapToScriptValue(QVariantMap& variantMap, QScriptEngine& scriptEngine) {
52 QScriptValue scriptValue = scriptEngine.newObject();
53
54 for (QVariantMap::const_iterator iter = variantMap.begin(); iter != variantMap.end(); ++iter) {
55 QString key = iter.key();
56 QVariant qValue = iter.value();
57 scriptValue.setProperty(key, variantToScriptValue(qValue, scriptEngine));
58 }
59
60 return scriptValue;
61}
62
63
64QScriptValue variantListToScriptValue(QVariantList& variantList, QScriptEngine& scriptEngine) {
65 QScriptValue scriptValue = scriptEngine.newObject();
66
67 scriptValue.setProperty("length", variantList.size());
68 int i = 0;
69 foreach (QVariant v, variantList) {
70 scriptValue.setProperty(i++, variantToScriptValue(v, scriptEngine));
45 }71 }
46 72
47 return scriptValue;73 return scriptValue;