diff --git a/src/controls/QskBox.cpp b/src/controls/QskBox.cpp index cfa1ea27..8a1d1170 100644 --- a/src/controls/QskBox.cpp +++ b/src/controls/QskBox.cpp @@ -55,7 +55,7 @@ void QskBox::setPadding( const QMarginsF& padding ) if ( pd != this->padding() ) { - const auto subControl = effectiveSubcontrol( QskBox::Panel ); + const auto subControl = effectiveSubcontrol( Panel ); setPaddingHint( subControl, pd ); resetImplicitSize(); @@ -69,8 +69,7 @@ void QskBox::setPadding( const QMarginsF& padding ) void QskBox::resetPadding() { - static auto aspectPadding = QskBox::Panel | QskAspect::Metric | QskAspect::Padding; - if ( resetHint( aspectPadding ) ) + if ( resetPaddingHint( Panel ) ) { resetImplicitSize(); @@ -83,7 +82,7 @@ void QskBox::resetPadding() QMarginsF QskBox::padding() const { - return paddingHint( QskBox::Panel ); + return paddingHint( Panel ); } QRectF QskBox::layoutRectForSize( const QSizeF& size ) const diff --git a/src/controls/QskControl.cpp b/src/controls/QskControl.cpp index 32179ce6..4463acc2 100644 --- a/src/controls/QskControl.cpp +++ b/src/controls/QskControl.cpp @@ -158,7 +158,7 @@ void QskControl::setBackground( const QskGradient& gradient ) void QskControl::resetBackground() { - if ( resetHint( QskAspect::Control | QskAspect::Color ) ) + if ( resetColor( QskAspect::Control ) ) { update(); Q_EMIT backgroundChanged(); @@ -203,7 +203,7 @@ void QskControl::resetMargins() { using namespace QskAspect; - if ( resetHint( Control | Metric | Margin ) ) + if ( resetMarginHint( Control ) ) { resetImplicitSize(); diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 9e7fdf40..95eeb385 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -211,6 +211,11 @@ void QskSkinnable::setAlignmentHint( setFlagHint( aspect | QskAspect::Alignment, alignment ); } +bool QskSkinnable::resetAlignmentHint( QskAspect::Aspect aspect ) +{ + return resetFlagHint( aspect | QskAspect::Alignment ); +} + void QskSkinnable::setColor( QskAspect::Aspect aspect, const QColor& color ) { m_data->hintTable.setColor( aspect, color ); @@ -251,11 +256,17 @@ void QskSkinnable::setMarginHint( QskAspect::Aspect aspect, const QMarginsF& mar m_data->hintTable.setMargin( aspect, margins ); } +bool QskSkinnable::resetMarginHint( QskAspect::Aspect aspect ) +{ + const auto asp = aspect | QskAspect::Metric | QskAspect::Margin; + return resetHint( asp ); +} + QMarginsF QskSkinnable::marginHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - const auto aspectMargin = aspect | QskAspect::Metric | QskAspect::Margin; - return effectiveHint( aspectMargin, status ).value< QskMargins >(); + const auto asp = aspect | QskAspect::Metric | QskAspect::Margin; + return effectiveHint( asp, status ).value< QskMargins >(); } void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, qreal padding ) @@ -268,11 +279,17 @@ void QskSkinnable::setPaddingHint( QskAspect::Aspect aspect, const QMarginsF& pa m_data->hintTable.setPadding( aspect, padding ); } +bool QskSkinnable::resetPaddingHint( QskAspect::Aspect aspect ) +{ + const auto asp = aspect | QskAspect::Metric | QskAspect::Padding; + return resetHint( asp ); +} + QMarginsF QskSkinnable::paddingHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - const auto aspectPadding = aspect | QskAspect::Metric | QskAspect::Padding; - return effectiveHint( aspectPadding, status ).value< QskMargins >(); + const auto asp = aspect | QskAspect::Metric | QskAspect::Padding; + return effectiveHint( asp, status ).value< QskMargins >(); } void QskSkinnable::setGradientHint( @@ -293,11 +310,17 @@ void QskSkinnable::setBoxShapeHint( m_data->hintTable.setBoxShape( aspect, shape ); } +bool QskSkinnable::resetBoxShapeHint( QskAspect::Aspect aspect ) +{ + const auto asp = aspect | QskAspect::Metric | QskAspect::Shape; + return resetHint( asp ); +} + QskBoxShapeMetrics QskSkinnable::boxShapeHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - using namespace QskAspect; - return effectiveHint( aspect | Metric | Shape, status ).value< QskBoxShapeMetrics >(); + const auto asp = aspect | QskAspect::Metric | QskAspect::Shape; + return effectiveHint( asp, status ).value< QskBoxShapeMetrics >(); } void QskSkinnable::setBoxBorderMetricsHint( @@ -306,11 +329,17 @@ void QskSkinnable::setBoxBorderMetricsHint( m_data->hintTable.setBoxBorder( aspect, border ); } +bool QskSkinnable::resetBoxBorderMetricsHint( QskAspect::Aspect aspect ) +{ + const auto asp = aspect | QskAspect::Metric | QskAspect::Border; + return resetHint( asp ); +} + QskBoxBorderMetrics QskSkinnable::boxBorderMetricsHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - using namespace QskAspect; - return effectiveHint( aspect | Metric | Border, status ).value< QskBoxBorderMetrics >(); + const auto asp = aspect | QskAspect::Metric | QskAspect::Border; + return effectiveHint( asp, status ).value< QskBoxBorderMetrics >(); } void QskSkinnable::setBoxBorderColorsHint( @@ -319,11 +348,17 @@ void QskSkinnable::setBoxBorderColorsHint( m_data->hintTable.setBoxBorderColors( aspect, colors ); } +bool QskSkinnable::resetBoxBorderColorsHint( QskAspect::Aspect aspect ) +{ + const auto asp = aspect | QskAspect::Color | QskAspect::Border; + return resetHint( asp ); +} + QskBoxBorderColors QskSkinnable::boxBorderColorsHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - using namespace QskAspect; - return effectiveHint( aspect | Color | Border, status ).value< QskBoxBorderColors >(); + const auto asp = aspect | QskAspect::Color | QskAspect::Border; + return effectiveHint( asp, status ).value< QskBoxBorderColors >(); } void QskSkinnable::setIntervalHint( @@ -335,7 +370,8 @@ void QskSkinnable::setIntervalHint( QskIntervalF QskSkinnable::intervalHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { - return effectiveHint( aspect | QskAspect::Metric, status ).value< QskIntervalF >(); + const auto hint = effectiveHint( aspect | QskAspect::Metric, status ); + return hint.value< QskIntervalF >(); } void QskSkinnable::setSpacingHint( QskAspect::Aspect aspect, qreal spacing ) @@ -343,6 +379,11 @@ void QskSkinnable::setSpacingHint( QskAspect::Aspect aspect, qreal spacing ) m_data->hintTable.setSpacing( aspect, spacing ); } +bool QskSkinnable::resetSpacingHint( QskAspect::Aspect aspect ) +{ + return resetMetric( aspect | QskAspect::Spacing ); +} + qreal QskSkinnable::spacingHint( QskAspect::Aspect aspect, QskSkinHintStatus* status ) const { @@ -717,8 +758,6 @@ const char* QskSkinnable::skinStateAsPrintable( QskAspect::State state ) const static inline QMarginsF qskEffectivePadding( const QskSkinnable* skinnable, QskAspect::Aspect aspect, const QSizeF& size, bool inner ) { - using namespace QskAspect; - const auto shape = skinnable->boxShapeHint( aspect ).toAbsolute( size ); const auto borderMetrics = skinnable->boxBorderMetricsHint( aspect ); diff --git a/src/controls/QskSkinnable.h b/src/controls/QskSkinnable.h index ae1fd12a..b5c679ef 100644 --- a/src/controls/QskSkinnable.h +++ b/src/controls/QskSkinnable.h @@ -79,45 +79,53 @@ class QSK_EXPORT QskSkinnable void setColor( QskAspect::Aspect, Qt::GlobalColor ); void setColor( QskAspect::Aspect, QRgb ); void setColor( QskAspect::Aspect, const QColor& ); - + bool resetColor( QskAspect::Aspect ); QColor color( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setMetric( QskAspect::Aspect, qreal metric ); + bool resetMetric( QskAspect::Aspect ); qreal metric( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; + void setFlagHint( QskAspect::Aspect, int flag ); + bool resetFlagHint( QskAspect::Aspect ); + int flagHint( QskAspect::Aspect ) const; + template< typename T > T flagHint( QskAspect::Aspect, T = T() ) const; + void setMarginHint( QskAspect::Aspect, qreal ); void setMarginHint( QskAspect::Aspect, const QMarginsF& ); + bool resetMarginHint( QskAspect::Aspect ); QMarginsF marginHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setPaddingHint( QskAspect::Aspect, qreal ); void setPaddingHint( QskAspect::Aspect, const QMarginsF& ); + bool resetPaddingHint( QskAspect::Aspect ); QMarginsF paddingHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setGradientHint( QskAspect::Aspect, const QskGradient& ); QskGradient gradientHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setBoxShapeHint( QskAspect::Aspect, const QskBoxShapeMetrics& ); + bool resetBoxShapeHint( QskAspect::Aspect ); QskBoxShapeMetrics boxShapeHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setBoxBorderMetricsHint( QskAspect::Aspect, const QskBoxBorderMetrics& ); + bool resetBoxBorderMetricsHint( QskAspect::Aspect ); QskBoxBorderMetrics boxBorderMetricsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setBoxBorderColorsHint( QskAspect::Aspect, const QskBoxBorderColors& ); + bool resetBoxBorderColorsHint( QskAspect::Aspect ); QskBoxBorderColors boxBorderColorsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setIntervalHint( QskAspect::Aspect, const QskIntervalF& ); QskIntervalF intervalHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; void setSpacingHint( QskAspect::Aspect, qreal ); + bool resetSpacingHint( QskAspect::Aspect ); qreal spacingHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; - void setFlagHint( QskAspect::Aspect, int flag ); - int flagHint( QskAspect::Aspect ) const; - - template< typename T > T flagHint( QskAspect::Aspect, T = T() ) const; - void setAlignmentHint( QskAspect::Aspect, Qt::Alignment ); + bool resetAlignmentHint( QskAspect::Aspect ); Qt::Alignment alignmentHint( QskAspect::Aspect, Qt::Alignment = Qt::Alignment() ) const; void setFontRole( QskAspect::Aspect, int role ); @@ -213,4 +221,19 @@ inline QskAspect::Placement QskSkinnable::effectivePlacement() const return QskAspect::NoPlacement; } +inline bool QskSkinnable::resetColor( QskAspect::Aspect aspect ) +{ + return resetHint( aspect | QskAspect::Color ); +} + +inline bool QskSkinnable::resetMetric( QskAspect::Aspect aspect ) +{ + return resetHint( aspect | QskAspect::Metric ); +} + +inline bool QskSkinnable::resetFlagHint( QskAspect::Aspect aspect ) +{ + return resetHint( aspect | QskAspect::Flag ); +} + #endif