From b8f21fde5ad9e380bedd74a226dcc0dbb5ec2214 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 27 Nov 2015 17:32:24 +0100 Subject: 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 --- src/controls/qquickstyle.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/controls/qquickstyle.cpp') 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 +#include #include 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 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(settings); + } +#endif // QT_NO_SETTINGS + return QSharedPointer(); +} + QList QQuickStyle::childStyles() const { return m_childStyles; -- cgit v1.2.3