Fix string mishandling

This commit is contained in:
Atlante45 2016-09-14 15:09:38 -07:00
parent e5d54fc6bc
commit cc574c3e05
2 changed files with 8 additions and 9 deletions

View file

@ -49,7 +49,7 @@ bool Settings::contains(const QString& key) const {
return _manager->contains(key); return _manager->contains(key);
} }
int Settings::beginReadArray(const QString & prefix) { int Settings::beginReadArray(const QString& prefix) {
return _manager->beginReadArray(prefix); return _manager->beginReadArray(prefix);
} }

View file

@ -107,8 +107,6 @@ QStringList splitArgs(const QString& string, int idx) {
} }
QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map) { QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map) {
qDebug() << Q_FUNC_INFO << map.size() << "in map";
QJsonObject object; QJsonObject object;
for (auto it = map.cbegin(); it != map.cend(); ++it) { for (auto it = map.cbegin(); it != map.cend(); ++it) {
auto& key = it.key(); auto& key = it.key();
@ -122,6 +120,9 @@ QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map) {
if (variantType == QVariant((quint16)0).type()) { // uint16 if (variantType == QVariant((quint16)0).type()) { // uint16
variantType = QVariant::UInt; variantType = QVariant::UInt;
} }
if (variantType == QVariant::Url) { // QUrl
variantType = QVariant::String;
}
switch (variantType) { switch (variantType) {
case QVariant::Map: case QVariant::Map:
@ -213,8 +214,6 @@ QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map) {
} }
} }
qDebug() << Q_FUNC_INFO << object.size() << "in json";
return QJsonDocument(object); return QJsonDocument(object);
} }
@ -225,7 +224,6 @@ QSettings::SettingsMap jsonDocumentToVariantMap(const QJsonDocument& document) {
return QSettings::SettingsMap(); return QSettings::SettingsMap();
} }
auto object = document.object(); auto object = document.object();
qDebug() << Q_FUNC_INFO << object.size() << "in json";
QSettings::SettingsMap map; QSettings::SettingsMap map;
for (auto it = object.begin(); it != object.end(); ++it) { for (auto it = object.begin(); it != object.end(); ++it) {
@ -237,10 +235,10 @@ QSettings::SettingsMap jsonDocumentToVariantMap(const QJsonDocument& document) {
} else { } else {
auto string = it->toString(); auto string = it->toString();
if (string.startsWith(QLatin1String("@@"))) { if (string.startsWith(QLatin1String("@@"))) { // Standard string starting with '@'
result = QVariant(string.mid(1)); result = QVariant(string.mid(1));
} else if (string.startsWith(QLatin1Char('@'))) { } else if (string.startsWith(QLatin1Char('@'))) { // Custom type to string
if (string.endsWith(QLatin1Char(')'))) { if (string.endsWith(QLatin1Char(')'))) {
@ -273,12 +271,13 @@ QSettings::SettingsMap jsonDocumentToVariantMap(const QJsonDocument& document) {
} }
} }
} }
} else { // Standard string
result = string;
} }
} }
map.insert(it.key(), result); map.insert(it.key(), result);
} }
qDebug() << Q_FUNC_INFO << map.size() << "in map";
return map; return map;
} }