aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-12-22 22:40:54 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-12-25 22:59:42 +0000
commit929df0fa5039dce6430ca695d95c5094844aa647 (patch)
tree7cf20715785e466172016df000b1ebe14c707be8 /src/imports
parent8e42f9aff5822b78944363d015764d2cb3736d2c (diff)
Universal: add support for user-defined accent colors
Change-Id: I23863519269deddb3a6007657fc93e83f33be842 Task-number: QTBUG-50103 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/controls/doc/src/qtlabscontrols-universal.qdoc9
-rw-r--r--src/imports/controls/universal/BusyIndicator.qml2
-rw-r--r--src/imports/controls/universal/Button.qml2
-rw-r--r--src/imports/controls/universal/CheckBox.qml4
-rw-r--r--src/imports/controls/universal/ComboBox.qml2
-rw-r--r--src/imports/controls/universal/ItemDelegate.qml2
-rw-r--r--src/imports/controls/universal/Label.qml2
-rw-r--r--src/imports/controls/universal/MenuItem.qml2
-rw-r--r--src/imports/controls/universal/ProgressBar.qml4
-rw-r--r--src/imports/controls/universal/RadioButton.qml2
-rw-r--r--src/imports/controls/universal/RangeSlider.qml6
-rw-r--r--src/imports/controls/universal/Slider.qml4
-rw-r--r--src/imports/controls/universal/SpinBox.qml8
-rw-r--r--src/imports/controls/universal/Switch.qml4
-rw-r--r--src/imports/controls/universal/TextArea.qml4
-rw-r--r--src/imports/controls/universal/TextField.qml4
-rw-r--r--src/imports/controls/universal/ToolButton.qml2
-rw-r--r--src/imports/controls/universal/qquickuniversalstyle.cpp118
-rw-r--r--src/imports/controls/universal/qquickuniversalstyle_p.h12
19 files changed, 108 insertions, 85 deletions
diff --git a/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc b/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
index bc6538bf..3c616d84 100644
--- a/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
+++ b/src/imports/controls/doc/src/qtlabscontrols-universal.qdoc
@@ -37,7 +37,7 @@
\section1 Attached Properties
\list
- \li \l {accent-attached-prop}{\b accent} : enumeration
+ \li \l {accent-attached-prop}{\b accent} : color
\li \l {theme-attached-prop}{\b theme} : enumeration
\endlist
@@ -126,12 +126,15 @@
\section1 Attached Property Documentation
- \styleproperty {Universal.accent} {enumeration} {accent-attached-prop}
+ \styleproperty {Universal.accent} {color} {accent-attached-prop}
\target accent-attached-prop
This attached property holds the accent color of the theme. The property
can be attached to any window or item. The value is propagated to children.
- Available accents:
+ Even though the accent can be any \l {colorbasictypedocs}{color}, it is
+ recommended to use one of the pre-defined accents that have been designed
+ to work well with the rest of the Universal style palette:
+
\value Universal.Lime Lime (#A4C400)
\value Universal.Green Green (#60A917)
\value Universal.Emerald Emerald (#008A00)
diff --git a/src/imports/controls/universal/BusyIndicator.qml b/src/imports/controls/universal/BusyIndicator.qml
index 3e0e1f89..4a62b800 100644
--- a/src/imports/controls/universal/BusyIndicator.qml
+++ b/src/imports/controls/universal/BusyIndicator.qml
@@ -55,7 +55,7 @@ T.BusyIndicator {
readonly property real size: Math.min(control.availableWidth, control.availableHeight)
count: size < 60 ? 5 : 6 // "Small" vs. "Large"
- color: control.Universal.accentColor
+ color: control.Universal.accent
ProgressRingAnimator {
target: ring
diff --git a/src/imports/controls/universal/Button.qml b/src/imports/controls/universal/Button.qml
index 6ed57700..c18f0a25 100644
--- a/src/imports/controls/universal/Button.qml
+++ b/src/imports/controls/universal/Button.qml
@@ -78,7 +78,7 @@ T.Button {
implicitHeight: 32
color: control.pressed ? control.Universal.baseMediumLowColor :
- control.enabled && (control.highlighted || control.checked) ? control.Universal.accentColor :
+ control.enabled && (control.highlighted || control.checked) ? control.Universal.accent :
control.Universal.baseLowColor
}
//! [background]
diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml
index 6bb6bc36..07321a9c 100644
--- a/src/imports/controls/universal/CheckBox.qml
+++ b/src/imports/controls/universal/CheckBox.qml
@@ -65,10 +65,10 @@ T.CheckBox {
color: !control.enabled ? "transparent" :
control.pressed && control.checkState !== Qt.PartiallyChecked ? control.Universal.baseMediumColor :
- control.checkState === Qt.Checked ? control.Universal.accentColor : "transparent"
+ control.checkState === Qt.Checked ? control.Universal.accent : "transparent"
border.color: !control.enabled ? control.Universal.baseLowColor :
control.pressed ? control.Universal.baseMediumColor :
- control.checked ? control.Universal.accentColor : control.Universal.baseMediumHighColor
+ control.checked ? control.Universal.accent : control.Universal.baseMediumHighColor
border.width: 2 // CheckBoxBorderThemeThickness
Image {
diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml
index 38b9a8fa..4e73321e 100644
--- a/src/imports/controls/universal/ComboBox.qml
+++ b/src/imports/controls/universal/ComboBox.qml
@@ -97,7 +97,7 @@ T.ComboBox {
height: parent.height - 4
visible: control.activeFocus && (control.focusReason === Qt.TabFocusReason || control.focusReason === Qt.BacktabFocusReason)
- color: control.Universal.accentColor
+ color: control.Universal.accent
opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6
}
diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml
index a5330059..2def5f79 100644
--- a/src/imports/controls/universal/ItemDelegate.qml
+++ b/src/imports/controls/universal/ItemDelegate.qml
@@ -93,7 +93,7 @@ T.ItemDelegate {
width: parent.width
height: parent.height
visible: control.activeFocus || control.highlighted
- color: control.Universal.accentColor
+ color: control.Universal.accent
opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6
}
diff --git a/src/imports/controls/universal/Label.qml b/src/imports/controls/universal/Label.qml
index ee51c8cd..0484959e 100644
--- a/src/imports/controls/universal/Label.qml
+++ b/src/imports/controls/universal/Label.qml
@@ -42,6 +42,6 @@ T.Label {
id: control
color: !control.enabled ? Universal.baseLowColor : Universal.baseHighColor
- linkColor: Universal.accentColor
+ linkColor: Universal.accent
renderType: Text.NativeRendering
}
diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml
index 2bf7ccc6..fa8b3529 100644
--- a/src/imports/controls/universal/MenuItem.qml
+++ b/src/imports/controls/universal/MenuItem.qml
@@ -94,7 +94,7 @@ T.MenuItem {
height: parent.height - 2
visible: control.activeFocus
- color: control.Universal.accentColor
+ color: control.Universal.accent
opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6
}
}
diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml
index 14fd9bd7..df837fef 100644
--- a/src/imports/controls/universal/ProgressBar.qml
+++ b/src/imports/controls/universal/ProgressBar.qml
@@ -55,7 +55,7 @@ T.ProgressBar {
height: control.availableHeight
scale: control.mirrored ? -1 : 1
- color: control.Universal.accentColor
+ color: control.Universal.accent
ProgressStrip {
id: strip
@@ -65,7 +65,7 @@ T.ProgressBar {
clip: control.indeterminate
visible: control.indeterminate
- color: control.Universal.accentColor
+ color: control.Universal.accent
ProgressStripAnimator {
target: strip
diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml
index a5d7d09e..04cd3dcc 100644
--- a/src/imports/controls/universal/RadioButton.qml
+++ b/src/imports/controls/universal/RadioButton.qml
@@ -80,7 +80,7 @@ T.RadioButton {
color: "transparent"
border.width: 2 // RadioButtonBorderThemeThickness
border.color: !control.enabled ? control.Universal.baseLowColor :
- control.pressed ? control.Universal.baseMediumColor : control.Universal.accentColor
+ control.pressed ? control.Universal.baseMediumColor : control.Universal.accent
}
Rectangle {
diff --git a/src/imports/controls/universal/RangeSlider.qml b/src/imports/controls/universal/RangeSlider.qml
index 285a04a7..f01c06ed 100644
--- a/src/imports/controls/universal/RangeSlider.qml
+++ b/src/imports/controls/universal/RangeSlider.qml
@@ -63,7 +63,7 @@ T.RangeSlider {
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height))
radius: 4
- color: control.first.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
+ color: control.first.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
//! [firstHandle]
@@ -78,7 +78,7 @@ T.RangeSlider {
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height))
radius: 4
- color: control.second.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
+ color: control.second.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
//! [secondHandle]
@@ -111,7 +111,7 @@ T.RangeSlider {
width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderTrackThemeHeight
height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderTrackThemeHeight
- color: control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
+ color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
}
//! [track]
diff --git a/src/imports/controls/universal/Slider.qml b/src/imports/controls/universal/Slider.qml
index ec1e0ed1..66357c6e 100644
--- a/src/imports/controls/universal/Slider.qml
+++ b/src/imports/controls/universal/Slider.qml
@@ -63,7 +63,7 @@ T.Slider {
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))
radius: 4
- color: control.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
+ color: control.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
//! [handle]
@@ -96,7 +96,7 @@ T.Slider {
width: parent.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight
height: !parent.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight
- color: control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
+ color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor
}
}
//! [track]
diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml
index e68015b4..a081cc23 100644
--- a/src/imports/controls/universal/SpinBox.qml
+++ b/src/imports/controls/universal/SpinBox.qml
@@ -73,7 +73,7 @@ T.SpinBox {
font: control.font
color: !enabled ? control.Universal.chromeDisabledLowColor :
activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor
- selectionColor: control.Universal.accentColor
+ selectionColor: control.Universal.accent
selectedTextColor: control.Universal.chromeWhiteColor
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: TextInput.AlignVCenter
@@ -96,7 +96,7 @@ T.SpinBox {
width: parent.width - 4
height: parent.height - 8
color: !control.up.pressed ? "transparent" :
- control.activeFocus ? control.Universal.accentColor
+ control.activeFocus ? control.Universal.accent
: control.Universal.chromeDisabledLowColor
}
@@ -121,7 +121,7 @@ T.SpinBox {
width: parent.width - 4
height: parent.height - 8
color: !control.down.pressed ? "transparent" :
- control.activeFocus ? control.Universal.accentColor
+ control.activeFocus ? control.Universal.accent
: control.Universal.chromeDisabledLowColor
}
@@ -141,7 +141,7 @@ T.SpinBox {
border.width: 2 // TextControlBorderThemeThickness
border.color: !control.enabled ? control.Universal.baseLowColor :
- control.activeFocus ? control.Universal.accentColor : control.Universal.chromeDisabledLowColor
+ control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
}
//! [background]
diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml
index ef078a1e..ca33e121 100644
--- a/src/imports/controls/universal/Switch.qml
+++ b/src/imports/controls/universal/Switch.qml
@@ -65,9 +65,9 @@ T.Switch {
radius: 10
color: !control.enabled ? "transparent" :
control.pressed ? control.Universal.baseMediumColor :
- control.checked ? control.Universal.accentColor : "transparent"
+ control.checked ? control.Universal.accent : "transparent"
border.color: !control.enabled ? control.Universal.baseLowColor :
- control.checked && !control.pressed ? control.Universal.accentColor : control.Universal.baseMediumColor
+ control.checked && !control.pressed ? control.Universal.accent : control.Universal.baseMediumColor
border.width: 2
Rectangle {
diff --git a/src/imports/controls/universal/TextArea.qml b/src/imports/controls/universal/TextArea.qml
index ec319b86..72b69cb9 100644
--- a/src/imports/controls/universal/TextArea.qml
+++ b/src/imports/controls/universal/TextArea.qml
@@ -58,7 +58,7 @@ T.TextArea {
color: !enabled ? Universal.chromeDisabledLowColor :
activeFocus ? Universal.chromeBlackHighColor : Universal.baseHighColor
- selectionColor: Universal.accentColor
+ selectionColor: Universal.accent
selectedTextColor: Universal.chromeWhiteColor
renderType: Text.NativeRendering
@@ -87,7 +87,7 @@ T.TextArea {
border.width: 2 // TextControlBorderThemeThickness
border.color: !control.enabled ? control.Universal.baseLowColor :
- control.activeFocus ? control.Universal.accentColor : control.Universal.chromeDisabledLowColor
+ control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
}
//! [background]
diff --git a/src/imports/controls/universal/TextField.qml b/src/imports/controls/universal/TextField.qml
index b4e217d2..1f066220 100644
--- a/src/imports/controls/universal/TextField.qml
+++ b/src/imports/controls/universal/TextField.qml
@@ -58,7 +58,7 @@ T.TextField {
color: !enabled ? Universal.chromeDisabledLowColor :
activeFocus ? Universal.chromeBlackHighColor : Universal.baseHighColor
- selectionColor: Universal.accentColor
+ selectionColor: Universal.accent
selectedTextColor: Universal.chromeWhiteColor
verticalAlignment: TextInput.AlignVCenter
renderType: Text.NativeRendering
@@ -88,7 +88,7 @@ T.TextField {
border.width: 2 // TextControlBorderThemeThickness
border.color: !control.enabled ? control.Universal.baseLowColor :
- control.activeFocus ? control.Universal.accentColor : control.Universal.chromeDisabledLowColor
+ control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
}
//! [background]
diff --git a/src/imports/controls/universal/ToolButton.qml b/src/imports/controls/universal/ToolButton.qml
index 8310be03..451e07c4 100644
--- a/src/imports/controls/universal/ToolButton.qml
+++ b/src/imports/controls/universal/ToolButton.qml
@@ -72,7 +72,7 @@ T.ToolButton {
implicitHeight: 48 // AppBarThemeCompactHeight
color: control.pressed ? control.Universal.listMediumColor :
- control.enabled && (control.highlighted || control.checked) ? control.Universal.accentColor : "transparent"
+ control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : "transparent"
}
//! [background]
}
diff --git a/src/imports/controls/universal/qquickuniversalstyle.cpp b/src/imports/controls/universal/qquickuniversalstyle.cpp
index 7bde3b77..6634763c 100644
--- a/src/imports/controls/universal/qquickuniversalstyle.cpp
+++ b/src/imports/controls/universal/qquickuniversalstyle.cpp
@@ -42,9 +42,6 @@
QT_BEGIN_NAMESPACE
-static QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light;
-static QQuickUniversalStyle::Accent DefaultAccent = QQuickUniversalStyle::Cobalt;
-
static QColor qquickuniversal_light_color(QQuickUniversalStyle::SystemColor role)
{
static const QRgb colors[] = {
@@ -107,33 +104,36 @@ static QColor qquickuniversal_dark_color(QQuickUniversalStyle::SystemColor role)
return QColor::fromRgba(colors[role]);
}
-static QColor qquickuniversal_accent_color(QQuickUniversalStyle::Accent accent)
+static QRgb qquickuniversal_accent_color(QQuickUniversalStyle::Accent accent)
{
static const QRgb colors[] = {
- 0xA4C400, // Lime
- 0x60A917, // Green
- 0x008A00, // Emerald
- 0x00ABA9, // Teal
- 0x1BA1E2, // Cyan
- 0x3E65FF, // Cobalt
- 0x6A00FF, // Indigo
- 0xAA00FF, // Violet
- 0xF472D0, // Pink
- 0xD80073, // Magenta
- 0xA20025, // Crimson
- 0xE51400, // Red
- 0xFA6800, // Orange
- 0xF0A30A, // Amber
- 0xE3C800, // Yellow
- 0x825A2C, // Brown
- 0x6D8764, // Olive
- 0x647687, // Steel
- 0x76608A, // Mauve
- 0x87794E // Taupe
+ 0xFFA4C400, // Lime
+ 0xFF60A917, // Green
+ 0xFF008A00, // Emerald
+ 0xFF00ABA9, // Teal
+ 0xFF1BA1E2, // Cyan
+ 0xFF3E65FF, // Cobalt
+ 0xFF6A00FF, // Indigo
+ 0xFFAA00FF, // Violet
+ 0xFFF472D0, // Pink
+ 0xFFD80073, // Magenta
+ 0xFFA20025, // Crimson
+ 0xFFE51400, // Red
+ 0xFFFA6800, // Orange
+ 0xFFF0A30A, // Amber
+ 0xFFE3C800, // Yellow
+ 0xFF825A2C, // Brown
+ 0xFF6D8764, // Olive
+ 0xFF647687, // Steel
+ 0xFF76608A, // Mauve
+ 0xFF87794E // Taupe
};
return colors[accent];
}
+static QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light;
+static QRgb DefaultAccent = qquickuniversal_accent_color(QQuickUniversalStyle::Cobalt);
+
QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QQuickStyle(parent),
m_hasTheme(false), m_hasAccent(false), m_theme(DefaultTheme), m_accent(DefaultAccent)
{
@@ -189,17 +189,35 @@ void QQuickUniversalStyle::resetTheme()
}
}
-QQuickUniversalStyle::Accent QQuickUniversalStyle::accent() const
+QVariant QQuickUniversalStyle::accent() const
{
- return m_accent;
+ return QColor::fromRgba(m_accent);
}
-void QQuickUniversalStyle::setAccent(Accent accent)
+void QQuickUniversalStyle::setAccent(const QVariant &var)
{
- if (accent < Lime || accent > Taupe) {
- qWarning() << "QQuickUniversalStyle: unknown accent" << accent;
- return;
+ QRgb accent = 0;
+ if (var.type() == QVariant::Int) {
+ int val = var.toInt();
+ if (val < Lime || val > Taupe) {
+ qWarning() << "QQuickUniversalStyle: unknown accent" << val;
+ return;
+ }
+ accent = qquickuniversal_accent_color(static_cast<Accent>(val));
+ } else {
+ int val = QMetaEnum::fromType<Accent>().keyToValue(var.toByteArray());
+ if (val != -1) {
+ accent = qquickuniversal_accent_color(static_cast<Accent>(val));
+ } else {
+ QColor color(var.toString());
+ if (!color.isValid()) {
+ qWarning() << "QQuickUniversalStyle: unknown accent" << var.toString();
+ return;
+ }
+ accent = color.rgba();
+ }
}
+
m_hasAccent = true;
if (m_accent != accent) {
m_accent = accent;
@@ -208,7 +226,7 @@ void QQuickUniversalStyle::setAccent(Accent accent)
}
}
-void QQuickUniversalStyle::inheritAccent(Accent accent)
+void QQuickUniversalStyle::inheritAccent(QRgb accent)
{
if (!m_hasAccent && m_accent != accent) {
m_accent = accent;
@@ -231,15 +249,10 @@ void QQuickUniversalStyle::resetAccent()
if (m_hasAccent) {
m_hasAccent = false;
QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(parentStyle());
- inheritAccent(universal ? universal->accent() : DefaultAccent);
+ inheritAccent(universal ? universal->m_accent : DefaultAccent);
}
}
-QColor QQuickUniversalStyle::accentColor() const
-{
- return qquickuniversal_accent_color(m_accent);
-}
-
QColor QQuickUniversalStyle::altHighColor() const
{
return getColor(AltHigh);
@@ -371,22 +384,20 @@ void QQuickUniversalStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle
QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(newParent);
if (universal) {
inheritTheme(universal->theme());
- inheritAccent(universal->accent());
+ inheritAccent(universal->m_accent);
}
}
template <typename Enum>
-static Enum readEnumValue(QSettings *settings, const QString &name, Enum fallback)
+static Enum readEnumValue(QSettings *settings, const QString &name, bool *ok)
{
- Enum result = fallback;
- if (settings->contains(name)) {
+ int value = -1;
+ *ok = settings->contains(name);
+ if (*ok) {
QMetaEnum enumeration = QMetaEnum::fromType<Enum>();
- bool ok = false;
- int value = enumeration.keyToValue(settings->value(name).toByteArray(), &ok);
- if (ok)
- result = static_cast<Enum>(value);
+ value = enumeration.keyToValue(settings->value(name).toByteArray(), ok);
}
- return result;
+ return static_cast<Enum>(value);
}
void QQuickUniversalStyle::init()
@@ -395,8 +406,19 @@ void QQuickUniversalStyle::init()
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);
+ bool ok = false;
+ Theme theme = readEnumValue<Theme>(settings.data(), QStringLiteral("Theme"), &ok);
+ if (ok)
+ DefaultTheme = m_theme = theme;
+
+ Accent accent = readEnumValue<Accent>(settings.data(), QStringLiteral("Accent"), &ok);
+ if (ok) {
+ DefaultAccent = m_accent = qquickuniversal_accent_color(accent);
+ } else {
+ QColor color(settings->value(QStringLiteral("Accent")).toString());
+ if (color.isValid())
+ DefaultAccent = m_accent = color.rgba();
+ }
}
defaultsInitialized = true;
}
diff --git a/src/imports/controls/universal/qquickuniversalstyle_p.h b/src/imports/controls/universal/qquickuniversalstyle_p.h
index d7a35830..00a04c65 100644
--- a/src/imports/controls/universal/qquickuniversalstyle_p.h
+++ b/src/imports/controls/universal/qquickuniversalstyle_p.h
@@ -59,9 +59,8 @@ class QQuickUniversalStyle : public QQuickStyle
{
Q_OBJECT
Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
- Q_PROPERTY(Accent accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL)
+ Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL)
- Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL)
Q_PROPERTY(QColor altHighColor READ altHighColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor altLowColor READ altLowColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor altMediumColor READ altMediumColor NOTIFY paletteChanged FINAL)
@@ -125,13 +124,12 @@ public:
};
Q_ENUM(Accent)
- Accent accent() const;
- void setAccent(Accent accent);
- void inheritAccent(Accent accent);
+ QVariant accent() const;
+ void setAccent(const QVariant &accent);
+ void inheritAccent(QRgb accent);
void propagateAccent();
void resetAccent();
- QColor accentColor() const;
QColor altHighColor() const;
QColor altLowColor() const;
QColor altMediumColor() const;
@@ -200,7 +198,7 @@ private:
bool m_hasTheme;
bool m_hasAccent;
QQuickUniversalStyle::Theme m_theme;
- QQuickUniversalStyle::Accent m_accent;
+ QRgb m_accent;
};
QT_END_NAMESPACE