aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-04-24 00:40:49 +0200
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-04-23 23:11:53 +0000
commit2df3b1b930e3d151e14ace3f464b9caeadff0b04 (patch)
treef5071bf92b2f97507a26643fc7906f1fb440efcd
parent1190d5c95846db8dbb6676c97a30befebb640076 (diff)
Add Theme::disabledColor
Change-Id: I8bfc5a89aa75addd4cb1a5c0d5b58ea8b2bcf67c Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r--src/imports/controls/qquicktheme.cpp41
-rw-r--r--src/imports/controls/qquicktheme_p.h6
-rw-r--r--src/imports/controls/qquickthemedata.cpp1
-rw-r--r--src/imports/controls/qquickthemedata_p.h4
-rw-r--r--src/imports/controls/theme.json1
-rw-r--r--tests/auto/controls/data/tst_theme.qml9
6 files changed, 62 insertions, 0 deletions
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
@@ -67,6 +67,10 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \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" },