diff options
author | Andrew Knight <andrew.knight@digia.com> | 2014-08-08 14:39:19 +0300 |
---|---|---|
committer | Andrew Knight <andrew.knight@digia.com> | 2014-08-11 23:29:20 +0200 |
commit | 2fe8efbefe07605d7cd59b08bce358b48580ca7c (patch) | |
tree | 13241a4767afba986a38a0ec3084166cc5ffaee4 /src/plugins/platforms/winrt/qwinrttheme.cpp | |
parent | 3846aec83b42d9666cc2ae012eb4db380dfdf8fe (diff) |
winrt: Fix theme palette
Windows Phone didn't handle the base color enums well, and ARM was
getting incorrect colors due to different byte ordering. So, use the
Phone-specific enums where applicable and pass in the proper char sequence
for the color.
Change-Id: I7ffbc383c07d2160974560110fea221a204577ea
Reviewed-by: Jochen Seemann <seemann.jochen@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Diffstat (limited to 'src/plugins/platforms/winrt/qwinrttheme.cpp')
-rw-r--r-- | src/plugins/platforms/winrt/qwinrttheme.cpp | 102 |
1 files changed, 73 insertions, 29 deletions
diff --git a/src/plugins/platforms/winrt/qwinrttheme.cpp b/src/plugins/platforms/winrt/qwinrttheme.cpp index 3566683163..592a6b1921 100644 --- a/src/plugins/platforms/winrt/qwinrttheme.cpp +++ b/src/plugins/platforms/winrt/qwinrttheme.cpp @@ -73,60 +73,104 @@ public: QPalette palette; }; +static inline QColor fromColor(const Color &color) +{ + return QColor(color.R, color.G, color.B, color.A); +} + QWinRTTheme::QWinRTTheme() : d_ptr(new QWinRTThemePrivate) { Q_D(QWinRTTheme); HRESULT hr; - union { Color ui; QRgb qt; } color; + Color color; - hr = uiSettings()->UIElementColor(UIElementType_ActiveCaption, &color.ui); +#ifdef Q_OS_WINPHONE + hr = uiSettings()->UIElementColor(UIElementType_PopupBackground, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::ToolTipBase, color.qt); + d->palette.setColor(QPalette::ToolTipBase, fromColor(color)); + d->palette.setColor(QPalette::AlternateBase, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_Background, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_NonTextMedium, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Button, fromColor(color)); + hr = uiSettings()->UIElementColor(UIElementType_NonTextMediumHigh, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Midlight, fromColor(color)); + hr = uiSettings()->UIElementColor(UIElementType_NonTextHigh, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::AlternateBase, color.qt); + d->palette.setColor(QPalette::Light, fromColor(color)); + hr = uiSettings()->UIElementColor(UIElementType_NonTextMediumLow, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Mid, fromColor(color)); + hr = uiSettings()->UIElementColor(UIElementType_NonTextLow, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Dark, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_ButtonFace, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_TextHigh, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::Button, color.qt); - d->palette.setColor(QPalette::Midlight, QColor(color.qt).lighter(110)); - d->palette.setColor(QPalette::Light, QColor(color.qt).lighter(150)); - d->palette.setColor(QPalette::Mid, QColor(color.qt).dark(130)); - d->palette.setColor(QPalette::Dark, QColor(color.qt).dark(150)); + d->palette.setColor(QPalette::ButtonText, fromColor(color)); + d->palette.setColor(QPalette::Text, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_ButtonText, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_TextMedium, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::ButtonText, color.qt); - d->palette.setColor(QPalette::Text, color.qt); + d->palette.setColor(QPalette::ToolTipText, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_CaptionText, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_AccentColor, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::ToolTipText, color.qt); + d->palette.setColor(QPalette::Highlight, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_Highlight, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_PageBackground, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::Highlight, color.qt); + d->palette.setColor(QPalette::Window, fromColor(color)); + d->palette.setColor(QPalette::Base, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_HighlightText, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_TextContrastWithHigh, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::BrightText, fromColor(color)); +#else + hr = uiSettings()->UIElementColor(UIElementType_ActiveCaption, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::HighlightedText, color.qt); + d->palette.setColor(QPalette::ToolTipBase, fromColor(color)); - hr = uiSettings()->UIElementColor(UIElementType_Window, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_Background, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::Window, color.qt); - d->palette.setColor(QPalette::Base, color.qt); + d->palette.setColor(QPalette::AlternateBase, fromColor(color)); -#ifdef Q_OS_WINPHONE - hr = uiSettings()->UIElementColor(UIElementType_TextHigh, &color.ui); + hr = uiSettings()->UIElementColor(UIElementType_ButtonFace, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::BrightText, color.qt); -#else - hr = uiSettings()->UIElementColor(UIElementType_Hotlight, &color.ui); + d->palette.setColor(QPalette::Button, fromColor(color)); + d->palette.setColor(QPalette::Midlight, fromColor(color).lighter(110)); + d->palette.setColor(QPalette::Light, fromColor(color).lighter(150)); + d->palette.setColor(QPalette::Mid, fromColor(color).dark(130)); + d->palette.setColor(QPalette::Dark, fromColor(color).dark(150)); + + hr = uiSettings()->UIElementColor(UIElementType_ButtonText, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::ButtonText, fromColor(color)); + d->palette.setColor(QPalette::Text, fromColor(color)); + + hr = uiSettings()->UIElementColor(UIElementType_CaptionText, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::ToolTipText, fromColor(color)); + + hr = uiSettings()->UIElementColor(UIElementType_Highlight, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Highlight, fromColor(color)); + + hr = uiSettings()->UIElementColor(UIElementType_HighlightText, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::HighlightedText, fromColor(color)); + + hr = uiSettings()->UIElementColor(UIElementType_Window, &color); + Q_ASSERT_SUCCEEDED(hr); + d->palette.setColor(QPalette::Window, fromColor(color)); + d->palette.setColor(QPalette::Base, fromColor(color)); + + hr = uiSettings()->UIElementColor(UIElementType_Hotlight, &color); Q_ASSERT_SUCCEEDED(hr); - d->palette.setColor(QPalette::BrightText, color.qt); + d->palette.setColor(QPalette::BrightText, fromColor(color)); #endif } |