From 91f9a46c18f50b44af6c408c230c9ff23efaacb9 Mon Sep 17 00:00:00 2001 From: Nick Tiskov Date: Wed, 27 Feb 2013 12:58:14 +0400 Subject: [PATCH 1/3] Allow semicolon in json values (Windows paths support) --- src/webui/json.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/webui/json.cpp b/src/webui/json.cpp index bf90507d4..e0cdef964 100644 --- a/src/webui/json.cpp +++ b/src/webui/json.cpp @@ -114,7 +114,10 @@ QVariantMap json::fromJson(const QString& json) { if (!tmp.isEmpty()) couples << tmp; foreach (const QString &couple, couples) { - QStringList parts = couple.split(":"); + QStringList parts; + qint32 jsonSep = couple.indexOf(":"); + parts << couple.mid(0, jsonSep); + parts << couple.mid(jsonSep + 1); if (parts.size() != 2) continue; QString key = parts.first(); if (key.startsWith("\"") && key.endsWith("\"")) { From 9d275d6d345b9aacb87daab9d01c0922206288d1 Mon Sep 17 00:00:00 2001 From: Nick Tiskov Date: Wed, 27 Feb 2013 13:13:00 +0400 Subject: [PATCH 2/3] Allow bool lists in json values --- src/webui/json.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/webui/json.cpp b/src/webui/json.cpp index e0cdef964..5077bb0e2 100644 --- a/src/webui/json.cpp +++ b/src/webui/json.cpp @@ -133,7 +133,12 @@ QVariantMap json::fromJson(const QString& json) { if (list_val.startsWith("\"") && list_val.endsWith("\"")) { varlist << list_val.mid(1, list_val.length()-2).replace("\\n", "\n"); } else { - varlist << list_val.toInt(); + if (list_val.compare(("false"), Qt::CaseInsensitive) == 0) + varlist << false; + else if (list_val.compare(("true"), Qt::CaseInsensitive) == 0) + varlist << true; + else + varlist << list_val.toInt(); } } value = varlist; From 66b982ad03d7134659280c29a0ec78f5af87d79f Mon Sep 17 00:00:00 2001 From: Nick Tiskov Date: Sun, 10 Mar 2013 20:17:39 +0400 Subject: [PATCH 3/3] Minor refactoring for json parser --- src/webui/json.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/webui/json.cpp b/src/webui/json.cpp index 5077bb0e2..8982912bf 100644 --- a/src/webui/json.cpp +++ b/src/webui/json.cpp @@ -115,10 +115,10 @@ QVariantMap json::fromJson(const QString& json) { foreach (const QString &couple, couples) { QStringList parts; - qint32 jsonSep = couple.indexOf(":"); - parts << couple.mid(0, jsonSep); + int jsonSep = couple.indexOf(":"); + parts << couple.left(jsonSep); parts << couple.mid(jsonSep + 1); - if (parts.size() != 2) continue; + Q_ASSERT(parts.size() == 2); QString key = parts.first(); if (key.startsWith("\"") && key.endsWith("\"")) { key = key.mid(1, key.length()-2); @@ -133,9 +133,9 @@ QVariantMap json::fromJson(const QString& json) { if (list_val.startsWith("\"") && list_val.endsWith("\"")) { varlist << list_val.mid(1, list_val.length()-2).replace("\\n", "\n"); } else { - if (list_val.compare(("false"), Qt::CaseInsensitive) == 0) + if (list_val.compare("false", Qt::CaseInsensitive) == 0) varlist << false; - else if (list_val.compare(("true"), Qt::CaseInsensitive) == 0) + else if (list_val.compare("true", Qt::CaseInsensitive) == 0) varlist << true; else varlist << list_val.toInt();