using built in QskHintAnimators

This commit is contained in:
Uwe Rathmann 2022-07-17 16:01:46 +02:00
parent 0a6ed7deb1
commit 0390166783
1 changed files with 4 additions and 43 deletions

View File

@ -5,7 +5,6 @@
#include "QskPushButton.h" #include "QskPushButton.h"
#include "QskAnimationHint.h" #include "QskAnimationHint.h"
#include "QskAnimator.h"
#include "QskAspect.h" #include "QskAspect.h"
#include "QskBoxShapeMetrics.h" #include "QskBoxShapeMetrics.h"
#include "QskGraphic.h" #include "QskGraphic.h"
@ -22,37 +21,6 @@ QSK_SUBCONTROL( QskPushButton, Ripple )
QSK_SUBCONTROL( QskPushButton, Text ) QSK_SUBCONTROL( QskPushButton, Text )
QSK_SUBCONTROL( QskPushButton, Graphic ) QSK_SUBCONTROL( QskPushButton, Graphic )
namespace
{
class ClickAnimator : public QskAnimator
{
public:
ClickAnimator()
: QskAnimator()
{
}
void setButton( QskPushButton* button )
{
m_button = button;
}
protected:
void advance( qreal value ) override
{
m_button->setMetric( QskPushButton::Ripple | QskAspect::Size, value );
}
void done() override
{
m_button->setMetric( QskPushButton::Ripple | QskAspect::Size, 0.0 );
}
private:
QskPushButton* m_button;
};
}
class QskPushButton::PrivateData class QskPushButton::PrivateData
{ {
public: public:
@ -83,9 +51,6 @@ class QskPushButton::PrivateData
QSizeF graphicSourceSize; QSizeF graphicSourceSize;
ClickAnimator clickAnimator;
qreal rippleSize = 0.0;
bool isCheckable : 1; bool isCheckable : 1;
bool isGraphicSourceDirty : 1; bool isGraphicSourceDirty : 1;
}; };
@ -314,17 +279,13 @@ void QskPushButton::mousePressEvent( QMouseEvent* event )
{ {
Inherited::mousePressEvent( event ); Inherited::mousePressEvent( event );
const auto hint = animationHint( Ripple | QskAspect::Color ); using A = QskAspect;
const auto hint = animationHint( Ripple | A::Color );
if( hint.isValid() ) if( hint.isValid() )
{ {
setSkinHint( Ripple | QskAspect::Metric | QskAspect::Position, event->pos() ); setSkinHint( Ripple | A::Metric | A::Position, event->pos() );
startTransition( Ripple | A::Metric | A::Size, hint, 0.0, 1.0 );
m_data->clickAnimator.setWindow( window() );
m_data->clickAnimator.setButton( this );
m_data->clickAnimator.setDuration( hint.duration );
m_data->clickAnimator.setEasingCurve( hint.type );
m_data->clickAnimator.start();
} }
} }