From 606a3e2ce2cec0747491a49066d5fca980d5f801 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 9 Aug 2020 10:45:48 +0200 Subject: [PATCH] support for QskIntervalF added --- src/controls/QskSkinHintTable.h | 17 +++++++++++++++++ src/controls/QskSkinnable.cpp | 16 ++++++++++++++-- src/controls/QskSkinnable.h | 4 ++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/controls/QskSkinHintTable.h b/src/controls/QskSkinHintTable.h index aeb2c07f..b3f5243a 100644 --- a/src/controls/QskSkinHintTable.h +++ b/src/controls/QskSkinHintTable.h @@ -13,6 +13,7 @@ #include "QskBoxShapeMetrics.h" #include "QskGradient.h" #include "QskMargins.h" +#include "QskIntervalF.h" #include #include @@ -53,6 +54,9 @@ class QSK_EXPORT QskSkinHintTable void setBoxBorderColors( QskAspect::Aspect, const QskBoxBorderColors& ); QskBoxBorderColors boxBorderColors( QskAspect::Aspect ) const; + void setInterval( QskAspect::Aspect, const QskIntervalF& ); + QskIntervalF interval( QskAspect::Aspect ) const; + void setAnimation( QskAspect::Aspect, QskAnimationHint animation ); QskAnimationHint animation( QskAspect::Aspect ) const; @@ -223,6 +227,19 @@ inline QskBoxBorderColors QskSkinHintTable::boxBorderColors( QskAspect::Aspect a return hint( aspect | Border | Color ).value< QskBoxBorderColors >(); } +inline void QskSkinHintTable::setInterval( + QskAspect::Aspect aspect, const QskIntervalF& interval ) +{ + using namespace QskAspect; + setHint( aspect | Metric, QVariant::fromValue( interval ) ); +} + +inline QskIntervalF QskSkinHintTable::interval( QskAspect::Aspect aspect ) const +{ + using namespace QskAspect; + return hint( aspect | Metric ).value< QskIntervalF >(); +} + inline QskAnimationHint QskSkinHintTable::animation( QskAspect::Aspect aspect ) const { aspect.setAnimator( true ); diff --git a/src/controls/QskSkinnable.cpp b/src/controls/QskSkinnable.cpp index 379c71a7..d904ad32 100644 --- a/src/controls/QskSkinnable.cpp +++ b/src/controls/QskSkinnable.cpp @@ -291,6 +291,18 @@ QskBoxBorderColors QskSkinnable::boxBorderColorsHint( return effectiveHint( aspect | Color | Border, status ).value< QskBoxBorderColors >(); } +void QskSkinnable::setIntervalHint( + QskAspect::Aspect aspect, const QskIntervalF& interval ) +{ + m_data->hintTable.setInterval( aspect, interval ); +} + +QskIntervalF QskSkinnable::intervalHint( + QskAspect::Aspect aspect, QskSkinHintStatus* status ) const +{ + return effectiveHint( aspect | QskAspect::Metric, status ).value< QskIntervalF >(); +} + void QskSkinnable::setFontRole( QskAspect::Aspect aspect, int role ) { m_data->hintTable.setFontRole( aspect, role ); @@ -739,7 +751,7 @@ QSizeF QskSkinnable::outerBoxSize( QRectF QskSkinnable::outerBox( QskAspect::Aspect aspect, const QRectF& innerBox ) const { - const QMarginsF m = qskEffectivePadding( this, aspect, innerBox.size(), false ); + const auto m = qskEffectivePadding( this, aspect, innerBox.size(), false ); return innerBox.marginsAdded( m ); } @@ -764,7 +776,7 @@ void QskSkinnable::startTransition( QskAspect::Aspect aspect, if ( animationHint.duration <= 0 || ( from == to ) ) return; - QskControl* control = this->owningControl(); + auto control = this->owningControl(); if ( control->window() == nullptr || !isTransitionAccepted( aspect ) ) return; diff --git a/src/controls/QskSkinnable.h b/src/controls/QskSkinnable.h index fadd7370..1465ff94 100644 --- a/src/controls/QskSkinnable.h +++ b/src/controls/QskSkinnable.h @@ -28,6 +28,7 @@ class QskBoxShapeMetrics; class QskBoxBorderMetrics; class QskBoxBorderColors; class QskGradient; +class QskIntervalF; class QskSkin; class QskSkinlet; @@ -94,6 +95,9 @@ class QSK_EXPORT QskSkinnable void setBoxBorderColorsHint( QskAspect::Aspect, const QskBoxBorderColors& ); QskBoxBorderColors boxBorderColorsHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; + void setIntervalHint( QskAspect::Aspect, const QskIntervalF & ); + QskIntervalF intervalHint( QskAspect::Aspect, QskSkinHintStatus* = nullptr ) const; + void setFlagHint( QskAspect::Aspect, int flag ); int flagHint( QskAspect::Aspect ) const;