From c58593669d85fb793725a174557da29a5cc51191 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Fri, 27 Jan 2023 16:36:42 +0100 Subject: [PATCH] segmented bar: Add own checkmark The checkmark is slightly different from the one used in the check box. --- skins/material3/QskMaterial3Skin.cpp | 5 +++++ skins/material3/icons.qrc | 1 + .../icons/qvg/segmented-button-check.qvg | Bin 0 -> 575 bytes skins/material3/icons/segmented-button-check.svg | 4 ++++ src/controls/QskSegmentedBarSkinlet.cpp | 5 +++-- src/graphic/QskStandardSymbol.cpp | 5 +++++ src/graphic/QskStandardSymbol.h | 2 ++ 7 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 skins/material3/icons/qvg/segmented-button-check.qvg create mode 100644 skins/material3/icons/segmented-button-check.svg diff --git a/skins/material3/QskMaterial3Skin.cpp b/skins/material3/QskMaterial3Skin.cpp index be4eeff0..20509e74 100644 --- a/skins/material3/QskMaterial3Skin.cpp +++ b/skins/material3/QskMaterial3Skin.cpp @@ -1090,6 +1090,11 @@ QskGraphic QskMaterial3Skin::symbol( int symbolType ) const { return {}; } + case QskStandardSymbol::SegmentedBarCheckMark: + { + const auto* provider = graphicProvider( {} ); + return *( provider->requestGraphic( "segmented-button-check" ) ); + } default: return Inherited::symbol( symbolType ); } diff --git a/skins/material3/icons.qrc b/skins/material3/icons.qrc index 1c012b6a..a2466aea 100644 --- a/skins/material3/icons.qrc +++ b/skins/material3/icons.qrc @@ -1,5 +1,6 @@ icons/qvg/check_small.qvg + icons/qvg/segmented-button-check.qvg diff --git a/skins/material3/icons/qvg/segmented-button-check.qvg b/skins/material3/icons/qvg/segmented-button-check.qvg new file mode 100644 index 0000000000000000000000000000000000000000..343402a814f861a7464a28f1533d99694702e97b GIT binary patch literal 575 zcmWFx_I77rU|?ouVrB?nu>SyL0|6uB|Njsc16&NoN2g(W(8XbVn7ji_0EuP + + + diff --git a/src/controls/QskSegmentedBarSkinlet.cpp b/src/controls/QskSegmentedBarSkinlet.cpp index 6fc30c4e..b5934c22 100644 --- a/src/controls/QskSegmentedBarSkinlet.cpp +++ b/src/controls/QskSegmentedBarSkinlet.cpp @@ -9,6 +9,7 @@ #include "QskGraphic.h" #include "QskColorFilter.h" #include "QskFunctions.h" +#include "QskSkin.h" #include "QskStandardSymbol.h" #include "QskSubcontrolLayoutEngine.h" @@ -37,7 +38,7 @@ namespace // implementing this control we should put this code into a // subclass. const auto graphic = ( bar->selectedIndex() == index ) - ? QskStandardSymbol::graphic( QskStandardSymbol::CheckMark ) + ? bar->effectiveSkin()->symbol( QskStandardSymbol::SegmentedBarCheckMark ) : bar->graphicAt( index ); return graphic; @@ -215,7 +216,7 @@ QSizeF QskSegmentedBarSkinlet::segmentSizeHint( const QskSegmentedBar* bar, Qt:: { LayoutEngine layoutEngine( bar, i ); - const auto graphic = QskStandardSymbol::graphic( QskStandardSymbol::CheckMark ); + const auto graphic = bar->effectiveSkin()->symbol( QskStandardSymbol::SegmentedBarCheckMark ); // We want to know how big the element can grow when it is selected, // i.e. when it has the checkmark symbol: diff --git a/src/graphic/QskStandardSymbol.cpp b/src/graphic/QskStandardSymbol.cpp index abddcae6..3c9fd6ea 100644 --- a/src/graphic/QskStandardSymbol.cpp +++ b/src/graphic/QskStandardSymbol.cpp @@ -260,6 +260,11 @@ QskGraphic QskStandardSymbol::graphic( Type symbolType ) qskCrossMarkGraphic( &painter ); break; } + case QskStandardSymbol::SegmentedBarCheckMark: + { + qskCheckMarkGraphic( &painter ); + break; + } case QskStandardSymbol::NoSymbol: case QskStandardSymbol::SymbolTypeCount: { diff --git a/src/graphic/QskStandardSymbol.h b/src/graphic/QskStandardSymbol.h index 4a5db48b..2b517319 100644 --- a/src/graphic/QskStandardSymbol.h +++ b/src/graphic/QskStandardSymbol.h @@ -30,6 +30,8 @@ namespace QskStandardSymbol CheckMark, CrossMark, + SegmentedBarCheckMark, + SymbolTypeCount };