diff --git a/skins/material/QskMaterialSkin.cpp b/skins/material/QskMaterialSkin.cpp index 02452e10..32e8f7e7 100644 --- a/skins/material/QskMaterialSkin.cpp +++ b/skins/material/QskMaterialSkin.cpp @@ -161,7 +161,7 @@ void QskMaterialSkin::initCommonHints() using namespace QskAspect; using Q = QskControl; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Control | Padding, 4 ); @@ -176,7 +176,7 @@ void QskMaterialSkin::initBoxHints() using namespace QskAspect; using Q = QskBox; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setGradient( Q::Panel, pal.baseColor ); setBoxShape( Q::Panel, 4 ); @@ -188,7 +188,7 @@ void QskMaterialSkin::initPopupHints() using namespace QskAspect; using Q = QskPopup; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setSkinHint( Q::Overlay | QskAspect::Style, true ); @@ -203,7 +203,7 @@ void QskMaterialSkin::initTextLabelHints() using namespace QskAspect; using Q = QskTextLabel; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setSkinHint( Q::Text | Alignment, Qt::AlignCenter ); setColor( Q::Text, pal.textColor ); @@ -223,7 +223,7 @@ void QskMaterialSkin::initTextInputHints() setSkinHint( Q::Text | Alignment, static_cast< int >( Qt::AlignLeft | Qt::AlignTop ) ); - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setColor( Q::Text, pal.textColor ); setColor( Q::PanelSelected, pal.accentColor ); @@ -239,13 +239,22 @@ void QskMaterialSkin::initTextInputHints() void QskMaterialSkin::initProgressBarHints() { using namespace QskAspect; + using namespace QskRgbValue; using Q = QskProgressBar; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; - setGradient( Q::Groove, Qt::white ); - setMetric( Q::Groove | Size, 10 ); + for ( auto subControl : { Q::Groove, Q::Bar } ) + { + setMetric( subControl | Size, 5 ); + setMargins( subControl | Padding, 0 ); + + setBoxShape( subControl, 0 ); + setBoxBorderMetrics( subControl, 0 ); + } + setGradient( Q::Groove, Grey ); + setMetric( Q::Groove | Size, 5 ); setGradient( Q::Bar, pal.accentColor ); } @@ -254,7 +263,7 @@ void QskMaterialSkin::initFocusIndicatorHints() using namespace QskAspect; using Q = QskFocusIndicator; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Q::Panel | Padding, 5 ); setBoxShape( Q::Panel, 4 ); @@ -268,7 +277,7 @@ void QskMaterialSkin::initSeparatorHints() using namespace QskAspect; using Q = QskSeparator; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; for ( auto placement : { Horizontal, Vertical } ) { @@ -286,7 +295,7 @@ void QskMaterialSkin::initPageIndicatorHints() using namespace QskAspect; using Q = QskPageIndicator; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; for ( auto subControl : { Q::Bullet, Q::Highlighted } ) { @@ -316,7 +325,7 @@ void QskMaterialSkin::initPushButtonHints() using namespace QskRgbValue; using Q = QskPushButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMetric( Q::Panel | MinimumWidth, qskDpiScaled( 75.0 ) ); setMetric( Q::Panel | MinimumHeight, qskDpiScaled( 23.0 ) ); @@ -377,7 +386,7 @@ void QskMaterialSkin::initDialogButtonHints() using namespace QskRgbValue; using Q = QskDialogButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMetric( Q::Panel | MinimumWidth, 30 ); setMetric( Q::Panel | MinimumHeight, 16 ); @@ -430,7 +439,7 @@ void QskMaterialSkin::initDialogButtonBoxHints() using namespace QskAspect; using Q = QskDialogButtonBox; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setGradient( Q::Panel, pal.baseColor ); setBoxShape( Q::Panel, 0 ); @@ -443,7 +452,7 @@ void QskMaterialSkin::initSliderHints() using namespace QskRgbValue; using Q = QskSlider; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; const qreal dim = 30; @@ -466,7 +475,6 @@ void QskMaterialSkin::initSliderHints() setBoxShape( subControl, 0 ); setBoxBorderMetrics( subControl, 0 ); - setGradient( subControl, QskGradient() ); } setGradient( Q::Groove, Grey ); @@ -488,7 +496,7 @@ void QskMaterialSkin::initSliderHints() // should be transparent, but the current renderer doesn't "cut out" the background setGradient( Q::Handle, pal.accentColor ); - setGradient( Q::Pressed | Q::Handle, pal.accentColor ); + setGradient( Q::Handle | Q::Pressed, pal.accentColor ); for ( auto state : { NoState, Q::Pressed, Q::Pressed | Q::Hovered } ) { @@ -515,7 +523,7 @@ void QskMaterialSkin::initTabButtonHints() using namespace QskAspect; using Q = QskTabButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMetric( Q::Panel | MinimumWidth, 30 ); setMetric( Q::Panel | MinimumHeight, 16 ); @@ -594,7 +602,7 @@ void QskMaterialSkin::initTabViewHints() using namespace QskAspect; using Q = QskTabView; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setBoxShape( Q::Page, 0 ); setBoxBorderMetrics( Q::Page, 0 ); @@ -609,7 +617,7 @@ void QskMaterialSkin::initInputPanelHints() using namespace QskAspect; using Q = QskInputPanelBox; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setBoxShape( Q::Panel, 0 ); setBoxBorderMetrics( Q::Panel, 0 ); @@ -622,7 +630,7 @@ void QskMaterialSkin::initVirtualKeyboardHints() using namespace QskAspect; using Q = QskVirtualKeyboard; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // key panel setMargins( Q::ButtonPanel | Margin, 2 ); @@ -651,7 +659,7 @@ void QskMaterialSkin::initScrollViewHints() using namespace QskAspect; using Q = QskScrollView; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMetric( Q::Panel | Spacing, 2 ); @@ -696,7 +704,7 @@ void QskMaterialSkin::initListViewHints() using namespace QskAspect; using Q = QskListView; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // padding for each cell setMargins( Q::Cell | Padding, QskMargins( 4, 8 ) ); @@ -713,7 +721,7 @@ void QskMaterialSkin::initSubWindowHints() using namespace QskAspect; using Q = QskSubWindow; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // Panel diff --git a/skins/squiek/QskSquiekSkin.cpp b/skins/squiek/QskSquiekSkin.cpp index ca764615..cefb760e 100644 --- a/skins/squiek/QskSquiekSkin.cpp +++ b/skins/squiek/QskSquiekSkin.cpp @@ -132,7 +132,7 @@ QskSquiekSkin::~QskSquiekSkin() void QskSquiekSkin::setSeparator( QskAspect::Aspect aspect ) { - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; QskGradient gradient( QskGradient::Vertical, pal.lighter110, pal.darker125 ); @@ -150,7 +150,7 @@ void QskSquiekSkin::setButton( #if 1 // Buttons shift ??? #endif - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; QskBoxBorderColors borderColors; @@ -211,7 +211,7 @@ void QskSquiekSkin::setPanel( QskAspect::Aspect aspect, PanelStyle style ) void QskSquiekSkin::setTab( QskAspect::Aspect aspect ) { - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setGradient( aspect, QskGradient( QskGradient::Vertical, pal.lighter125, pal.lighter150 ) ); @@ -287,7 +287,7 @@ void QskSquiekSkin::initCommonHints() using namespace QskAspect; using Q = QskControl; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Control | Padding, 4 ); @@ -315,7 +315,7 @@ void QskSquiekSkin::initTextLabelHints() using namespace QskAspect; using Q = QskTextLabel; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setSkinHint( Q::Text | Alignment, Qt::AlignCenter ); setColor( Q::Text, pal.themeForeground ); @@ -339,7 +339,7 @@ void QskSquiekSkin::initTextInputHints() using namespace QskAspect; using Q = QskTextInput; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setSkinHint( Q::Text | Alignment, static_cast< int >( Qt::AlignLeft | Qt::AlignTop ) ); @@ -387,12 +387,15 @@ void QskSquiekSkin::initProgressBarHints() using namespace QskAspect; using Q = QskProgressBar; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; - setGradient( Q::Groove, Qt::white ); - setMetric( Q::Groove | Size, 10 ); + setMetric( Q::Groove | Size, 8 ); + setMargins( Q::Groove | Padding, 0 ); + setGradient( Q::Groove, pal.darker200 ); + setBoxShape( Q::Groove, 4 ); setGradient( Q::Bar, pal.highlighted ); + setBoxShape( Q::Bar, 4 ); } void QskSquiekSkin::initFocusIndicatorHints() @@ -400,7 +403,7 @@ void QskSquiekSkin::initFocusIndicatorHints() using namespace QskAspect; using Q = QskFocusIndicator; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Q::Panel | Padding, 5 ); setBoxBorderMetrics( Q::Panel, 2 ); @@ -425,7 +428,7 @@ void QskSquiekSkin::initPageIndicatorHints() using namespace QskAspect; using Q = QskPageIndicator; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; for ( auto subControl : { Q::Bullet, Q::Highlighted } ) { @@ -452,7 +455,7 @@ void QskSquiekSkin::initPushButtonHints() using namespace QskAspect; using Q = QskPushButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // Panel @@ -494,7 +497,7 @@ void QskSquiekSkin::initDialogButtonHints() using namespace QskAspect; using Q = QskDialogButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // panel setMetric( Q::Panel | MinimumWidth, qskDpiScaled( 75.0 ) ); @@ -522,7 +525,7 @@ void QskSquiekSkin::initDialogButtonBoxHints() using namespace QskAspect; using Q = QskDialogButtonBox; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setBoxBorderColors( Q::Panel, pal.theme ); setGradient( Q::Panel, pal.lighter135 ); @@ -535,7 +538,7 @@ void QskSquiekSkin::initTabButtonHints() using namespace QskAspect; using Q = QskTabButton; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMetric( Q::Panel | MinimumWidth, 30 ); setMetric( Q::Panel | MinimumHeight, 16 ); @@ -593,7 +596,7 @@ void QskSquiekSkin::initSliderHints() using namespace QskAspect; using Q = QskSlider; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; const qreal dim = 40; @@ -687,7 +690,7 @@ void QskSquiekSkin::initInputPredictionBar() using namespace QskAspect; using Q = QskInputPredictionBar; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Q::Panel | Padding, 5 ); setPanel( Q::Panel, Flat ); @@ -705,7 +708,7 @@ void QskSquiekSkin::initVirtualKeyboardHints() using namespace QskAspect; using Q = QskVirtualKeyboard; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; setMargins( Q::Panel | Padding, 5 ); setMetric( Q::Panel | Spacing, 5 ); @@ -778,7 +781,7 @@ void QskSquiekSkin::initListViewHints() using namespace QskAspect; using Q = QskListView; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; // padding for each cell setMargins( Q::Cell | Padding, QskMargins( 4, 8 ) ); @@ -795,7 +798,7 @@ void QskSquiekSkin::initSubWindowHints() using namespace QskAspect; using Q = QskSubWindow; - const ColorPalette& pal = m_data->palette; + const auto& pal = m_data->palette; const qreal radius = 5.0; diff --git a/src/controls/QskProgressBarSkinlet.cpp b/src/controls/QskProgressBarSkinlet.cpp index 3d87ee03..8d3770b5 100644 --- a/src/controls/QskProgressBarSkinlet.cpp +++ b/src/controls/QskProgressBarSkinlet.cpp @@ -6,6 +6,7 @@ #include "QskProgressBarSkinlet.h" #include "QskProgressBar.h" #include "QskIntervalF.h" +#include "QskBoxBorderMetrics.h" #include @@ -122,8 +123,16 @@ QSGNode* QskProgressBarSkinlet::updateBarNode( QRectF QskProgressBarSkinlet::barRect( const QskProgressBar* bar ) const { - auto rect = bar->subControlRect( QskProgressBar::Groove ); - rect = bar->innerBox( QskProgressBar::Groove, rect ); + const auto subControl = QskProgressBar::Groove; + + auto rect = bar->subControlRect( subControl ); + + const auto borderMetrics = bar->boxBorderMetricsHint( subControl ); + + auto m = bar->marginsHint( subControl | QskAspect::Padding ); + m += 0.5 * borderMetrics.toAbsolute( rect.size() ).widths(); + + rect = rect.marginsRemoved( m ); const auto intv = qskBarInterval( bar );