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
1313 #include "SharedLogging.h"
1414 #include "VariantMapToScriptValue.h"
1515
16−QScriptValue 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();
2216
23− switch(qValue.type()) {
17+QScriptValue variantToScriptValue(QVariant& qValue, QScriptEngine& scriptEngine) {
18+ switch(qValue.type()) {
2419 case QVariant::Bool:
25− scriptValue.setProperty(key, qValue.toBool());
20+ return qValue.toBool();
2621 break;
2722 case QVariant::Int:
28− scriptValue.setProperty(key, qValue.toInt());
23+ return qValue.toInt();
2924 break;
3025 case QVariant::Double:
31− scriptValue.setProperty(key, qValue.toDouble());
26+ return qValue.toDouble();
3227 break;
3328 case QVariant::String: {
34− scriptValue.setProperty(key, scriptEngine.newVariant(qValue));
29+ return scriptEngine.newVariant(qValue);
3530 break;
3631 }
3732 case QVariant::Map: {
3833 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);
4040 break;
4141 }
4242 default:
4343 qCDebug(shared) << "unhandled QScript type" << qValue.type();
44− }
44+ break;
45+ }
46+
47+ return QScriptValue();
48+}
49+
50+
51+QScriptValue 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+
64+QScriptValue 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));
4571 }
4672
4773 return scriptValue;