From 9752cf9e57c2bb4564e84200f4c1ee4e9a190263 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 1 May 2023 19:34:36 +0200 Subject: [PATCH] windows style: Style checkboxes --- skins/windows/QskWindowsSkin.cpp | 55 ++++++++++++++++++++---- skins/windows/QskWindowsSkin.h | 11 ++--- skins/windows/icons.qrc | 4 +- skins/windows/icons/check_small.svg | 4 -- skins/windows/icons/checkmark.svg | 4 ++ skins/windows/icons/qvg/check_small.qvg | Bin 575 -> 0 bytes skins/windows/icons/qvg/checkmark.qvg | Bin 0 -> 1255 bytes 7 files changed, 55 insertions(+), 23 deletions(-) delete mode 100644 skins/windows/icons/check_small.svg create mode 100644 skins/windows/icons/checkmark.svg delete mode 100644 skins/windows/icons/qvg/check_small.qvg create mode 100644 skins/windows/icons/qvg/checkmark.qvg diff --git a/skins/windows/QskWindowsSkin.cpp b/skins/windows/QskWindowsSkin.cpp index 45dcab77..07d4b9ee 100644 --- a/skins/windows/QskWindowsSkin.cpp +++ b/skins/windows/QskWindowsSkin.cpp @@ -171,6 +171,48 @@ void Editor::setupBox() void Editor::setupCheckBox() { + using Q = QskCheckBox; + + setStrutSize( Q::Panel, 126, 38 ); + setSpacing( Q::Panel, 8 ); + + setStrutSize( Q::Box, { 20, 20 } ); // 18 + 2*1 border + setBoxShape( Q::Box, 4 ); // adapt to us taking the border into account + setBoxBorderMetrics( Q::Box, 1 ); + setPadding( Q::Box, 5 ); // "icon size" + + setGradient( Q::Box, theme.palette.fillColor.controlAlt.secondary ); + setBoxBorderColors( Q::Box, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + + setGradient( Q::Box | Q::Checked, theme.palette.fillColor.accent.defaultColor ); + setBoxBorderColors( Q::Box | Q::Checked, theme.palette.fillColor.accent.defaultColor ); + + const auto checkMark = symbol( "checkmark" ); + setSymbol( Q::Indicator | Q::Checked, checkMark, { QskStateCombination::CombinationNoState, Q::Disabled } ); + setGraphicRole( Q::Indicator, QskWindowsSkin::GraphicRoleFillColorTextOnAccentPrimary ); + + setFontRole( Q::Text, QskWindowsSkin::Body ); + setColor( Q::Text, theme.palette.fillColor.text.primary ); + + + setGradient( Q::Box | Q::Hovered, theme.palette.fillColor.controlAlt.tertiary ); + setBoxBorderColors( Q::Box | Q::Hovered, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Box | Q::Hovered | Q::Checked, theme.palette.fillColor.accent.secondary ); + setBoxBorderColors( Q::Box | Q::Hovered | Q::Checked, theme.palette.fillColor.accent.secondary ); + // indicator the same as in Rest state + + setGradient( Q::Box | Q::Pressed, theme.palette.fillColor.controlAlt.quaternary ); + setBoxBorderColors( Q::Box | Q::Pressed, theme.palette.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::Box | Q::Pressed | Q::Checked, theme.palette.fillColor.accent.tertiary ); + setBoxBorderColors( Q::Box | Q::Pressed | Q::Checked, theme.palette.fillColor.accent.tertiary ); + setGraphicRole( Q::Indicator | Q::Pressed | Q::Checked, QskWindowsSkin::GraphicRoleFillColorTextOnAccentSecondary ); + + setGradient( Q::Box | Q::Disabled, theme.palette.fillColor.controlAlt.disabled ); + setBoxBorderColors( Q::Box | Q::Disabled, theme.palette.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::Box | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); + setBoxBorderColors( Q::Box | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); + setGraphicRole( Q::Indicator | Q::Disabled | Q::Checked, QskWindowsSkin::GraphicRoleFillColorTextOnAccentDisabled ); + setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); } void Editor::setupComboBox() @@ -762,21 +804,16 @@ void QskWindowsSkin::setGraphicColor( GraphicRole role, QRgb rgb ) { QskColorFilter colorFilter; colorFilter.setMask( QskRgb::RGBAMask ); - colorFilter.addColorSubstitution( QskRgb::Black, rgb ); + colorFilter.addColorSubstitution( QskRgb::White, rgb ); setGraphicFilter( role, colorFilter ); } void QskWindowsSkin::setupGraphicFilters( const QskWindowsTheme& theme ) { -// setGraphicColor( GraphicRoleOnPrimary, palette.onPrimary ); -// setGraphicColor( GraphicRoleOnSecondaryContainer, palette.onSecondaryContainer ); -// setGraphicColor( GraphicRoleOnError, palette.onError ); -// setGraphicColor( GraphicRoleOnSurface, palette.onSurface ); -// setGraphicColor( GraphicRoleOnSurface38, palette.onSurface38 ); -// setGraphicColor( GraphicRoleOnSurfaceVariant, palette.onSurfaceVariant ); -// setGraphicColor( GraphicRolePrimary, palette.primary ); -// setGraphicColor( GraphicRoleSurface, palette.surface ); + setGraphicColor( GraphicRoleFillColorTextOnAccentDisabled, theme.palette.fillColor.textOnAccent.disabled ); + setGraphicColor( GraphicRoleFillColorTextOnAccentPrimary, theme.palette.fillColor.textOnAccent.primary ); + setGraphicColor( GraphicRoleFillColorTextOnAccentSecondary, theme.palette.fillColor.textOnAccent.secondary ); } #include "moc_QskWindowsSkin.cpp" diff --git a/skins/windows/QskWindowsSkin.h b/skins/windows/QskWindowsSkin.h index 2e9db6a8..7dee87a6 100644 --- a/skins/windows/QskWindowsSkin.h +++ b/skins/windows/QskWindowsSkin.h @@ -326,14 +326,9 @@ class QSK_WINDOWS_EXPORT QskWindowsSkin : public QskSkin enum GraphicRole { - GraphicRoleOnError, - GraphicRoleOnPrimary, - GraphicRoleOnSecondaryContainer, - GraphicRoleOnSurface, - GraphicRoleOnSurface38, - GraphicRoleOnSurfaceVariant, - GraphicRolePrimary, - GraphicRoleSurface, + GraphicRoleFillColorTextOnAccentDisabled, + GraphicRoleFillColorTextOnAccentPrimary, + GraphicRoleFillColorTextOnAccentSecondary, }; enum FontRole diff --git a/skins/windows/icons.qrc b/skins/windows/icons.qrc index ab149d96..b84bca05 100644 --- a/skins/windows/icons.qrc +++ b/skins/windows/icons.qrc @@ -1,6 +1,6 @@ - - icons/qvg/check_small.qvg + + icons/qvg/checkmark.qvg icons/qvg/combo-box-arrow-closed.qvg icons/qvg/combo-box-arrow-open.qvg icons/qvg/segmented-button-check.qvg diff --git a/skins/windows/icons/check_small.svg b/skins/windows/icons/check_small.svg deleted file mode 100644 index e7a84071..00000000 --- a/skins/windows/icons/check_small.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/skins/windows/icons/checkmark.svg b/skins/windows/icons/checkmark.svg new file mode 100644 index 00000000..9639ac0f --- /dev/null +++ b/skins/windows/icons/checkmark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/skins/windows/icons/qvg/check_small.qvg b/skins/windows/icons/qvg/check_small.qvg deleted file mode 100644 index ea738b8639303983a6c47ec95103ead792067a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmWFx_I77rU|?ouVrB?nu>SyL0|6uB|Njsc16&NoN2g(W(8XbVn7ji_0GXzRML_e} zL3V%%2LXt64oYW0;4F~G2oYgma1fmd0<%D3_TSRL0Hz)!24g!&LFB+WadGXpH9 j0pY>S0E=PT3sS@g3gSyL0|6uB|Njsc16&NoN2g(W(8XbVn7ji_0EuP1_fEF~P;So-q7g(Uc7oW42%U|6fqUwGao+ z&;QrRYTf~h9cExL-1|b;fm8eMmNTj#Lz(Q)H!w-u`y%eZk%G{B-TvR_39VlpIDjf3 zfZ6^5gn=Z+Wd9_Aq0M|R8|3AR7jl9h6~A zIL+jstPJxzOc1Efm0{AEZ~N?f7?`8}1xElSfMUrEB0siv+Ao3I0o2pn(3LMT3%A3J