diff --git a/examples/gallery/slider/CustomSlider.cpp b/examples/gallery/slider/CustomSlider.cpp index 0625931d..1dda5803 100644 --- a/examples/gallery/slider/CustomSlider.cpp +++ b/examples/gallery/slider/CustomSlider.cpp @@ -32,12 +32,14 @@ CustomSlider::CustomSlider( QQuickItem* parentItem ) ed.setStrutSize( Handle, 80, 80 ); ed.setColor( Handle, Grey800 ); - for ( auto state : { Pressed, Focused | Hovered, Hovered, Focused } ) - ed.setColor( Handle | state, Orange600 ); + ed.setColor( Handle | Pressed, Orange600 ); + + const auto mask = Focused | Hovered; + + ed.setColorForAllStateCombinations( mask, Handle, Orange600 ); + ed.setAnimationForAllStateCombinations( mask, Handle | QskAspect::Color, 300 ); ed.setAnimation( Handle | QskAspect::Color, 1000 ); - for ( auto state : { Focused | Hovered, Hovered, Focused } ) - ed.setAnimation( Handle | QskAspect::Color | state, 300 ); // using an individual skinlet, not known by the skin diff --git a/src/controls/QskSkinHintTableEditor.cpp b/src/controls/QskSkinHintTableEditor.cpp index e2099119..666651f0 100644 --- a/src/controls/QskSkinHintTableEditor.cpp +++ b/src/controls/QskSkinHintTableEditor.cpp @@ -126,33 +126,22 @@ QskSkinHintTable* QskSkinHintTableEditor::table() const } void QskSkinHintTableEditor::setHintForAllStateCombinations( - QskAspect aspect, const QVariant& hint, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect, const QVariant& hint ) { setHintStateMask( m_table, aspect, hint, QskAspect::NoState, stateMask ); } bool QskSkinHintTableEditor::removeHintForAllStateCombinations( - QskAspect aspect, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect ) { return removeHintStateMask( m_table, aspect, QskAspect::NoState, stateMask ); } -void QskSkinHintTableEditor::setFlagHintForAllStateCombinations( - QskAspect aspect, const QVariant& hint, QskAspect::State stateMask ) -{ - setHintForAllStateCombinations( aspect | QskAspect::Flag, hint, stateMask ); -} - -void QskSkinHintTableEditor::setMetricHintForAllStateCombinations( - QskAspect aspect, const QVariant& hint, QskAspect::State stateMask ) -{ - setHintForAllStateCombinations( aspect | QskAspect::Metric, hint, stateMask ); -} - -void QskSkinHintTableEditor::setColorHintForAllStateCombinations( - QskAspect aspect, const QVariant& hint, QskAspect::State stateMask ) -{ - setHintForAllStateCombinations( aspect | QskAspect::Color, hint, stateMask ); +void QskSkinHintTableEditor::setAnimationForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, QskAnimationHint hint ) +{ + aspect.setAnimator( true ); + setHintForAllStateCombinations( stateMask, aspect, QVariant::fromValue( hint ) ); } void QskSkinHintTableEditor::setFlag( QskAspect aspect, int flag ) @@ -165,6 +154,12 @@ int QskSkinHintTableEditor::flag( QskAspect aspect ) const return flagHint< int >( aspect ); } +void QskSkinHintTableEditor::setFlagForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, int flag ) +{ + setFlagHintForAllStateCombinations( stateMask, aspect, flag ); +} + void QskSkinHintTableEditor::setMetric( QskAspect aspect, qreal metric ) { setMetricHint( aspect, metric ); @@ -175,6 +170,12 @@ qreal QskSkinHintTableEditor::metric( QskAspect aspect ) const return metricHint< qreal >( aspect ); } +void QskSkinHintTableEditor::setMetricForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, qreal metric ) +{ + setMetricHintForAllStateCombinations( stateMask, aspect, metric ); +} + void QskSkinHintTableEditor::setColor( QskAspect aspect, Qt::GlobalColor color ) { setColorHint( aspect, QColor( color ) ); @@ -195,6 +196,24 @@ QColor QskSkinHintTableEditor::color( QskAspect aspect ) const return colorHint< QColor >( aspect ); } +void QskSkinHintTableEditor::setColorForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, Qt::GlobalColor color ) +{ + setColorHintForAllStateCombinations( stateMask, aspect, QColor( color ) ); +} + +void QskSkinHintTableEditor::setColorForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, QRgb rgb ) +{ + setColorHintForAllStateCombinations( stateMask, aspect, QColor::fromRgba( rgb ) ); +} + +void QskSkinHintTableEditor::setColorForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QColor& color ) +{ + setColorHintForAllStateCombinations( stateMask, aspect, color ); +} + void QskSkinHintTableEditor::setHGradient( QskAspect aspect, const QColor& color1, const QColor& color2 ) { @@ -213,9 +232,9 @@ void QskSkinHintTableEditor::setGradient( QskAspect aspect, const QskGradient& g } void QskSkinHintTableEditor::setGradientForAllStateCombinations( - QskAspect aspect, const QskGradient& gradient, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect, const QskGradient& gradient ) { - setColorHintForAllStateCombinations( aspect, QVariant::fromValue( gradient ), stateMask ); + setColorHintForAllStateCombinations( stateMask, aspect, QVariant::fromValue( gradient ) ); } QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const @@ -225,7 +244,7 @@ QskGradient QskSkinHintTableEditor::gradient( QskAspect aspect ) const void QskSkinHintTableEditor::setStrutSize( QskAspect aspect, const QSizeF& size ) { - setMetricHint( aspect | QskAspect::StrutSize, size ); + setMetricHint( aspectStrutSize( aspect ), size ); } void QskSkinHintTableEditor::setStrutSize( QskAspect aspect, qreal width, qreal height ) @@ -233,6 +252,12 @@ void QskSkinHintTableEditor::setStrutSize( QskAspect aspect, qreal width, qreal setMetricHint( aspectStrutSize( aspect ), QSizeF( width, height ) ); } +void QskSkinHintTableEditor::setStrutSizeForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QSizeF& size ) +{ + setMetricHintForAllStateCombinations( stateMask, aspectStrutSize( aspect ), size ); +} + void QskSkinHintTableEditor::removeStrutSize( QskAspect aspect ) { removeMetricHint( aspectStrutSize( aspect ) ); @@ -254,6 +279,12 @@ void QskSkinHintTableEditor::setMargin( QskAspect aspect, setMetricHint( aspectMargin( aspect ), QskMargins( left, top, right, bottom ) ); } +void QskSkinHintTableEditor::setMarginForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QskMargins& margins ) +{ + setMetricHintForAllStateCombinations( stateMask, aspectMargin( aspect ), margins ); +} + void QskSkinHintTableEditor::removeMargin( QskAspect aspect ) { removeMetricHint( aspectMargin( aspect ) ); @@ -275,6 +306,12 @@ void QskSkinHintTableEditor::setPadding( QskAspect aspect, setMetricHint( aspectPadding( aspect ), QskMargins( left, top, right, bottom ) ); } +void QskSkinHintTableEditor::setPaddingForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QskMargins& margins ) +{ + setMetricHintForAllStateCombinations( stateMask, aspectPadding( aspect ), margins ); +} + void QskSkinHintTableEditor::removePadding( QskAspect aspect ) { removeMetricHint( aspectPadding( aspect ) ); @@ -302,7 +339,7 @@ qreal QskSkinHintTableEditor::spacing( QskAspect aspect ) const void QskSkinHintTableEditor::setAlignment( QskAspect aspect, Qt::Alignment alignment ) { - setFlagHint( aspectAlignment( aspect ), static_cast< int >( alignment ) ); + setFlagHint( aspectAlignment( aspect ), static_cast< int >( alignment ) ); } void QskSkinHintTableEditor::removeAlignment( QskAspect aspect ) @@ -366,10 +403,10 @@ void QskSkinHintTableEditor::setBoxShape( } void QskSkinHintTableEditor::setBoxShapeForAllStateCombinations( - QskAspect aspect, const QskBoxShapeMetrics& shape, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect, const QskBoxShapeMetrics& shape ) { setMetricHintForAllStateCombinations( - aspectShape( aspect ), QVariant::fromValue( shape ), stateMask ); + stateMask, aspectShape( aspect ), QVariant::fromValue( shape ) ); } void QskSkinHintTableEditor::removeBoxShape( QskAspect aspect ) @@ -403,10 +440,10 @@ void QskSkinHintTableEditor::setBoxBorderMetrics( } void QskSkinHintTableEditor::setBoxBorderMetricsForAllStateCombinations( - QskAspect aspect, const QskBoxBorderMetrics& borderMetrics, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect, const QskBoxBorderMetrics& borderMetrics ) { - setMetricHintForAllStateCombinations( aspectBorder( aspect ), - QVariant::fromValue( borderMetrics ), stateMask ); + setMetricHintForAllStateCombinations( stateMask, + aspectBorder( aspect ), QVariant::fromValue( borderMetrics ) ); } void QskSkinHintTableEditor::removeBoxBorderMetric( QskAspect aspect ) @@ -426,10 +463,10 @@ void QskSkinHintTableEditor::setBoxBorderColors( } void QskSkinHintTableEditor::setBoxBorderColorsForAllStateCombinations( - QskAspect aspect, const QskBoxBorderColors& borderColors, QskAspect::State stateMask ) + QskAspect::State stateMask, QskAspect aspect, const QskBoxBorderColors& borderColors ) { - setColorHintForAllStateCombinations( aspectBorder( aspect ), - QVariant::fromValue( borderColors ), stateMask ); + setColorHintForAllStateCombinations( stateMask, aspectBorder( aspect ), + QVariant::fromValue( borderColors ) ); } void QskSkinHintTableEditor::setBoxBorderColors( QskAspect aspect, diff --git a/src/controls/QskSkinHintTableEditor.h b/src/controls/QskSkinHintTableEditor.h index 25c9ff32..4804ae02 100644 --- a/src/controls/QskSkinHintTableEditor.h +++ b/src/controls/QskSkinHintTableEditor.h @@ -31,10 +31,15 @@ class QSK_EXPORT QskSkinHintTableEditor void setHint( QskAspect, const QVariant& ); const QVariant& hint( QskAspect ) const; - void setHintForAllStateCombinations( QskAspect, const QVariant&, QskAspect::State ); + + void setHintForAllStateCombinations( + QskAspect::State, QskAspect, const QVariant& ); + + template< typename T > void setHintForAllStateCombinations( + QskAspect::State, QskAspect, const T& ); bool removeHint( QskAspect ); - bool removeHintForAllStateCombinations( QskAspect, QskAspect::State ); + bool removeHintForAllStateCombinations( QskAspect::State, QskAspect ); QVariant takeHint( QskAspect ); @@ -48,30 +53,55 @@ class QSK_EXPORT QskSkinHintTableEditor void setAnimation( QskAspect, QskAnimationHint ); QskAnimationHint animation( QskAspect ) const; - // flag/metric/color + void setAnimationForAllStateCombinations( + QskAspect::State, QskAspect, QskAnimationHint ); + + // flag void setFlagHint( QskAspect, const QVariant& ); - void setFlagHintForAllStateCombinations( QskAspect, const QVariant&, QskAspect::State ); - void removeFlagHint( QskAspect ); - QVariant flagHint( QskAspect ) const; - template< typename T > void setFlagHint( QskAspect, const T& ); + + void setFlagHintForAllStateCombinations( + QskAspect::State, QskAspect, const QVariant& ); + + template< typename T > void setFlagHintForAllStateCombinations( + QskAspect::State, QskAspect, const T& ); + + void removeFlagHint( QskAspect ); + + QVariant flagHint( QskAspect ) const; template< typename T > T flagHint( QskAspect ) const; - void setMetricHint( QskAspect, const QVariant& ); - void setMetricHintForAllStateCombinations( QskAspect, const QVariant&, QskAspect::State ); - void removeMetricHint( QskAspect ); - QVariant metricHint( QskAspect ) const; + // metric + void setMetricHint( QskAspect, const QVariant& ); template< typename T > void setMetricHint( QskAspect, const T& ); + + void setMetricHintForAllStateCombinations( + QskAspect::State, QskAspect, const QVariant& ); + + template< typename T > void setMetricHintForAllStateCombinations( + QskAspect::State, QskAspect, const T& ); + + void removeMetricHint( QskAspect ); + + QVariant metricHint( QskAspect ) const; template< typename T > T metricHint( QskAspect ) const; - void setColorHint( QskAspect, const QVariant& ); - void setColorHintForAllStateCombinations( QskAspect, const QVariant&, QskAspect::State ); - void removeColorHint( QskAspect ); - QVariant colorHint( QskAspect ) const; + // color + void setColorHint( QskAspect, const QVariant& ); template< typename T > void setColorHint( QskAspect, const T& ); + + void setColorHintForAllStateCombinations( + QskAspect::State, QskAspect, const QVariant& ); + + template< typename T > void setColorHintForAllStateCombinations( + QskAspect::State, QskAspect, const T& ); + + void removeColorHint( QskAspect ); + + QVariant colorHint( QskAspect ) const; template< typename T > T colorHint( QskAspect ) const; // type specific @@ -79,74 +109,133 @@ class QSK_EXPORT QskSkinHintTableEditor void setFlag( QskAspect, int ); int flag( QskAspect ) const; + void setFlagForAllStateCombinations( QskAspect::State, QskAspect, int ); + void setMetric( QskAspect, qreal metric ); qreal metric( QskAspect ) const; + void setMetricForAllStateCombinations( QskAspect::State, QskAspect, qreal ); + void setColor( QskAspect, Qt::GlobalColor ); void setColor( QskAspect, QRgb ); void setColor( QskAspect, const QColor& ); + + void setColorForAllStateCombinations( QskAspect::State, QskAspect, Qt::GlobalColor ); + void setColorForAllStateCombinations( QskAspect::State, QskAspect, QRgb ); + void setColorForAllStateCombinations( QskAspect::State, QskAspect, const QColor& ); + QColor color( QskAspect ) const; + // gradients + void setHGradient( QskAspect, const QColor&, const QColor& ); void setVGradient( QskAspect, const QColor&, const QColor& ); void setGradient( QskAspect, const QskGradient& ); - void setGradientForAllStateCombinations( QskAspect, const QskGradient&, QskAspect::State ); + + void setGradientForAllStateCombinations( + QskAspect::State, QskAspect, const QskGradient& ); + QskGradient gradient( QskAspect ) const; + // strutSize + void setStrutSize( QskAspect, const QSizeF& ); void setStrutSize( QskAspect, qreal width, qreal height ); + void removeStrutSize( QskAspect ); + + void setStrutSizeForAllStateCombinations( + QskAspect::State, QskAspect, const QSizeF& ); + QSizeF strutSize( QskAspect ) const; + // margin + void setMargin( QskAspect, const QskMargins& ); - void setMargin( QskAspect, - qreal left, qreal top, qreal right, qreal bottom ); + void setMargin( QskAspect, qreal left, qreal top, qreal right, qreal bottom ); + + void setMarginForAllStateCombinations( + QskAspect::State, QskAspect, const QskMargins& ); + void removeMargin( QskAspect ); + QskMargins margin( QskAspect ) const; + // padding + void setPadding( QskAspect, const QskMargins& ); - void setPadding( QskAspect, - qreal left, qreal top, qreal right, qreal bottom ); + void setPadding( QskAspect, qreal left, qreal top, qreal right, qreal bottom ); + + void setPaddingForAllStateCombinations( + QskAspect::State, QskAspect, const QskMargins& ); + void removePadding( QskAspect ); + QskMargins padding( QskAspect ) const; + // spacing + void setSpacing( QskAspect, qreal ); void removeSpacing( QskAspect ); qreal spacing( QskAspect ) const; + // alignment + void setAlignment( QskAspect, Qt::Alignment ); void removeAlignment( QskAspect ); Qt::Alignment alignment( QskAspect ) const; + // fontRole + void setFontRole( QskAspect, int ); void removeFontRole( QskAspect ); int fontRole( QskAspect ) const; + // graphicRole + void setGraphicRole( QskAspect, int ); void removeGraphicRole( QskAspect ); int graphicRole( QskAspect ) const; + // boxShape + void setBoxShape( QskAspect, qreal radius, Qt::SizeMode = Qt::AbsoluteSize ); void setBoxShape( QskAspect, qreal topLeft, qreal topRight, qreal bottomLeft, qreal bottomRight, Qt::SizeMode = Qt::AbsoluteSize ); void setBoxShape( QskAspect, const QskBoxShapeMetrics& ); - void setBoxShapeForAllStateCombinations( QskAspect, const QskBoxShapeMetrics&, QskAspect::State ); + + void setBoxShapeForAllStateCombinations( + QskAspect::State, QskAspect, const QskBoxShapeMetrics& ); + void removeBoxShape( QskAspect ); + QskBoxShapeMetrics boxShape( QskAspect ) const; + // boxBorderMetrics + void setBoxBorderMetrics( QskAspect, qreal borderWidth, Qt::SizeMode = Qt::AbsoluteSize ); + void setBoxBorderMetrics( QskAspect, qreal left, qreal top, qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize ); + void setBoxBorderMetrics( QskAspect, const QskBoxBorderMetrics& ); - void setBoxBorderMetricsForAllStateCombinations( QskAspect, const QskBoxBorderMetrics&, QskAspect::State ); + void setBoxBorderMetricsForAllStateCombinations( + QskAspect::State, QskAspect, const QskBoxBorderMetrics& ); + void removeBoxBorderMetric( QskAspect ); + QskBoxBorderMetrics boxBorderMetrics( QskAspect ) const; + // boxBorderColors + void setBoxBorderColors( QskAspect, const QskBoxBorderColors& ); - void setBoxBorderColorsForAllStateCombinations( QskAspect, const QskBoxBorderColors&, QskAspect::State ); + void setBoxBorderColorsForAllStateCombinations( + QskAspect::State, QskAspect, const QskBoxBorderColors& ); + void setBoxBorderColors( QskAspect, const QColor& left, const QColor& top, const QColor& right, const QColor& bottom ); + void removeBoxBorderColors( QskAspect ); QskBoxBorderColors boxBorderColors( QskAspect ) const; @@ -193,6 +282,13 @@ inline bool QskSkinHintTableEditor::hasHint( QskAspect aspect ) const return m_table->hasHint( aspect ); } +template< typename T > +void QskSkinHintTableEditor::setHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const T& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect, QVariant::fromValue( hint ) ); +} + // --- flag --- inline void QskSkinHintTableEditor::setFlagHint( QskAspect aspect, const QVariant& hint ) @@ -206,6 +302,19 @@ inline void QskSkinHintTableEditor::setFlagHint( QskAspect aspect, const T& hint setHint( aspect | QskAspect::Flag, hint ); } +inline void QskSkinHintTableEditor::setFlagHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QVariant& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Flag, hint ); +} + +template< typename T > +inline void QskSkinHintTableEditor::setFlagHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const T& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Flag, hint ); +} + inline void QskSkinHintTableEditor::removeFlagHint( QskAspect aspect ) { removeHint( aspect | QskAspect::Flag ); @@ -235,6 +344,19 @@ inline void QskSkinHintTableEditor::setMetricHint( QskAspect aspect, const T& hi setHint( aspect | QskAspect::Metric, hint ); } +inline void QskSkinHintTableEditor::setMetricHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QVariant& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Metric, hint ); +} + +template< typename T > +inline void QskSkinHintTableEditor::setMetricHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const T& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Metric, hint ); +} + inline void QskSkinHintTableEditor::removeMetricHint( QskAspect aspect ) { removeHint( aspect | QskAspect::Metric ); @@ -264,6 +386,19 @@ inline void QskSkinHintTableEditor::setColorHint( QskAspect aspect, const T& hin setHint( aspect | QskAspect::Color, hint ); } +inline void QskSkinHintTableEditor::setColorHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const QVariant& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Color, hint ); +} + +template< typename T > +inline void QskSkinHintTableEditor::setColorHintForAllStateCombinations( + QskAspect::State stateMask, QskAspect aspect, const T& hint ) +{ + setHintForAllStateCombinations( stateMask, aspect | QskAspect::Color, hint ); +} + inline void QskSkinHintTableEditor::removeColorHint( QskAspect aspect ) { removeHint( aspect | QskAspect::Color );