summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qsettings.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-09-25 14:02:04 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-09-25 14:02:04 +0200
commita1ad9a74ebb3c556c5f70f7e03be68b09598ac53 (patch)
tree615a96db418219a57a745a5899e39a9ac90744ec /src/corelib/io/qsettings.cpp
parent6d78b7a0c46ea04f4bb771d960e2f7dff1362341 (diff)
parent462f355e4fb16cc7a1838fa2dda0f763eee58c84 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: src/corelib/io/io.pri src/corelib/io/qdatastream.cpp src/corelib/io/qdatastream.h src/network/socket/qabstractsocket.cpp src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h src/widgets/styles/qgtkstyle.cpp tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/qmimedatabase-cache.pro tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/qmimedatabase-xml.pro tests/auto/dbus/qdbusconnection/qdbusconnection.pro tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp Change-Id: I347549a024eb5bfa986699e0a11f96cc55c797a7
Diffstat (limited to 'src/corelib/io/qsettings.cpp')
-rw-r--r--src/corelib/io/qsettings.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index d4143c4035..654d688c53 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -453,14 +453,23 @@ QString QSettingsPrivate::variantToString(const QVariant &v)
default: {
#ifndef QT_NO_DATASTREAM
+ QDataStream::Version version;
+ const char *typeSpec;
+ if (v.type() == QVariant::DateTime) {
+ version = QDataStream::Qt_5_6;
+ typeSpec = "@DateTime(";
+ } else {
+ version = QDataStream::Qt_4_0;
+ typeSpec = "@Variant(";
+ }
QByteArray a;
{
QDataStream s(&a, QIODevice::WriteOnly);
- s.setVersion(QDataStream::Qt_4_0);
+ s.setVersion(version);
s << v;
}
- result = QLatin1String("@Variant(");
+ result = QLatin1String(typeSpec);
result += QString::fromLatin1(a.constData(), a.size());
result += QLatin1Char(')');
#else
@@ -480,11 +489,21 @@ QVariant QSettingsPrivate::stringToVariant(const QString &s)
if (s.endsWith(QLatin1Char(')'))) {
if (s.startsWith(QLatin1String("@ByteArray("))) {
return QVariant(s.toLatin1().mid(11, s.size() - 12));
- } else if (s.startsWith(QLatin1String("@Variant("))) {
+ } else if (s.startsWith(QLatin1String("@Variant("))
+ || s.startsWith(QLatin1String("@DateTime("))) {
#ifndef QT_NO_DATASTREAM
- QByteArray a(s.toLatin1().mid(9));
+ QDataStream::Version version;
+ int offset;
+ if (s.at(1) == QLatin1Char('D')) {
+ version = QDataStream::Qt_5_6;
+ offset = 10;
+ } else {
+ version = QDataStream::Qt_4_0;
+ offset = 9;
+ }
+ QByteArray a(s.toLatin1().mid(offset));
QDataStream stream(&a, QIODevice::ReadOnly);
- stream.setVersion(QDataStream::Qt_4_0);
+ stream.setVersion(version);
QVariant result;
stream >> result;
return result;