diff --git a/src/eventmanager.cpp b/src/eventmanager.cpp index 96a68c972..814a64b61 100644 --- a/src/eventmanager.cpp +++ b/src/eventmanager.cpp @@ -231,9 +231,8 @@ QVariantMap EventManager::getGlobalPreferences() const { data["save_path"] = Preferences::getSavePath(); data["temp_path_enabled"] = Preferences::isTempPathEnabled(); data["temp_path"] = Preferences::getTempPath(); - // XXX: json.h does not encode QStringList correctly - //data["scan_dirs"] = Preferences::getScanDirs(); - //data["download_in_scan_dirs"] = Preferences::getDownloadInScanDirs(); + data["scan_dirs"] = Preferences::getScanDirs(); + data["download_in_scan_dirs"] = Preferences::getDownloadInScanDirs(); data["export_dir_enabled"] = Preferences::isTorrentExportEnabled(); data["export_dir"] = Preferences::getExportDir(); data["preallocate_all"] = Preferences::preAllocateAllFiles(); diff --git a/src/json.h b/src/json.h index 8c38ec40a..e15030455 100644 --- a/src/json.h +++ b/src/json.h @@ -41,15 +41,23 @@ namespace json { return "null"; switch(v.type()) { - case QVariant::Bool: - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::UInt: - case QVariant::ULongLong: - case QMetaType::Float: + case QVariant::Bool: + case QVariant::Double: + case QVariant::Int: + case QVariant::LongLong: + case QVariant::UInt: + case QVariant::ULongLong: + case QMetaType::Float: return v.value(); - case QVariant::String: + case QVariant::StringList: + case QVariant::List: { + QStringList strList; + foreach(const QVariant &var, v.toList()) { + strList << toJson(var); + } + return "["+strList.join(",")+"]"; + } + case QVariant::String: { QString s = v.value(); QString result = "\""; @@ -58,35 +66,35 @@ namespace json { QChar ch = s[i]; switch(ch.toAscii()) { - case '\b': + case '\b': result += "\\b"; break; - case '\f': + case '\f': result += "\\f"; break; - case '\n': + case '\n': result += "\\n"; break; - case '\r': + case '\r': result += "\\r"; break; - case '\t': + case '\t': result += "\\t"; break; - case '\"': - case '\'': - case '\\': - case '&': + case '\"': + case '\'': + case '\\': + case '&': result += '\\'; - case '\0': - default: + case '\0': + default: result += ch; } } result += "\""; return result; } - default: + default: qDebug("Unknown QVariantType: %d", (int)v.type()); return "undefined"; }