diff options
author | Christian Stenger <christian.stenger@qt.io> | 2022-10-20 10:21:14 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2023-06-06 15:55:52 +0300 |
commit | a11fb3ca2d3521d11b37b8754df1bac6ca16a90e (patch) | |
tree | 2f3faca35574432494d6cdd25bd817f29edb39b0 | |
parent | 9f06f9f34cef3b4db51c03806b1f3b0f06cf7889 (diff) |
Adapt to QTextCodec changes
Task-number: QTIFW-1829
Change-Id: Iad99b41ec67b0d4c64623da04fff65a737f46ff2
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
-rw-r--r-- | src/libs/installer/component.cpp | 5 | ||||
-rw-r--r-- | src/libs/installer/createdesktopentryoperation.cpp | 7 | ||||
-rw-r--r-- | src/libs/installer/licenseoperation.cpp | 6 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 9 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 6 | ||||
-rw-r--r-- | src/libs/installer/permissionsettings.cpp | 34 | ||||
-rw-r--r-- | src/libs/installer/permissionsettings.h | 17 | ||||
-rw-r--r-- | src/libs/installer/qsettingswrapper.cpp | 80 | ||||
-rw-r--r-- | src/libs/installer/qsettingswrapper.h | 30 | ||||
-rw-r--r-- | src/libs/installer/remoteobject.h | 8 |
10 files changed, 128 insertions, 74 deletions
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp index a7763f506..9c8bd9f89 100644 --- a/src/libs/installer/component.cpp +++ b/src/libs/installer/component.cpp @@ -46,6 +46,9 @@ #include <QtCore/QDirIterator> #include <QtCore/QTranslator> #include <QtCore/QRegularExpression> +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#include <QtCore/QTextCodec> +#endif #include <QApplication> #include <QtConcurrentFilter> @@ -748,7 +751,9 @@ void Component::loadLicenses(const QString &directory, const QHash<QString, QVar file.fileName(), file.errorString(), tr(scClearCacheHint), packageManagerCore()->settings().localCachePath())); } QTextStream stream(&file); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) stream.setCodec("UTF-8"); +#endif license.insert(scContent, stream.readAll()); d->m_licenses.insert(it.key(), license); } diff --git a/src/libs/installer/createdesktopentryoperation.cpp b/src/libs/installer/createdesktopentryoperation.cpp index 27ff18fca..a19fd773a 100644 --- a/src/libs/installer/createdesktopentryoperation.cpp +++ b/src/libs/installer/createdesktopentryoperation.cpp @@ -152,15 +152,16 @@ bool CreateDesktopEntryOperation::performOperation() setDefaultFilePermissions(filename, DefaultFilePermissions::Executable); - QTextStream stream(&file); - stream.setCodec("UTF-8"); - stream << QLatin1String("[Desktop Entry]") << endl; + QString outString; + QTextStream stream(&outString); + stream << QLatin1String("[Desktop Entry]") << Qt::endl; // Type=Application\nExec=qtcreator\nPath=... const QStringList pairs = values.split(QLatin1Char('\n')); for (QStringList::const_iterator it = pairs.begin(); it != pairs.end(); ++it) stream << *it << Qt::endl; + file.write(outString.toUtf8()); return true; } diff --git a/src/libs/installer/licenseoperation.cpp b/src/libs/installer/licenseoperation.cpp index c87348351..0d30ab514 100644 --- a/src/libs/installer/licenseoperation.cpp +++ b/src/libs/installer/licenseoperation.cpp @@ -87,9 +87,11 @@ bool LicenseOperation::performOperation() return false; } - QTextStream stream(&file); - stream.setCodec("UTF-8"); + QString outString; + QTextStream stream(&outString); stream << it.value().toString(); + + file.write(outString.toUtf8()); } return true; diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 9c670a95d..31fa3d744 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -56,9 +56,15 @@ #include <QtCore/QMutex> #include <QtCore/QSettings> #include <QtCore/QTemporaryFile> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include <QtCore5Compat/QTextCodec> +#include <QtCore5Compat/QTextDecoder> +#include <QtCore5Compat/QTextEncoder> +#else #include <QtCore/QTextCodec> #include <QtCore/QTextDecoder> #include <QtCore/QTextEncoder> +#endif #include <QtCore/QTextStream> #include <QDesktopServices> @@ -1032,8 +1038,7 @@ QString PackageManagerCore::readFile(const QString &filePath, const QString &cod return QString(); QTextStream stream(&f); - stream.setCodec(codec); - return stream.readAll(); + return QString::fromUtf8(codec->fromUnicode(stream.readAll())); } /*! diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index b38633531..ed2307bf3 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -892,8 +892,8 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles() QFile file(targetDir() + QLatin1Char('/') + QLatin1String("network.xml")); if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - QXmlStreamWriter writer(&file); - writer.setCodec("UTF-8"); + QString outputStr; + QXmlStreamWriter writer(&outputStr); writer.setAutoFormatting(true); writer.writeStartDocument(); @@ -926,6 +926,8 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles() writer.writeEndElement(); writer.writeTextElement(QLatin1String("LocalCachePath"), m_data.settings().localCachePath()); writer.writeEndElement(); + + file.write(outputStr.toUtf8()); } setDefaultFilePermissions(&file, DefaultFilePermissions::NonExecutable); } diff --git a/src/libs/installer/permissionsettings.cpp b/src/libs/installer/permissionsettings.cpp index 68e4ab427..d70cf5625 100644 --- a/src/libs/installer/permissionsettings.cpp +++ b/src/libs/installer/permissionsettings.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -37,38 +37,6 @@ using namespace QInstaller; \internal */ -PermissionSettings::PermissionSettings(const QString &organization, const QString &application, QObject *parent) - : QSettings(organization, application, parent) -{ -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - setIniCodec("UTF-8"); // to workaround QTBUG-102334 -#endif -} - -PermissionSettings::PermissionSettings(Scope scope, const QString &organization, const QString &application, QObject *parent) - : QSettings(scope, organization, application, parent) -{ -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - setIniCodec("UTF-8"); // QTBUG-102334 -#endif -} - -PermissionSettings::PermissionSettings(Format format, Scope scope, const QString &organization, const QString &application, QObject *parent) - : QSettings(format, scope, organization, application, parent) -{ -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - setIniCodec("UTF-8"); // QTBUG-102334 -#endif -} - -PermissionSettings::PermissionSettings(const QString &fileName, Format format, QObject *parent) - : QSettings(fileName, format, parent) -{ -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - setIniCodec("UTF-8"); // QTBUG-102334 -#endif -} - PermissionSettings::~PermissionSettings() { if (!fileName().isEmpty()) { diff --git a/src/libs/installer/permissionsettings.h b/src/libs/installer/permissionsettings.h index 2621624c2..c950d9c17 100644 --- a/src/libs/installer/permissionsettings.h +++ b/src/libs/installer/permissionsettings.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -37,12 +37,19 @@ class PermissionSettings : public QSettings { public: explicit PermissionSettings(const QString &organization, - const QString &application = QString(), QObject *parent = 0); + const QString &application = QString(), QObject *parent = 0) + : QSettings(organization, application, parent) {} + PermissionSettings(Scope scope, const QString &organization, - const QString &application = QString(), QObject *parent = 0); + const QString &application = QString(), QObject *parent = 0) + : QSettings(scope, organization, application, parent) {} + PermissionSettings(Format format, Scope scope, const QString &organization, - const QString &application = QString(), QObject *parent = 0); - PermissionSettings(const QString &fileName, Format format, QObject *parent = 0); + 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) {} + ~PermissionSettings(); }; diff --git a/src/libs/installer/qsettingswrapper.cpp b/src/libs/installer/qsettingswrapper.cpp index 29571e729..76b73a671 100644 --- a/src/libs/installer/qsettingswrapper.cpp +++ b/src/libs/installer/qsettingswrapper.cpp @@ -141,27 +141,39 @@ QString QSettingsWrapper::applicationName() const return d->settings.applicationName(); } -void QSettingsWrapper::beginGroup(const QString ¶m1) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void QSettingsWrapper::beginGroup(const QString &prefix) +#else + void QSettingsWrapper::beginGroup(QAnyStringView prefix) +#endif { if (createSocket()) - callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsBeginGroup), param1); + callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsBeginGroup), prefix); else - d->settings.beginGroup(param1); + d->settings.beginGroup(prefix); } -int QSettingsWrapper::beginReadArray(const QString ¶m1) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + int QSettingsWrapper::beginReadArray(const QString &prefix) +#else + int QSettingsWrapper::beginReadArray(QAnyStringView prefix) +#endif { if (createSocket()) - return callRemoteMethod<qint32>(QLatin1String(Protocol::QSettingsBeginReadArray), param1); - return d->settings.beginReadArray(param1); + return callRemoteMethod<qint32>(QLatin1String(Protocol::QSettingsBeginReadArray), prefix); + return d->settings.beginReadArray(prefix); } -void QSettingsWrapper::beginWriteArray(const QString ¶m1, int param2) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void QSettingsWrapper::beginWriteArray(const QString &prefix, int size) +#else + void QSettingsWrapper::beginWriteArray(QAnyStringView prefix, int size) +#endif { if (createSocket()) - callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsBeginWriteArray), param1, qint32(param2)); + callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsBeginWriteArray), prefix, qint32(size)); else - d->settings.beginWriteArray(param1, param2); + d->settings.beginWriteArray(prefix, size); } QStringList QSettingsWrapper::childGroups() const @@ -185,11 +197,15 @@ void QSettingsWrapper::clear() else d->settings.clear(); } -bool QSettingsWrapper::contains(const QString ¶m1) const +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + bool QSettingsWrapper::contains(const QString &key) const +#else + bool QSettingsWrapper::contains(QAnyStringView key) const +#endif { if (createSocket()) - return callRemoteMethod<bool>(QLatin1String(Protocol::QSettingsContains), param1); - return d->settings.contains(param1); + return callRemoteMethod<bool>(QLatin1String(Protocol::QSettingsContains), key); + return d->settings.contains(key); } void QSettingsWrapper::endArray() @@ -249,12 +265,16 @@ QString QSettingsWrapper::organizationName() const return d->settings.organizationName(); } -void QSettingsWrapper::remove(const QString ¶m1) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + void QSettingsWrapper::remove(const QString &key) +#else + void QSettingsWrapper::remove(QAnyStringView key) +#endif { if (createSocket()) - callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsRemove), param1); + callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsRemove), key); else - d->settings.remove(param1); + d->settings.remove(key); } QSettingsWrapper::Scope QSettingsWrapper::scope() const @@ -278,13 +298,16 @@ void QSettingsWrapper::setFallbacksEnabled(bool param1) else d->settings.setFallbacksEnabled(param1); } - -void QSettingsWrapper::setValue(const QString ¶m1, const QVariant ¶m2) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +void QSettingsWrapper::setValue(const QString &key, const QVariant &value) +#else +void QSettingsWrapper::setValue(QAnyStringView key, const QVariant &value) +#endif { if (createSocket()) - callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsSetValue), param1, param2); + callRemoteMethodDefaultReply(QLatin1String(Protocol::QSettingsSetValue), key, value); else - d->settings.setValue(param1, param2); + d->settings.setValue(key, value); } QSettingsWrapper::Status QSettingsWrapper::status() const @@ -304,12 +327,25 @@ void QSettingsWrapper::sync() d->settings.sync(); } -QVariant QSettingsWrapper::value(const QString ¶m1, const QVariant ¶m2) const +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +QVariant QSettingsWrapper::value(const QString &key, const QVariant &value) const +#else +QVariant QSettingsWrapper::value(QAnyStringView key, const QVariant &value) const +#endif +{ + if (createSocket()) + return callRemoteMethod<QVariant>(QLatin1String(Protocol::QSettingsValue), key, value); + return d->settings.value(key, value); +} + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +QVariant QSettingsWrapper::value(QAnyStringView key) const { if (createSocket()) - return callRemoteMethod<QVariant>(QLatin1String(Protocol::QSettingsValue), param1, param2); - return d->settings.value(param1, param2); + return callRemoteMethod<QVariant>(QLatin1String(Protocol::QSettingsValue), key); + return d->settings.value(key); } +#endif // -- private diff --git a/src/libs/installer/qsettingswrapper.h b/src/libs/installer/qsettingswrapper.h index 92221c117..b50e46227 100644 --- a/src/libs/installer/qsettingswrapper.h +++ b/src/libs/installer/qsettingswrapper.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -36,6 +36,8 @@ #include <QSettings> +QT_FORWARD_DECLARE_CLASS(QTextCodec) + namespace QInstaller { class INSTALLER_EXPORT QSettingsWrapper : public RemoteObject @@ -68,12 +70,21 @@ public: void sync(); Status status() const; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void beginGroup(const QString &prefix); +#else + void beginGroup(QAnyStringView prefix); +#endif void endGroup(); QString group() const; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) int beginReadArray(const QString &prefix); void beginWriteArray(const QString &prefix, int size = -1); +#else + int beginReadArray(QAnyStringView prefix); + void beginWriteArray(QAnyStringView prefix, int size = -1); +#endif void endArray(); void setArrayIndex(int i); @@ -82,12 +93,22 @@ public: QStringList childGroups() const; bool isWritable() const; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void setValue(const QString &key, const QVariant &value); QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; +#else + void setValue(QAnyStringView key, const QVariant &value); + QVariant value(QAnyStringView key, const QVariant &defaultValue) const; + QVariant value(QAnyStringView key) const; +#endif +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void remove(const QString &key); bool contains(const QString &key) const; - +#else + void remove(QAnyStringView key); + bool contains(QAnyStringView key) const; +#endif void setFallbacksEnabled(bool b); bool fallbacksEnabled() const; @@ -105,14 +126,13 @@ private: // we cannot support the following functionality : RemoteObject(QLatin1String(Protocol::QSettings), parent) {} +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void setIniCodec(QTextCodec * /*codec*/); void setIniCodec(const char * /*codecName*/); QTextCodec *iniCodec() const { return 0; } - +#endif static void setDefaultFormat(QSettings::Format /*format*/); static QSettings::Format defaultFormat() { return QSettings::NativeFormat; } - static void setSystemIniPath(const QString & /*dir*/); - static void setUserIniPath(const QString & /*dir*/); static void setPath(QSettings::Format /*format*/, Scope /*scope*/, const QString & /*path*/); typedef QMap<QString, QVariant> SettingsMap; diff --git a/src/libs/installer/remoteobject.h b/src/libs/installer/remoteobject.h index 5e4d14325..ddd512588 100644 --- a/src/libs/installer/remoteobject.h +++ b/src/libs/installer/remoteobject.h @@ -85,7 +85,15 @@ private: template <class T> int writeObject(QDataStream& out, const T& t) const { static_assert(!std::is_pointer<T>::value, "Pointer passed to remote server"); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out << t; +#else + if constexpr (std::is_same<T, QAnyStringView>::value) + out << t.toString(); + else + out << t; +#endif + return 0; } |