using intervals

This commit is contained in:
Uwe Rathmann 2020-07-22 11:49:28 +02:00
parent e461b46013
commit 05c4be184f
2 changed files with 47 additions and 0 deletions

View File

@ -5,6 +5,7 @@
#include "QskRangeControl.h" #include "QskRangeControl.h"
#include "QskFunctions.h" #include "QskFunctions.h"
#include "QskIntervalF.h"
QSK_SYSTEM_STATE( QskRangeControl, ReadOnly, ( QskAspect::FirstSystemState << 1 ) ) QSK_SYSTEM_STATE( QskRangeControl, ReadOnly, ( QskAspect::FirstSystemState << 1 ) )
@ -92,6 +93,46 @@ qreal QskRangeControl::maximum() const
return m_data->maximum; return m_data->maximum;
} }
void QskRangeControl::setInterval( qreal min, qreal max )
{
if ( max < min )
max = min;
if ( min == m_data->minimum && max == m_data->maximum )
return;
const auto oldMin = m_data->minimum;
const auto oldMax = m_data->maximum;
m_data->minimum = min;
m_data->maximum = max;
if ( isComponentComplete() )
adjustRangeAndValue( false );
if ( m_data->minimum != oldMin )
Q_EMIT minimumChanged( m_data->minimum );
if ( m_data->maximum != oldMax )
Q_EMIT maximumChanged( m_data->maximum );
const auto newRange = range();
if ( newRange != oldMax - oldMin )
Q_EMIT rangeChanged( newRange );
update();
}
void QskRangeControl::setInterval( const QskIntervalF& interval )
{
setInterval( interval.lowerBound(), interval.upperBound() );
}
QskIntervalF QskRangeControl::interval() const
{
return QskIntervalF( m_data->minimum, m_data->maximum );
}
void QskRangeControl::adjustRangeAndValue( bool increasing ) void QskRangeControl::adjustRangeAndValue( bool increasing )
{ {
if ( m_data->maximum < m_data->minimum ) if ( m_data->maximum < m_data->minimum )

View File

@ -8,6 +8,8 @@
#include "QskControl.h" #include "QskControl.h"
class QskIntervalF;
class QSK_EXPORT QskRangeControl : public QskControl class QSK_EXPORT QskRangeControl : public QskControl
{ {
Q_OBJECT Q_OBJECT
@ -36,6 +38,9 @@ class QSK_EXPORT QskRangeControl : public QskControl
qreal minimum() const; qreal minimum() const;
qreal maximum() const; qreal maximum() const;
void setInterval( qreal min, qreal max );
QskIntervalF interval() const;
qreal range() const; qreal range() const;
qreal position() const; qreal position() const;
@ -54,6 +59,7 @@ class QSK_EXPORT QskRangeControl : public QskControl
void setValue( qreal ); void setValue( qreal );
void setMinimum( qreal ); void setMinimum( qreal );
void setMaximum( qreal ); void setMaximum( qreal );
void setInterval( const QskIntervalF& );
void setStepSize( qreal ); void setStepSize( qreal );
void setPageSize( int ); void setPageSize( int );