diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-11-27 17:32:24 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-14 14:39:44 +0000 |
commit | b8f21fde5ad9e380bedd74a226dcc0dbb5ec2214 (patch) | |
tree | 820f9762861fc175afadb6829f3139ed4f46f8f2 | |
parent | dd5a16610b2ecae02aa53ea1417a5561182ca7a8 (diff) |
Add QQuickStyle::settings()
Loads ":/qtlabscontrols.conf" from resources. The next step is to make it
possible to specify the preferred theme and accent in qtlabscontrols.conf.
Different values can be specified for each style, which will take effect
when running the app using the respective style. These are the preferred
or default values, which can be overridden in code.
[Controls]
Style=material
[Universal]
Theme=Dark
Accent=Red
[Material]
Theme=Light
Accent=Brown
The reason for using our own qtlabscontrols.conf file instead of re-using
qt.conf is that qt.conf is strictly purposed for specifying the standard
Qt paths for deployment setups. If qt.conf missing paths for QLibraryInfo,
Qt fails to load the platform plugin:
This application failed to start because it could not find
or load the Qt platform plugin "windows|cocoa|xcb".
Change-Id: I8da7f0859f004db8adf585b830bce4aa8e7713a9
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | src/controls/qquickstyle.cpp | 18 | ||||
-rw-r--r-- | src/controls/qquickstyle_p.h | 5 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/controls/qquickstyle.cpp b/src/controls/qquickstyle.cpp index b83f8c2a..4ab7b7cc 100644 --- a/src/controls/qquickstyle.cpp +++ b/src/controls/qquickstyle.cpp @@ -36,10 +36,14 @@ #include "qquickstyle_p.h" +#include <QtCore/qfile.h> +#include <QtCore/qsettings.h> #include <QtQuick/private/qquickitem_p.h> QT_BEGIN_NAMESPACE +static const char *SettingsFilePath = ":/qtlabscontrols.conf"; + static QQuickStyle *attachedStyle(const QMetaObject *type, QObject *object, bool create = false) { if (!object) @@ -148,6 +152,20 @@ QQuickStyle::~QQuickStyle() setParentStyle(Q_NULLPTR); } +QSharedPointer<QSettings> QQuickStyle::settings(const QString &group) +{ +#ifndef QT_NO_SETTINGS + const QString filePath = QLatin1String(SettingsFilePath); + if (QFile::exists(filePath)) { + QSettings *settings = new QSettings(filePath, QSettings::IniFormat); + if (!group.isEmpty()) + settings->beginGroup(group); + return QSharedPointer<QSettings>(settings); + } +#endif // QT_NO_SETTINGS + return QSharedPointer<QSettings>(); +} + QList<QQuickStyle *> QQuickStyle::childStyles() const { return m_childStyles; diff --git a/src/controls/qquickstyle_p.h b/src/controls/qquickstyle_p.h index 3d4431cd..02ee667a 100644 --- a/src/controls/qquickstyle_p.h +++ b/src/controls/qquickstyle_p.h @@ -52,10 +52,13 @@ #include <QtCore/qlist.h> #include <QtCore/qobject.h> #include <QtCore/qpointer.h> +#include <QtCore/qsharedpointer.h> #include <QtQuick/private/qquickitemchangelistener_p.h> QT_BEGIN_NAMESPACE +class QSettings; + class QQuickStyle : public QObject, public QQuickItemChangeListener { Q_OBJECT @@ -64,6 +67,8 @@ public: explicit QQuickStyle(QObject *parent = Q_NULLPTR); ~QQuickStyle(); + static QSharedPointer<QSettings> settings(const QString &group = QString()); + protected: void init(); |