diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-11-29 11:29:30 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-14 14:39:49 +0000 |
commit | 9965d9d6c16f3f2e1830efeaf72cdd5f0db711c2 (patch) | |
tree | b1dd5d49741ef84ba8689d925dc2139a470263dd /src/imports/controls/universal/qquickuniversalstyle.cpp | |
parent | be1c2e01ef1efa0e85eeab5fd392ef85c01493d2 (diff) |
Universal style: read theme & accent from qtlabscontrols.conf
Change-Id: Ie41bf8a3b375835a07229eff49e6d10e3ff79992
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/imports/controls/universal/qquickuniversalstyle.cpp')
-rw-r--r-- | src/imports/controls/universal/qquickuniversalstyle.cpp | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/src/imports/controls/universal/qquickuniversalstyle.cpp b/src/imports/controls/universal/qquickuniversalstyle.cpp index f2bfd70d..7bde3b77 100644 --- a/src/imports/controls/universal/qquickuniversalstyle.cpp +++ b/src/imports/controls/universal/qquickuniversalstyle.cpp @@ -37,12 +37,13 @@ #include "qquickuniversalstyle_p.h" #include <QtCore/qdebug.h> +#include <QtCore/qsettings.h> #include <QtLabsControls/private/qquickstyle_p.h> QT_BEGIN_NAMESPACE -static const QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light; -static const QQuickUniversalStyle::Accent DefaultAccent = QQuickUniversalStyle::Cobalt; +static QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light; +static QQuickUniversalStyle::Accent DefaultAccent = QQuickUniversalStyle::Cobalt; static QColor qquickuniversal_light_color(QQuickUniversalStyle::SystemColor role) { @@ -136,7 +137,7 @@ static QColor qquickuniversal_accent_color(QQuickUniversalStyle::Accent accent) QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QQuickStyle(parent), m_hasTheme(false), m_hasAccent(false), m_theme(DefaultTheme), m_accent(DefaultAccent) { - init(); // TODO: lazy init? + init(); } QQuickUniversalStyle *QQuickUniversalStyle::qmlAttachedProperties(QObject *object) @@ -374,4 +375,33 @@ void QQuickUniversalStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle } } +template <typename Enum> +static Enum readEnumValue(QSettings *settings, const QString &name, Enum fallback) +{ + Enum result = fallback; + if (settings->contains(name)) { + QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); + bool ok = false; + int value = enumeration.keyToValue(settings->value(name).toByteArray(), &ok); + if (ok) + result = static_cast<Enum>(value); + } + return result; +} + +void QQuickUniversalStyle::init() +{ + static bool defaultsInitialized = false; + if (!defaultsInitialized) { + QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Universal")); + if (!settings.isNull()) { + DefaultTheme = m_theme = readEnumValue<Theme>(settings.data(), QStringLiteral("Theme"), m_theme); + DefaultAccent = m_accent = readEnumValue<Accent>(settings.data(), QStringLiteral("Accent"), m_accent); + } + defaultsInitialized = true; + } + + QQuickStyle::init(); // TODO: lazy init? +} + QT_END_NAMESPACE |