aboutsummaryrefslogtreecommitdiffstats
path: root/src/controls
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-11-27 17:32:24 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-12-14 14:39:44 +0000
commitb8f21fde5ad9e380bedd74a226dcc0dbb5ec2214 (patch)
tree820f9762861fc175afadb6829f3139ed4f46f8f2 /src/controls
parentdd5a16610b2ecae02aa53ea1417a5561182ca7a8 (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>
Diffstat (limited to 'src/controls')
-rw-r--r--src/controls/qquickstyle.cpp18
-rw-r--r--src/controls/qquickstyle_p.h5
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();