diff --git a/examples/gallery/button/ButtonPage.cpp b/examples/gallery/button/ButtonPage.cpp index faad977b..9132dd41 100644 --- a/examples/gallery/button/ButtonPage.cpp +++ b/examples/gallery/button/ButtonPage.cpp @@ -29,27 +29,36 @@ namespace private: void populate() { - const char* texts[] = { "Press Me", "Check Me" }; + const char* texts[] = { "Press Me", "Check Me", "Outlined", "Text" }; const char* graphics[] = { "diamond/khaki", "ellipse/sandybrown" }; - for ( int i = 0; i < 6; i++ ) + for ( int i = 0; i < 8; i++ ) { const int index = i % 2; auto button = new QskPushButton( this ); - button->setCheckable( index != 0 ); + button->setCheckable( index != 0 && index < 6 ); //button->setSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Fixed ); - if ( i > 1 ) + if ( i > 1 && i < 6 ) { auto src = QStringLiteral( "image://shapes/" ) + graphics[ index ]; button->setGraphicSource( src ); } - - if ( i < 2 || i > 3 ) + if ( i < 2 || ( i > 3 && i < 6 ) ) { button->setText( texts[ index ] ); } + else if( i == 6 ) + { + button->setSkinStateFlag( QskAbstractButton::Outlined ); + button->setText( texts[ 2 ] ); + } + else if( i == 7 ) + { + button->setSkinStateFlag( QskAbstractButton::TextState ); + button->setText( texts[ 3 ] ); + } } } }; diff --git a/skins/material/QskMaterialSkin.cpp b/skins/material/QskMaterialSkin.cpp index 74a1bd6d..cdf68756 100644 --- a/skins/material/QskMaterialSkin.cpp +++ b/skins/material/QskMaterialSkin.cpp @@ -423,24 +423,52 @@ void Editor::setupPushButton() setBoxShape( Q::Panel, 100, Qt::RelativeSize ); - setColor( Q::Text, m_pal.onPrimary ); - - QColor c2( m_pal.onSurface ); - c2.setAlphaF( 0.38 ); - setColor( Q::Text | Q::Disabled, c2 ); + setAlignment( Q::Graphic | A::Alignment, Qt::AlignLeft ); + setPadding( Q::Graphic, 5 ); setFontRole( Q::Text, QskMaterialSkin::M3LabelLarge ); setAlignment( Q::Text, Qt::AlignCenter ); + + // normal buttons (i.e. Filled): + setGradient( Q::Panel, m_pal.primary ); QColor c1( m_pal.onSurface ); c1.setAlphaF( 0.12 ); setGradient( Q::Panel | Q::Disabled, c1 ); + setColor( Q::Text, m_pal.onPrimary ); + + QColor c2( m_pal.onSurface ); + c2.setAlphaF( 0.38 ); + setColor( Q::Text | Q::Disabled, c2 ); + + + // Outlined and Text: + + const QskStateCombination combination( QskStateCombination::Combination, Q::Outlined | Q::TextState ); + setGradient( Q::Panel, Qt::transparent, combination ); + + setBoxBorderMetrics( Q::Panel, 1, { QskStateCombination::CombinationNoState, Q::Outlined } ); + setBoxBorderColors( Q::Panel | Q::Outlined, m_pal.outline ); + + setGradient( Q::Panel | Q::Disabled, Qt::transparent, combination ); + setBoxBorderColors( Q::Panel | Q::Outlined | Q::Disabled, c1 ); + + QColor primary08( m_pal.primary ); + primary08.setAlphaF( 0.08 ); + setGradient( Q::Panel | Q::Outlined, primary08, + { QskStateCombination::Combination, + Q::Hovered | Q::Focused | Q::Pressed } ); + setGradient( Q::Panel | Q::TextState, primary08, + { QskStateCombination::Combination, + Q::Hovered | Q::Focused | Q::Pressed } ); + + setColor( Q::Text, m_pal.primary, combination ); + + setColor( Q::Text | Q::Disabled, c1, combination ); - setAlignment( Q::Graphic | A::Alignment, Qt::AlignLeft ); - setPadding( Q::Graphic, 5 ); setAnimation( Q::Panel | A::Color, qskDuration ); setAnimation( Q::Panel | A::Metric, qskDuration ); diff --git a/src/controls/QskAbstractButton.cpp b/src/controls/QskAbstractButton.cpp index 01e1a352..cb3f4ef9 100644 --- a/src/controls/QskAbstractButton.cpp +++ b/src/controls/QskAbstractButton.cpp @@ -12,6 +12,8 @@ // Flat is no state - we need to get rid of it. TODO ... QSK_SYSTEM_STATE( QskAbstractButton, Flat, QskAspect::FirstSystemState << 1 ) +QSK_SYSTEM_STATE( QskAbstractButton, Outlined, QskAspect::FirstSystemState << 2 ) +QSK_SYSTEM_STATE( QskAbstractButton, TextState, QskAspect::FirstSystemState << 3 ) QSK_SYSTEM_STATE( QskAbstractButton, Checked, QskAspect::LastSystemState >> 3 ) QSK_SYSTEM_STATE( QskAbstractButton, Pressed, QskAspect::LastSystemState >> 2 ) diff --git a/src/controls/QskAbstractButton.h b/src/controls/QskAbstractButton.h index 22c0661b..70ecb4f1 100644 --- a/src/controls/QskAbstractButton.h +++ b/src/controls/QskAbstractButton.h @@ -33,7 +33,7 @@ class QSK_EXPORT QskAbstractButton : public QskControl using Inherited = QskControl; public: - QSK_STATES( Flat, Checked, Pressed ) + QSK_STATES( Flat, Outlined, TextState, Checked, Pressed ) QskAbstractButton( QQuickItem* parent = nullptr ); ~QskAbstractButton() override;