diff options
-rw-r--r-- | src/libs/installer/permissionsettings.cpp | 26 | ||||
-rw-r--r-- | src/libs/installer/permissionsettings.h | 14 | ||||
-rw-r--r-- | tests/auto/installer/clientserver/tst_clientserver.cpp | 39 |
3 files changed, 67 insertions, 12 deletions
diff --git a/src/libs/installer/permissionsettings.cpp b/src/libs/installer/permissionsettings.cpp index 6d5abdfe6..235c6667b 100644 --- a/src/libs/installer/permissionsettings.cpp +++ b/src/libs/installer/permissionsettings.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -37,6 +37,30 @@ using namespace QInstaller; \internal */ +PermissionSettings::PermissionSettings(const QString &organization, const QString &application, QObject *parent) + : QSettings(organization, application, parent) +{ + setIniCodec("UTF-8"); // to workaround QTBUG-102334 +} + +PermissionSettings::PermissionSettings(Scope scope, const QString &organization, const QString &application, QObject *parent) + : QSettings(scope, organization, application, parent) +{ + setIniCodec("UTF-8"); // QTBUG-102334 +} + +PermissionSettings::PermissionSettings(Format format, Scope scope, const QString &organization, const QString &application, QObject *parent) + : QSettings(format, scope, organization, application, parent) +{ + setIniCodec("UTF-8"); // QTBUG-102334 +} + +PermissionSettings::PermissionSettings(const QString &fileName, Format format, QObject *parent) + : QSettings(fileName, format, parent) +{ + setIniCodec("UTF-8"); // QTBUG-102334 +} + PermissionSettings::~PermissionSettings() { if (!fileName().isEmpty()) { diff --git a/src/libs/installer/permissionsettings.h b/src/libs/installer/permissionsettings.h index 3847c91db..2621624c2 100644 --- a/src/libs/installer/permissionsettings.h +++ b/src/libs/installer/permissionsettings.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -37,16 +37,12 @@ class PermissionSettings : public QSettings { public: explicit PermissionSettings(const QString &organization, - const QString &application = QString(), QObject *parent = 0) - : QSettings(organization, application, parent) {} + const QString &application = QString(), QObject *parent = 0); PermissionSettings(Scope scope, const QString &organization, - const QString &application = QString(), QObject *parent = 0) - : QSettings(scope, organization, application, parent) {} + const QString &application = QString(), QObject *parent = 0); PermissionSettings(Format format, Scope scope, const QString &organization, - const QString &application = QString(), QObject *parent = 0) - : QSettings(format, scope, organization, application, parent) {} - PermissionSettings(const QString &fileName, Format format, QObject *parent = 0) - : QSettings(fileName, format, parent) {} + const QString &application = QString(), QObject *parent = 0); + PermissionSettings(const QString &fileName, Format format, QObject *parent = 0); ~PermissionSettings(); }; diff --git a/tests/auto/installer/clientserver/tst_clientserver.cpp b/tests/auto/installer/clientserver/tst_clientserver.cpp index bcd87815d..ffd96d14e 100644 --- a/tests/auto/installer/clientserver/tst_clientserver.cpp +++ b/tests/auto/installer/clientserver/tst_clientserver.cpp @@ -312,8 +312,17 @@ private slots: delete object; } + void testQSettingsWrapper_data() + { + QTest::addColumn<QSettings::Format>("format"); + QTest::newRow("Native format") << QSettings::NativeFormat; + QTest::newRow("INI format") << QSettings::IniFormat; + } + void testQSettingsWrapper() { + QFETCH(QSettings::Format, format); + RemoteServer server; QString socketName = QUuid::createUuid().toString(); server.init(socketName, QLatin1String("SomeKey"), Protocol::Mode::Production); @@ -322,14 +331,16 @@ private slots: RemoteClient::instance().init(socketName, QLatin1String("SomeKey"), Protocol::Mode::Debug, Protocol::StartAs::User); - QSettingsWrapper wrapper("digia", "clientserver"); + QSettingsWrapper wrapper(static_cast<QSettingsWrapper::Format>(format), + QSettingsWrapper::UserScope, "digia", "clientserver"); + QCOMPARE(wrapper.isConnectedToServer(), false); wrapper.clear(); QCOMPARE(wrapper.isConnectedToServer(), true); wrapper.sync(); wrapper.setFallbacksEnabled(false); - QSettings settings("digia", "clientserver"); + QSettings settings(format, QSettings::UserScope, "digia", "clientserver"); settings.setFallbacksEnabled(false); QCOMPARE(settings.fileName(), wrapper.fileName()); @@ -358,6 +369,30 @@ private slots: QCOMPARE(wrapper.contains("key"), false); QCOMPARE(settings.contains("key"), false); + const QDateTime dateTime = QDateTime::currentDateTimeUtc(); + QCOMPARE(settings.iniCodec(), nullptr); + // The wrapper does not support this method, but assume: + // QCOMPARE(wrapper.iniCodec(), QTextCodec::codecForName("UTF-8")); + wrapper.setValue("dateTime", dateTime); + wrapper.sync(); + QCOMPARE(wrapper.value("dateTime").toDateTime(), dateTime); + QCOMPARE(settings.value("dateTime").toDateTime(), dateTime); + + wrapper.remove("dateTime"); + wrapper.sync(); + QCOMPARE(wrapper.contains("dateTime"), false); + QCOMPARE(settings.contains("dateTime"), false); + + settings.setValue("dateTime", dateTime); + settings.sync(); + QCOMPARE(wrapper.value("dateTime").toDateTime(), dateTime); + QCOMPARE(settings.value("dateTime").toDateTime(), dateTime); + + settings.remove("dateTime"); + settings.sync(); + QCOMPARE(wrapper.contains("dateTime"), false); + QCOMPARE(settings.contains("dateTime"), false); + wrapper.beginGroup("group"); wrapper.setValue("key", "value"); wrapper.endGroup(); |