From 2df3b1b930e3d151e14ace3f464b9caeadff0b04 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 24 Apr 2015 00:40:49 +0200 Subject: Add Theme::disabledColor Change-Id: I8bfc5a89aa75addd4cb1a5c0d5b58ea8b2bcf67c Reviewed-by: J-P Nurmi --- src/imports/controls/qquicktheme.cpp | 41 ++++++++++++++++++++++++++++++++ src/imports/controls/qquicktheme_p.h | 6 +++++ src/imports/controls/qquickthemedata.cpp | 1 + src/imports/controls/qquickthemedata_p.h | 4 ++++ src/imports/controls/theme.json | 1 + tests/auto/controls/data/tst_theme.qml | 9 +++++++ 6 files changed, 62 insertions(+) diff --git a/src/imports/controls/qquicktheme.cpp b/src/imports/controls/qquicktheme.cpp index 476379e3..a816b077 100644 --- a/src/imports/controls/qquicktheme.cpp +++ b/src/imports/controls/qquicktheme.cpp @@ -66,6 +66,10 @@ QT_BEGIN_NAMESPACE \qmlattachedproperty color QtQuickControls2::Theme::backgroundColor */ +/*! + \qmlattachedproperty color QtQuickControls2::Theme::disabledColor +*/ + /*! \qmlattachedproperty color QtQuickControls2::Theme::focusColor */ @@ -214,6 +218,7 @@ public: explicitAccentColor(false), explicitBackgroundColor(false), explicitBaseColor(false), + explicitDisabledColor(false), explicitFocusColor(false), explicitFrameColor(false), explicitPressColor(false), @@ -231,6 +236,7 @@ public: void setAccentColor(const QColor &color, Method method); void setBackgroundColor(const QColor &color, Method method); void setBaseColor(const QColor &color, Method method); + void setDisabledColor(const QColor &color, Method method); void setFocusColor(const QColor &color, Method method); void setFrameColor(const QColor &color, Method method); void setPressColor(const QColor &color, Method method); @@ -257,6 +263,7 @@ public: bool explicitAccentColor; bool explicitBackgroundColor; bool explicitBaseColor; + bool explicitDisabledColor; bool explicitFocusColor; bool explicitFrameColor; bool explicitPressColor; @@ -315,6 +322,21 @@ void QQuickThemePrivate::setBaseColor(const QColor &color, Method method) } } +void QQuickThemePrivate::setDisabledColor(const QColor &color, Method method) +{ + Q_Q(QQuickTheme); + if (!explicitDisabledColor || method != Inherit) { + explicitDisabledColor = method == Explicit; + if (data.disabledColor() != color) { + data.setDisabledColor(color); + emit q->disabledColorChanged(); + + foreach (QQuickTheme *child, childThemes) + child->d_func()->setDisabledColor(color, Inherit); + } + } +} + void QQuickThemePrivate::setFocusColor(const QColor &color, Method method) { Q_Q(QQuickTheme); @@ -485,6 +507,7 @@ void QQuickThemePrivate::inherit(QQuickTheme *theme) setAccentColor(theme->accentColor(), Inherit); setBackgroundColor(theme->backgroundColor(), Inherit); setBaseColor(theme->baseColor(), QQuickThemePrivate::Inherit); + setDisabledColor(theme->disabledColor(), QQuickThemePrivate::Inherit); setFocusColor(theme->focusColor(), Inherit); setFrameColor(theme->frameColor(), Inherit); setPressColor(theme->pressColor(), Inherit); @@ -625,6 +648,24 @@ void QQuickTheme::resetBaseColor() d->setBaseColor(d->resolve().baseColor(), QQuickThemePrivate::Implicit); } +QColor QQuickTheme::disabledColor() const +{ + Q_D(const QQuickTheme); + return d->data.disabledColor(); +} + +void QQuickTheme::setDisabledColor(const QColor &color) +{ + Q_D(QQuickTheme); + d->setDisabledColor(color, QQuickThemePrivate::Explicit); +} + +void QQuickTheme::resetDisabledColor() +{ + Q_D(QQuickTheme); + d->setDisabledColor(d->resolve().disabledColor(), QQuickThemePrivate::Implicit); +} + QColor QQuickTheme::focusColor() const { Q_D(const QQuickTheme); diff --git a/src/imports/controls/qquicktheme_p.h b/src/imports/controls/qquicktheme_p.h index f443c311..f3e3d38c 100644 --- a/src/imports/controls/qquicktheme_p.h +++ b/src/imports/controls/qquicktheme_p.h @@ -63,6 +63,7 @@ class QQuickTheme : public QObject Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor RESET resetAccentColor NOTIFY accentColorChanged FINAL) Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor RESET resetBackgroundColor NOTIFY backgroundColorChanged FINAL) Q_PROPERTY(QColor baseColor READ baseColor WRITE setBaseColor RESET resetBaseColor NOTIFY baseColorChanged FINAL) + Q_PROPERTY(QColor disabledColor READ disabledColor WRITE setDisabledColor RESET resetDisabledColor NOTIFY disabledColorChanged FINAL) Q_PROPERTY(QColor focusColor READ focusColor WRITE setFocusColor RESET resetFocusColor NOTIFY focusColorChanged FINAL) Q_PROPERTY(QColor frameColor READ frameColor WRITE setFrameColor RESET resetFrameColor NOTIFY frameColorChanged FINAL) Q_PROPERTY(QColor pressColor READ pressColor WRITE setPressColor RESET resetPressColor NOTIFY pressColorChanged FINAL) @@ -88,6 +89,10 @@ public: void setAccentColor(const QColor &color); void resetAccentColor(); + QColor disabledColor() const; + void setDisabledColor(const QColor &color); + void resetDisabledColor(); + QColor backgroundColor() const; void setBackgroundColor(const QColor &color); void resetBackgroundColor(); @@ -144,6 +149,7 @@ Q_SIGNALS: void accentColorChanged(); void backgroundColorChanged(); void baseColorChanged(); + void disabledColorChanged(); void focusColorChanged(); void frameColorChanged(); void pressColorChanged(); diff --git a/src/imports/controls/qquickthemedata.cpp b/src/imports/controls/qquickthemedata.cpp index 73070231..637a5643 100644 --- a/src/imports/controls/qquickthemedata.cpp +++ b/src/imports/controls/qquickthemedata.cpp @@ -84,6 +84,7 @@ bool QQuickThemeData::load(const QString &filePath) d->accentColor = readColorValue(theme.value(QStringLiteral("accentColor")), QColor("#7bc258")); d->backgroundColor = readColorValue(theme.value(QStringLiteral("backgroundColor")), QColor("#ffffff")); d->baseColor = readColorValue(theme.value(QStringLiteral("baseColor")), QColor("#eeeeee")); + d->disabledColor = readColorValue(theme.value(QStringLiteral("disabledColor")), QColor("#c2c2c2")); d->focusColor = readColorValue(theme.value(QStringLiteral("focusColor")), QColor("#45a7d7")); d->frameColor = readColorValue(theme.value(QStringLiteral("frameColor")), QColor("#bdbebf")); d->pressColor = readColorValue(theme.value(QStringLiteral("pressColor")), QColor("#33333333")); diff --git a/src/imports/controls/qquickthemedata_p.h b/src/imports/controls/qquickthemedata_p.h index 5b590735..c86ad5ee 100644 --- a/src/imports/controls/qquickthemedata_p.h +++ b/src/imports/controls/qquickthemedata_p.h @@ -70,6 +70,9 @@ public: QColor baseColor() const { return d->baseColor; } void setBaseColor(const QColor &color) { d->baseColor = color; } + QColor disabledColor() const { return d->disabledColor; } + void setDisabledColor(const QColor &color) { d->disabledColor = color; } + QColor focusColor() const { return d->focusColor; } void setFocusColor(const QColor &color) { d->focusColor = color; } @@ -108,6 +111,7 @@ private: QColor accentColor; QColor baseColor; QColor backgroundColor; + QColor disabledColor; QColor focusColor; QColor frameColor; QColor pressColor; diff --git a/src/imports/controls/theme.json b/src/imports/controls/theme.json index a1a79969..43b029f2 100644 --- a/src/imports/controls/theme.json +++ b/src/imports/controls/theme.json @@ -2,6 +2,7 @@ "accentColor": "#7bc258", "backgroundColor": "#ffffff", "baseColor": "#eeeeee", + "disabledColor": "#c2c2c2", "focusColor": "#45a7d7", "frameColor": "#bdbebf", "pressColor": "#33333333", diff --git a/tests/auto/controls/data/tst_theme.qml b/tests/auto/controls/data/tst_theme.qml index 239d4914..c2d76366 100644 --- a/tests/auto/controls/data/tst_theme.qml +++ b/tests/auto/controls/data/tst_theme.qml @@ -62,6 +62,7 @@ TestCase { Theme.accentColor: "#111111" Theme.backgroundColor: "#222222" Theme.baseColor: "#333333" + Theme.disabledColor: "#aaaaaa" Theme.focusColor: "#444444" Theme.frameColor: "#555555" Theme.pressColor: "#666666" @@ -86,6 +87,7 @@ TestCase { Theme.accentColor: "#111111" Theme.backgroundColor: "#222222" Theme.baseColor: "#333333" + Theme.disabledColor: "#aaaaaa" Theme.focusColor: "#444444" Theme.frameColor: "#555555" Theme.pressColor: "#666666" @@ -114,6 +116,7 @@ TestCase { verify(control.Theme.accentColor !== undefined) verify(control.Theme.backgroundColor !== undefined) verify(control.Theme.baseColor !== undefined) + verify(control.Theme.disabledColor !== undefined) verify(control.Theme.focusColor !== undefined) verify(control.Theme.frameColor !== undefined) verify(control.Theme.pressColor !== undefined) @@ -133,6 +136,7 @@ TestCase { control.Theme.accentColor = "#111111" control.Theme.backgroundColor = "#222222" control.Theme.baseColor = "#333333" + control.Theme.disabledColor = "#aaaaaa" control.Theme.focusColor = "#444444" control.Theme.frameColor = "#555555" control.Theme.pressColor = "#666666" @@ -146,6 +150,7 @@ TestCase { compare(control.Theme.accentColor, "#111111") compare(control.Theme.backgroundColor, "#222222") compare(control.Theme.baseColor, "#333333") + compare(control.Theme.disabledColor, "#aaaaaa") compare(control.Theme.focusColor, "#444444") compare(control.Theme.frameColor, "#555555") compare(control.Theme.pressColor, "#666666") @@ -165,6 +170,7 @@ TestCase { compare(control.Theme.accentColor, "#111111") compare(control.Theme.backgroundColor, "#222222") compare(control.Theme.baseColor, "#333333") + compare(control.Theme.disabledColor, "#aaaaaa") compare(control.Theme.focusColor, "#444444") compare(control.Theme.frameColor, "#555555") compare(control.Theme.pressColor, "#666666") @@ -178,6 +184,7 @@ TestCase { control.Theme.accentColor = undefined control.Theme.backgroundColor = undefined control.Theme.baseColor = undefined + control.Theme.disabledColor = undefined control.Theme.focusColor = undefined control.Theme.frameColor = undefined control.Theme.pressColor = undefined @@ -191,6 +198,7 @@ TestCase { compare(control.Theme.accentColor, testCase.Theme.accentColor) compare(control.Theme.backgroundColor, testCase.Theme.backgroundColor) compare(control.Theme.baseColor, testCase.Theme.baseColor) + compare(control.Theme.disabledColor, testCase.Theme.disabledColor) compare(control.Theme.focusColor, testCase.Theme.focusColor) compare(control.Theme.frameColor, testCase.Theme.frameColor) compare(control.Theme.pressColor, testCase.Theme.pressColor) @@ -209,6 +217,7 @@ TestCase { { tag: "accentColor", value1: "#111111", value2: "#101010" }, { tag: "backgroundColor", value1: "#222222", value2: "#202020" }, { tag: "baseColor", value1: "#333333", value2: "#303030" }, + { tag: "disabledColor", value1: "#aaaaaa", value2: "#a0a0a0" }, { tag: "focusColor", value1: "#444444", value2: "#404040" }, { tag: "frameColor", value1: "#555555", value2: "#505050" }, { tag: "pressColor", value1: "#666666", value2: "#606060" }, -- cgit v1.2.3