handlePosition property added

This commit is contained in:
Uwe Rathmann 2020-09-23 12:43:46 +02:00
parent 4ebd07390f
commit b3d8598965
2 changed files with 18 additions and 10 deletions

View File

@ -56,8 +56,8 @@ QskSlider::QskSlider( Qt::Orientation orientation, QQuickItem* parent )
else else
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum ); initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
connect( this, &QskSlider::boundariesChanged, [ this ]() { updatePosition(); } ); connect( this, &QskSlider::boundariesChanged, this, &QskSlider::moveHandle );
connect( this, &QskSlider::valueChanged, [ this ]() { updatePosition(); } ); connect( this, &QskSlider::valueChanged, this, &QskSlider::moveHandle );
} }
QskSlider::~QskSlider() QskSlider::~QskSlider()
@ -186,7 +186,7 @@ void QskSlider::mouseMoveEvent( QMouseEvent* event )
} }
else else
{ {
updatePosition( newValue, QskAnimationHint() ); moveHandleTo( newValue, QskAnimationHint() );
} }
} }
@ -224,7 +224,7 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
{ {
if ( !m_data->tracking ) if ( !m_data->tracking )
{ {
const auto pos = metric( qskAspectPosition( this ) ); const auto pos = handlePosition();
setValue( valueFromRatio( pos ) ); setValue( valueFromRatio( pos ) );
} }
} }
@ -233,13 +233,18 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
Q_EMIT pressedChanged( false ); Q_EMIT pressedChanged( false );
} }
void QskSlider::updatePosition() qreal QskSlider::handlePosition() const
{ {
const auto hint = animation( qskAspectPosition( this ) | skinState() ); return metric( qskAspectPosition( this ) );
updatePosition( value(), hint );
} }
void QskSlider::updatePosition( qreal value, const QskAnimationHint& hint ) void QskSlider::moveHandle()
{
const auto hint = animation( qskAspectPosition( this ) | skinState() );
moveHandleTo( value(), hint );
}
void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
{ {
using namespace QskAspect; using namespace QskAspect;

View File

@ -21,6 +21,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
WRITE setOrientation NOTIFY orientationChanged ) WRITE setOrientation NOTIFY orientationChanged )
Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged ) Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged )
Q_PROPERTY( qreal handlePosition READ handlePosition )
using Inherited = QskBoundedValueInput; using Inherited = QskBoundedValueInput;
@ -41,6 +42,8 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void setTracking( bool ); void setTracking( bool );
bool isTracking() const; bool isTracking() const;
qreal handlePosition() const; // [0,0, 1.0]
QskAspect::Placement effectivePlacement() const override; QskAspect::Placement effectivePlacement() const override;
Q_SIGNALS: Q_SIGNALS:
@ -61,8 +64,8 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void aboutToShow() override; void aboutToShow() override;
private: private:
void updatePosition(); void moveHandle();
void updatePosition( qreal value, const QskAnimationHint& ); void moveHandleTo( qreal value, const QskAnimationHint& );
class PrivateData; class PrivateData;
std::unique_ptr< PrivateData > m_data; std::unique_ptr< PrivateData > m_data;