diff options
author | kh1 <qt-info@nokia.com> | 2011-05-17 10:50:48 +0200 |
---|---|---|
committer | kh1 <qt-info@nokia.com> | 2011-05-17 10:50:48 +0200 |
commit | 610f2476016f9b0ba8a445f4f69553da3bdba145 (patch) | |
tree | 7bb3ef0f75dea60412788a1f8d4e3108a5b40852 /installerbuilder | |
parent | 425c086b6c8e371957a6eb47675ebb5f937d71c2 (diff) |
Move QSettingsWrapper into it's own source files.
Diffstat (limited to 'installerbuilder')
-rw-r--r-- | installerbuilder/libinstaller/libinstaller.pro | 6 | ||||
-rw-r--r-- | installerbuilder/libinstaller/qsettingswrapper.cpp | 406 | ||||
-rw-r--r-- | installerbuilder/libinstaller/qsettingswrapper.h | 100 |
3 files changed, 510 insertions, 2 deletions
diff --git a/installerbuilder/libinstaller/libinstaller.pro b/installerbuilder/libinstaller/libinstaller.pro index a8b458cc5..8920fc1dd 100644 --- a/installerbuilder/libinstaller/libinstaller.pro +++ b/installerbuilder/libinstaller/libinstaller.pro @@ -95,7 +95,8 @@ HEADERS += $$PWD/qinstaller.h \ qtcreatorpersistentsettings.h \ registerdefaultdebuggeroperation.h \ updatecreatorsettingsfrom21to22operation.h \ - qprocesswrapper.h + qprocesswrapper.h \ + qsettingswrapper.h SOURCES += $$PWD/qinstaller.cpp \ $$PWD/qinstaller_p.cpp \ @@ -158,7 +159,8 @@ SOURCES += $$PWD/qinstaller.cpp \ registerdefaultdebuggeroperation.cpp \ updatecreatorsettingsfrom21to22operation.cpp \ qprocesswrapper.cpp \ - templates.cpp + templates.cpp \ + qsettingswrapper.cpp macx { HEADERS += macrelocateqt.h \ diff --git a/installerbuilder/libinstaller/qsettingswrapper.cpp b/installerbuilder/libinstaller/qsettingswrapper.cpp new file mode 100644 index 000000000..cb0763526 --- /dev/null +++ b/installerbuilder/libinstaller/qsettingswrapper.cpp @@ -0,0 +1,406 @@ +/************************************************************************** +** +** This file is part of Qt SDK** +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).* +** +** Contact: Nokia Corporation qt-info@nokia.com** +** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception version +** 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you are unsure which license is appropriate for your use, please contact +** (qt-info@nokia.com). +** +**************************************************************************/ +#include "qsettingswrapper.h" + +#include "fsengineclient.h" +#include "templates.cpp" + +#include <QtCore/QSettings> +#include <QtCore/QThread> + +#include <QtNetwork/QLocalSocket> +#include <QtNetwork/QTcpSocket> + + +// -- QSettingsWrapper::Private + +class QSettingsWrapper::Private +{ +public: + Private(const QString &organization, const QString &application) + : native(true), + settings(organization, application), + socket(0) + { + } + + Private(QSettings::Scope scope, const QString &organization, const QString &application) + : native(true), + settings(scope, organization, application), + socket(0) + { + } + + Private(QSettings::Format format, QSettings::Scope scope, const QString &organization, + const QString &application) + : native(format == QSettings::NativeFormat), + settings(format, scope, organization, application), + socket(0) + { + } + + Private(const QString &fileName, QSettings::Format format) + : native(format == QSettings::NativeFormat), + 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>(QLocalSocket::ConnectedState)) + return true; + + if (socket != 0) + delete socket; +#ifdef FSENGINE_TCP + socket = new QTcpSocket; +#else + socket = new QLocalSocket; +#endif + 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; + } + + const bool native; + const QString fileName; + QSettings settings; +#ifdef FSENGINE_TCP + mutable QTcpSocket* socket; +#else + mutable QLocalSocket* socket; +#endif + mutable QDataStream stream; +}; + + +// -- QSettingsWrapper + +QSettingsWrapper::QSettingsWrapper(const QString &organization, const QString &application, QObject *parent) + : QObject(parent) + , d(new Private(organization, application)) +{ + qDebug() << Q_FUNC_INFO; +} + +QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Scope scope, const QString &organization, + const QString &application, QObject *parent) + : QObject(parent) + , d(new Private(static_cast<QSettings::Scope> (scope), organization, application)) +{ + qDebug() << Q_FUNC_INFO; +} + +QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Format format, QSettingsWrapper::Scope scope, + const QString &organization, const QString &application, QObject *parent) + : QObject(parent) + , d(new Private(static_cast<QSettings::Format> (format), static_cast<QSettings::Scope> (scope), + organization, application)) +{ + qDebug() << Q_FUNC_INFO; +} + +QSettingsWrapper::QSettingsWrapper(const QString &fileName, QSettingsWrapper::Format format, QObject *parent) + : QObject(parent) + , d(new Private(fileName, static_cast<QSettings::Format> (format))) +{ + qDebug() << Q_FUNC_INFO; +} + +QSettingsWrapper::QSettingsWrapper(QObject *parent) + : QObject(parent) + , d(new Private) +{ + qDebug() << Q_FUNC_INFO; +} + +QSettingsWrapper::~QSettingsWrapper() +{ + qDebug() << Q_FUNC_INFO; + 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 +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::allKeys")); + return static_cast<QStringList>(d->settings.allKeys()); +} + +QString QSettingsWrapper::applicationName() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::applicationName")); + return static_cast<QString>(d->settings.applicationName()); +} + +void QSettingsWrapper::beginGroup(const QString& param1) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::beginGroup"), param1); + else + d->settings.beginGroup(param1); +} + +int QSettingsWrapper::beginReadArray(const QString& param1) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<int>(d->stream, QLatin1String("QSettings::beginReadArray"), param1); + return d->settings.beginReadArray(param1); +} + +void QSettingsWrapper::beginWriteArray(const QString& param1, int param2) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::beginWriteArray"), param1, param2); + else + d->settings.beginWriteArray(param1, param2); +} + +QStringList QSettingsWrapper::childGroups() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::childGroups")); + return static_cast<QStringList>(d->settings.childGroups()); +} + +QStringList QSettingsWrapper::childKeys() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QStringList>(d->stream, QLatin1String("QSettings::childKeys")); + return static_cast<QStringList>(d->settings.childKeys()); +} + +void QSettingsWrapper::clear() +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::clear")); + else d->settings.clear(); +} + +bool QSettingsWrapper::contains(const QString& param1) const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::contains"), param1); + return d->settings.contains(param1); +} + +void QSettingsWrapper::endArray() +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::endArray")); + else + d->settings.endArray(); +} + +void QSettingsWrapper::endGroup() +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::endGroup")); + else + d->settings.endGroup(); +} + +bool QSettingsWrapper::fallbacksEnabled() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::fallbacksEnabled")); + return static_cast<bool>(d->settings.fallbacksEnabled()); +} + +QString QSettingsWrapper::fileName() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::fileName")); + return static_cast<QString>(d->settings.fileName()); +} + +QSettingsWrapper::Format QSettingsWrapper::format() const +{ + qDebug() << Q_FUNC_INFO; + return static_cast<QSettingsWrapper::Format>(d->settings.format()); +} + +QString QSettingsWrapper::group() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::group")); + return static_cast<QString>(d->settings.group()); +} + +QTextCodec* QSettingsWrapper::iniCodec() const +{ + qDebug() << Q_FUNC_INFO; + return d->settings.iniCodec(); +} + +bool QSettingsWrapper::isWritable() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<bool>(d->stream, QLatin1String("QSettings::isWritable")); + return static_cast<bool>(d->settings.isWritable()); +} + +QString QSettingsWrapper::organizationName() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QString>(d->stream, QLatin1String("QSettings::organizationName")); + return static_cast<QString>(d->settings.organizationName()); +} + +void QSettingsWrapper::remove(const QString& param1) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::remove"), param1); + else d->settings.remove(param1); +} + +QSettingsWrapper::Scope QSettingsWrapper::scope() const +{ + qDebug() << Q_FUNC_INFO; + return static_cast<QSettingsWrapper::Scope>(d->settings.scope()); +} + +void QSettingsWrapper::setArrayIndex(int param1) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setArrayIndex"), param1); + else d->settings.setArrayIndex(param1); +} + +void QSettingsWrapper::setFallbacksEnabled(bool param1) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setFallbacksEnabled"), param1); + else d->settings.setFallbacksEnabled(param1); +} + +void QSettingsWrapper::setIniCodec(QTextCodec* codec) +{ + qDebug() << Q_FUNC_INFO; + d->settings.setIniCodec(codec); +} + +void QSettingsWrapper::setIniCodec(const char* codecName) +{ + qDebug() << Q_FUNC_INFO; + d->settings.setIniCodec(codecName); +} + +void QSettingsWrapper::setValue(const QString& param1, const QVariant& param2) +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod(d->stream, QLatin1String("QSettings::setValue"), param1, param2); + else + d->settings.setValue(param1, param2); +} + +QSettingsWrapper::Status QSettingsWrapper::status() const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QSettingsWrapper::Status>(d->stream, QLatin1String("QSettings::status")); + return static_cast<QSettingsWrapper::Status>(d->settings.status()); +}; + +void QSettingsWrapper::sync() +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + callRemoteVoidMethod<void>(d->stream, QLatin1String("QSettings::sync")); + else + d->settings.sync(); +} + +QVariant QSettingsWrapper::value(const QString& param1, const QVariant& param2) const +{ + qDebug() << Q_FUNC_INFO; + if (d->createSocket()) + return callRemoteMethod<QVariant>(d->stream, QLatin1String("QSettings::value"), param1, param2); + return d->settings.value(param1, param2); +} diff --git a/installerbuilder/libinstaller/qsettingswrapper.h b/installerbuilder/libinstaller/qsettingswrapper.h new file mode 100644 index 000000000..c807e62c8 --- /dev/null +++ b/installerbuilder/libinstaller/qsettingswrapper.h @@ -0,0 +1,100 @@ +/************************************************************************** +** +** This file is part of Qt SDK** +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).* +** +** Contact: Nokia Corporation qt-info@nokia.com** +** +** GNU Lesser General Public License Usage +** +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception version +** 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you are unsure which license is appropriate for your use, please contact +** (qt-info@nokia.com). +** +**************************************************************************/ +#ifndef QSETTINGSWRAPPER_H +#define QSETTINGSWRAPPER_H + +#include <installer_global.h> + +#include<QtCore/QObject> +#include<QtCore/QVariant> + +class INSTALLER_EXPORT QSettingsWrapper : public QObject +{ + Q_OBJECT + +public: + enum Format { + NativeFormat, + IniFormat, + InvalidFormat + }; + + enum Status { + NoError, + AccessError, + FormatError + }; + + enum Scope { + UserScope, + SystemScope + }; + + explicit QSettingsWrapper(QObject *parent = 0); + explicit QSettingsWrapper(const QString &organization, const QString &application = QString(), + QObject *parent = 0); + QSettingsWrapper(const QString &fileName, QSettingsWrapper::Format format, QObject *parent = 0); + QSettingsWrapper(QSettingsWrapper::Scope scope, const QString &organization, + const QString &application = QString(), QObject *parent = 0); + QSettingsWrapper(QSettingsWrapper::Format format, QSettingsWrapper::Scope scope, + const QString &organization, const QString &application = QString(), QObject *parent = 0); + ~QSettingsWrapper(); + + QStringList allKeys() const; + QString applicationName() const; + void beginGroup(const QString &prefix); + int beginReadArray(const QString &prefix); + void beginWriteArray(const QString &prefix, int size = -1); + QStringList childGroups() const; + QStringList childKeys() const; + void clear(); + bool contains(const QString &key) const; + void endArray(); + void endGroup(); + bool fallbacksEnabled() const; + QString fileName() const; + QSettingsWrapper::Format format() const; + QString group() const; + QTextCodec* iniCodec() const; + bool isWritable() const; + QString organizationName() const; + void remove(const QString &key); + QSettingsWrapper::Scope scope() const; + void setArrayIndex(int i); + void setFallbacksEnabled(bool b); + void setIniCodec(QTextCodec *codec); + void setIniCodec(const char *codecName); + void setValue(const QString &key, const QVariant &value); + QSettingsWrapper::Status status() const; + void sync(); + QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; + +private: + class Private; + Private *d; +}; + +#endif // QSETTINGSWRAPPER_H |