diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-06-02 12:31:17 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-06-03 13:04:53 +0200 |
commit | 05afd837fc336541ebdf772ab25347860782c02f (patch) | |
tree | 02abee082f58b4fb529be1ca83647b1a435a3332 /src/libs/installer/qsettingswrapper.cpp | |
parent | 7c07130119722e2e0afcf423f23a449f93931dfa (diff) |
Replace client-server classes and update implementations.
Remove superfluous file engine tests. Introduce auto test
for newly added client server classes. Fix some wrong
implementations serverside for settings array handling and
broken arguments in process wrapper. Replace all other parts
that with new implementations. Remove now unused classes.
Change-Id: I6f9e836993096a2c2c06b06f2b06d7aa4b287e56
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src/libs/installer/qsettingswrapper.cpp')
-rw-r--r-- | src/libs/installer/qsettingswrapper.cpp | 261 |
1 files changed, 112 insertions, 149 deletions
diff --git a/src/libs/installer/qsettingswrapper.cpp b/src/libs/installer/qsettingswrapper.cpp index 89f39a14e..3ebf69f87 100644 --- a/src/libs/installer/qsettingswrapper.cpp +++ b/src/libs/installer/qsettingswrapper.cpp @@ -41,13 +41,10 @@ #include "qsettingswrapper.h" -#include "fsengineclient.h" -#include "templates.cpp" +#include <QSettings> +#include <QStringList> -#include <QtCore/QSettings> -#include <QtCore/QThread> - -#include <QtNetwork/QTcpSocket> +namespace QInstaller { // -- QSettingsWrapper::Private @@ -56,320 +53,286 @@ class QSettingsWrapper::Private { public: Private(const QString &organization, const QString &application) - : native(true) + : m_native(true) + , m_application(application) + , m_organization(organization) + , m_scope(QSettings::UserScope) + , m_format(QSettings::NativeFormat) , settings(organization, application) - , socket(0) { } Private(QSettings::Scope scope, const QString &organization, const QString &application) - : native(true) + : m_native(true) + , m_application(application) + , m_organization(organization) + , m_scope(scope) + , m_format(QSettings::NativeFormat) , settings(scope, organization, application) - , socket(0) { } Private(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application) - : native(format == QSettings::NativeFormat) + : m_native(format == QSettings::NativeFormat) + , m_application(application) + , m_organization(organization) + , m_scope(scope) + , m_format(format) , settings(format, scope, organization, application) - , socket(0) { } Private(const QString &fileName, QSettings::Format format) - : native(format == QSettings::NativeFormat) - , fileName(fileName) + : m_native(format == QSettings::NativeFormat) + , m_filename(fileName) , settings(fileName, format) - , socket(0) - { - } - - Private() - : native(true) - , socket(0) - { - } - - bool createSocket() { - if (!native || !FSEngineClientHandler::instance().isActive()) - return false; - - if (socket != 0 && socket->state() == static_cast<int>(QAbstractSocket::ConnectedState)) - return true; - - if (socket != 0) - delete socket; - - socket = new QTcpSocket; - if (!FSEngineClientHandler::instance().connect(socket)) - return false; - - stream.setDevice(socket); - stream.setVersion(QDataStream::Qt_4_2); - - stream << QString::fromLatin1("createQSettings"); - stream << this->fileName; - socket->flush(); - stream.device()->waitForReadyRead(-1); - quint32 test; - stream >> test; - stream.device()->readAll(); - return true; + m_format = format; + m_scope = settings.scope(); + m_application = settings.applicationName(); + m_organization = settings.organizationName(); } - const bool native; - const QString fileName; + bool m_native; QSettings settings; - mutable QTcpSocket *socket; - mutable QDataStream stream; + QString m_filename; + QString m_application; + QString m_organization; + QSettings::Scope m_scope; + QSettings::Format m_format; }; // -- QSettingsWrapper -QSettingsWrapper::QSettingsWrapper(const QString &organization, const QString &application, QObject *parent) - : QObject(parent) +QSettingsWrapper::QSettingsWrapper(const QString &organization, const QString &application, + QObject *parent) + : RemoteObject(QLatin1String(Protocol::QSettings), parent) , d(new Private(organization, application)) { } QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Scope scope, const QString &organization, const QString &application, QObject *parent) - : QObject(parent) + : RemoteObject(QLatin1String(Protocol::QSettings), parent) , d(new Private(static_cast<QSettings::Scope>(scope), organization, application)) { } QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Format format, QSettingsWrapper::Scope scope, const QString &organization, const QString &application, QObject *parent) - : QObject(parent) + : RemoteObject(QLatin1String(Protocol::QSettings), parent) , d(new Private(static_cast<QSettings::Format>(format), static_cast<QSettings::Scope> (scope), organization, application)) { } -QSettingsWrapper::QSettingsWrapper(const QString &fileName, QSettingsWrapper::Format format, QObject *parent) - : QObject(parent) +QSettingsWrapper::QSettingsWrapper(const QString &fileName, QSettingsWrapper::Format format, + QObject *parent) + : RemoteObject(QLatin1String(Protocol::QSettings), parent) , d(new Private(fileName, static_cast<QSettings::Format>(format))) { } -QSettingsWrapper::QSettingsWrapper(QObject *parent) - : QObject(parent) - , d(new Private) -{ -} - QSettingsWrapper::~QSettingsWrapper() { - if (d->socket != 0) { - d->stream << QString::fromLatin1("destroyQSettings"); - d->socket->flush(); - quint32 result; - d->stream >> result; - - if (QThread::currentThread() == d->socket->thread()) { - d->socket->close(); - delete d->socket; - } else { - d->socket->deleteLater(); - } - } delete d; } QStringList QSettingsWrapper::allKeys() const { - if (d->createSocket()) - return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::allKeys")); - return static_cast<QStringList>(d->settings.allKeys()); + if (createSocket()) + return callRemoteMethod<QStringList>(QLatin1String(Protocol::QSettingsAllKeys)); + return d->settings.allKeys(); } QString QSettingsWrapper::applicationName() const { - if (d->createSocket()) - return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::applicationName")); - return static_cast<QString>(d->settings.applicationName()); + if (createSocket()) + return callRemoteMethod<QString>(QLatin1String(Protocol::QSettingsApplicationName)); + return d->settings.applicationName(); } void QSettingsWrapper::beginGroup(const QString ¶m1) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::beginGroup"), param1); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsBeginGroup), param1, dummy); else d->settings.beginGroup(param1); } int QSettingsWrapper::beginReadArray(const QString ¶m1) { - if (d->createSocket()) - return callRemoteMethod<int>(d->stream, QLatin1String("QSettings::beginReadArray"), param1); + if (createSocket()) + return callRemoteMethod<int>(QLatin1String(Protocol::QSettingsBeginReadArray), param1); return d->settings.beginReadArray(param1); } void QSettingsWrapper::beginWriteArray(const QString ¶m1, int param2) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::beginWriteArray"), param1, param2); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsBeginWriteArray), param1, param2); else d->settings.beginWriteArray(param1, param2); } QStringList QSettingsWrapper::childGroups() const { - if (d->createSocket()) - return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::childGroups")); - return static_cast<QStringList>(d->settings.childGroups()); + if (createSocket()) + return callRemoteMethod<QStringList>(QLatin1String(Protocol::QSettingsChildGroups)); + return d->settings.childGroups(); } QStringList QSettingsWrapper::childKeys() const { - if (d->createSocket()) - return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::childKeys")); - return static_cast<QStringList>(d->settings.childKeys()); + if (createSocket()) + return callRemoteMethod<QStringList>(QLatin1String(Protocol::QSettingsChildKeys)); + return d->settings.childKeys(); } void QSettingsWrapper::clear() { - if (d->createSocket()) - callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::clear")); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsClear)); else d->settings.clear(); } bool QSettingsWrapper::contains(const QString ¶m1) const { - if (d->createSocket()) - return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::contains"), param1); + if (createSocket()) + return callRemoteMethod<bool>(QLatin1String(Protocol::QSettingsContains), param1); return d->settings.contains(param1); } void QSettingsWrapper::endArray() { - if (d->createSocket()) - callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::endArray")); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsEndArray)); else d->settings.endArray(); } void QSettingsWrapper::endGroup() { - if (d->createSocket()) - callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::endGroup")); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsEndGroup)); else d->settings.endGroup(); } bool QSettingsWrapper::fallbacksEnabled() const { - if (d->createSocket()) - return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::fallbacksEnabled")); - return static_cast<bool>(d->settings.fallbacksEnabled()); + if (createSocket()) + return callRemoteMethod<bool>(QLatin1String(Protocol::QSettingsFallbacksEnabled)); + return d->settings.fallbacksEnabled(); } QString QSettingsWrapper::fileName() const { - if (d->createSocket()) - return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::fileName")); - return static_cast<QString>(d->settings.fileName()); + if (createSocket()) + return callRemoteMethod<QString>(QLatin1String(Protocol::QSettingsFileName)); + return d->settings.fileName(); } QSettingsWrapper::Format QSettingsWrapper::format() const { + // No need to talk to the server, we've setup the local settings object the same way. return static_cast<QSettingsWrapper::Format>(d->settings.format()); } QString QSettingsWrapper::group() const { - if (d->createSocket()) - return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::group")); - return static_cast<QString>(d->settings.group()); -} - -QTextCodec* QSettingsWrapper::iniCodec() const -{ - return d->settings.iniCodec(); + if (createSocket()) + return callRemoteMethod<QString>(QLatin1String(Protocol::QSettingsGroup)); + return d->settings.group(); } bool QSettingsWrapper::isWritable() const { - if (d->createSocket()) - return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::isWritable")); - return static_cast<bool>(d->settings.isWritable()); + if (createSocket()) + return callRemoteMethod<bool>(QLatin1String(Protocol::QSettingsIsWritable)); + return d->settings.isWritable(); } QString QSettingsWrapper::organizationName() const { - if (d->createSocket()) - return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::organizationName")); - return static_cast<QString>(d->settings.organizationName()); + if (createSocket()) + return callRemoteMethod<QString>(QLatin1String(Protocol::QSettingsOrganizationName)); + return d->settings.organizationName(); } void QSettingsWrapper::remove(const QString ¶m1) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::remove"), param1); - else d->settings.remove(param1); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsRemove), param1, dummy); + else + d->settings.remove(param1); } QSettingsWrapper::Scope QSettingsWrapper::scope() const { + // No need to talk to the server, we've setup the local settings object the same way. return static_cast<QSettingsWrapper::Scope>(d->settings.scope()); } void QSettingsWrapper::setArrayIndex(int param1) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setArrayIndex"), param1); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsSetArrayIndex), param1, dummy); else d->settings.setArrayIndex(param1); } void QSettingsWrapper::setFallbacksEnabled(bool param1) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setFallbacksEnabled"), param1); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsSetFallbacksEnabled), param1, dummy); else d->settings.setFallbacksEnabled(param1); } -void QSettingsWrapper::setIniCodec(QTextCodec *codec) -{ - d->settings.setIniCodec(codec); -} - -void QSettingsWrapper::setIniCodec(const char *codecName) -{ - d->settings.setIniCodec(codecName); -} - void QSettingsWrapper::setValue(const QString ¶m1, const QVariant ¶m2) { - if (d->createSocket()) - callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setValue"), param1, param2); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsSetValue), param1, param2); else d->settings.setValue(param1, param2); } QSettingsWrapper::Status QSettingsWrapper::status() const { - if (d->createSocket()) - return callRemoteMethod<QSettingsWrapper::Status>(d->stream, QLatin1String("QSettings::status")); + if (createSocket()) { + return static_cast<QSettingsWrapper::Status> + (callRemoteMethod<int>(QLatin1String(Protocol::QSettingsStatus))); + } return static_cast<QSettingsWrapper::Status>(d->settings.status()); } void QSettingsWrapper::sync() { - if (d->createSocket()) - callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::sync")); + if (createSocket()) + callRemoteMethod(QLatin1String(Protocol::QSettingsSync)); else d->settings.sync(); } QVariant QSettingsWrapper::value(const QString ¶m1, const QVariant ¶m2) const { - if (d->createSocket()) - return callRemoteMethod<QVariant>(d->stream, QLatin1String("QSettings::value"), param1, param2); + if (createSocket()) + return callRemoteMethod<QVariant>(QLatin1String(Protocol::QSettingsValue), param1, param2); return d->settings.value(param1, param2); } + + +// -- private + +bool QSettingsWrapper::createSocket() const +{ + if (!d->m_native) + return false; + return (const_cast<QSettingsWrapper *>(this))->connectToServer(QVariantList() + << d->m_application << d->m_organization << d->m_scope << d->m_format << d->m_filename); +} + +} // namespace QInstaller |