qskinny/src/controls/QskBoundedRangeInput.h
2020-08-09 11:50:34 +02:00

71 lines
1.8 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_BOUNDED_RANGE_INPUT_H
#define QSK_BOUNDED_RANGE_INPUT_H
#include "QskBoundedInput.h"
#include "QskIntervalF.h"
class QSK_EXPORT QskBoundedRangeInput : public QskBoundedInput
{
Q_OBJECT
Q_PROPERTY( qreal lowerValue READ lowerValue
WRITE setLowerValue NOTIFY lowerValueChanged )
Q_PROPERTY( qreal upperValue READ upperValue
WRITE setUpperValue NOTIFY upperValueChanged )
Q_PROPERTY( QskIntervalF range READ range WRITE setRange
RESET resetRange NOTIFY rangeChanged )
using Inherited = QskBoundedInput;
public:
QskBoundedRangeInput( QQuickItem* parent = nullptr );
QskBoundedRangeInput( const QskIntervalF&, QQuickItem* parent = nullptr );
~QskBoundedRangeInput() override;
void setRange( qreal lowerValue, qreal upperValue );
void resetRange();
QskIntervalF range() const;
qreal lowerValue() const;
qreal upperValue() const;
// [0.0, 1.0]
qreal lowerValueAsRatio() const;
qreal upperValueAsRatio() const;
public Q_SLOTS:
void setRange( const QskIntervalF& );
void setLowerValue( qreal );
void setUpperValue( qreal );
void setLowerValueAsRatio( qreal );
void setUpperValueAsRatio( qreal );
Q_SIGNALS:
void rangeChanged( const QskIntervalF& );
void lowerValueChanged( qreal );
void upperValueChanged( qreal );
protected:
virtual QskIntervalF fixupRange( const QskIntervalF& ) const;
void alignInput() override;
private:
void setRangeInternal( const QskIntervalF& );
void adjustValue();
QskIntervalF m_range;
};
#endif