diff options
author | Nikita Krupenko <krnekit@gmail.com> | 2016-03-17 00:26:03 +0200 |
---|---|---|
committer | Nikita Krupenko <krnekit@gmail.com> | 2016-03-17 14:44:14 +0000 |
commit | 2f476c5818878c7f2ba94522f805cd140e33989e (patch) | |
tree | a5ac15ad66809d8fe33349ba88b1b8a4ba1043a3 | |
parent | 5b4093e415d5a2d49ef396d89b3262339b0651a4 (diff) |
Material: use proper shades for dark theme colors
This fixes colors for checked switch dark theme and raised highlighted
button in both themes.
Change-Id: I3c485fb1b779104d6d7f682921b34cb535312f7c
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | examples/controls/gallery/pages/ButtonPage.qml | 1 | ||||
-rw-r--r-- | src/imports/controls/material/qquickmaterialstyle.cpp | 44 |
2 files changed, 29 insertions, 16 deletions
diff --git a/examples/controls/gallery/pages/ButtonPage.qml b/examples/controls/gallery/pages/ButtonPage.qml index 329b53a7..4ac657d2 100644 --- a/examples/controls/gallery/pages/ButtonPage.qml +++ b/examples/controls/gallery/pages/ButtonPage.qml @@ -76,6 +76,7 @@ Flickable { id: button text: "Second" width: itemWidth + highlighted: true } Button { text: "Third" diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp index 57b74d62..7355c2d6 100644 --- a/src/imports/controls/material/qquickmaterialstyle.cpp +++ b/src/imports/controls/material/qquickmaterialstyle.cpp @@ -405,6 +405,16 @@ static const QRgb switchDisabledTrackColorDark = 0x19FFFFFF; static const QRgb checkBoxUncheckedRippleColorLight = 0x10000000; static const QRgb checkBoxUncheckedRippleColorDark = 0x20FFFFFF; +static QColor alphaBlend(const QColor &bg, const QColor &fg) +{ + QColor result; + result.setRedF(fg.redF() * fg.alphaF() + bg.redF() * (1.0 - fg.alphaF())); + result.setGreenF(fg.greenF() * fg.alphaF() + bg.greenF() * (1.0 - fg.alphaF())); + result.setBlueF(fg.blueF() * fg.alphaF() + bg.blueF() * (1.0 - fg.alphaF())); + result.setAlphaF(bg.alphaF() + fg.alphaF() * (1.0 - bg.alphaF())); + return result; +} + QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickStyle(parent), m_explicitTheme(false), m_explicitPrimary(false), @@ -695,12 +705,14 @@ QColor QQuickMaterialStyle::raisedHighlightedButtonColor() const QColor QQuickMaterialStyle::raisedHighlightedButtonHoverColor() const { - return shade(accentColor(), Shade600); + // Add overlaying black shadow 12% opacity + return alphaBlend(accentColor(), QColor::fromRgba(0x1F000000)); } QColor QQuickMaterialStyle::raisedHighlightedButtonPressColor() const { - return shade(accentColor(), Shade700); + // Add overlaying black shadow 12% opacity + return alphaBlend(shade(accentColor(), m_theme == Light ? Shade700 : Shade100), QColor::fromRgba(0x1F000000)); } QColor QQuickMaterialStyle::raisedHighlightedButtonDisabledColor() const @@ -854,33 +866,33 @@ QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const { switch (shade) { case Shade50: - return lighterShade(color, 0.52); + return lighterShade(color, m_theme == Light ? 0.52 : 0.26); case Shade100: - return lighterShade(color, 0.37); + return lighterShade(color, m_theme == Light ? 0.37 : 0.11); case Shade200: - return lighterShade(color, 0.26); + return m_theme == Light ? lighterShade(color, 0.26) : color; case Shade300: - return lighterShade(color, 0.12); + return m_theme == Light ? lighterShade(color, 0.12) : darkerShade(color, 0.14); case Shade400: - return lighterShade(color, 0.06); + return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20); case Shade500: - return color; + return m_theme == Light ? color : darkerShade(color, 0.26); case Shade600: - return darkerShade(color, 0.06); + return darkerShade(color, m_theme == Light ? 0.06 : 0.32); case Shade700: - return darkerShade(color, 0.12); + return darkerShade(color, m_theme == Light ? 0.12 : 0.38); case Shade800: - return darkerShade(color, 0.18); + return darkerShade(color, m_theme == Light ? 0.18 : 0.44); case Shade900: - return darkerShade(color, 0.24); + return darkerShade(color, m_theme == Light ? 0.24 : 0.50); case ShadeA100: - return lighterShade(color, 0.54); + return lighterShade(color, m_theme == Light ? 0.54 : 0.28); case ShadeA200: - return lighterShade(color, 0.37); + return lighterShade(color, m_theme == Light ? 0.37 : 0.11); case ShadeA400: - return lighterShade(color, 0.06); + return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20); case ShadeA700: - return darkerShade(color, 0.12); + return darkerShade(color, m_theme == Light ? 0.12 : 0.38); default: Q_UNREACHABLE(); return QColor(); |