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 + 5 files changed, 53 insertions(+) (limited to 'src') 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", -- cgit v1.2.3