6#include "QskBoundedValueInput.h"
7#include "QskFunctions.h"
14 value = input->boundedValue( value );
16 if ( value > input->minimum() && value < input->maximum() )
18 if ( input->isSnapping() && input->stepSize() )
20 const auto step = input->stepSize();
22 value = qRound( value / step ) * step;
23 value = input->boundedValue( value );
30class QskBoundedValueInput::PrivateData
37QskBoundedValueInput::QskBoundedValueInput( QQuickItem* parent )
39 , m_data( new PrivateData )
43QskBoundedValueInput::~QskBoundedValueInput()
47void QskBoundedValueInput::setDecimals(
int decimals )
49 decimals = qBound( 0, decimals, DBL_MAX_10_EXP + DBL_DIG );
50 if ( decimals != m_data->decimals )
52 m_data->decimals = decimals;
59int QskBoundedValueInput::decimals()
const
61 return m_data->decimals;
64void QskBoundedValueInput::alignInput()
66 auto value = qskAlignedValue(
this, m_data->value );
67 value = fixupValue( value );
69 setValueInternal( value );
72qreal QskBoundedValueInput::fixupValue( qreal value )
const
77void QskBoundedValueInput::setValueAsRatio( qreal ratio )
79 ratio = qBound( 0.0, ratio, 1.0 );
80 setValue( minimum() + ratio * boundaryLength() );
83qreal QskBoundedValueInput::valueAsRatio()
const
85 return valueAsRatio( m_data->value );
88void QskBoundedValueInput::setValue( qreal value )
90 if ( isComponentComplete() )
92 value = qskAlignedValue(
this, value );
93 value = fixupValue( value );
96 setValueInternal( value );
99qreal QskBoundedValueInput::value()
const
101 return m_data->value;
104void QskBoundedValueInput::increment( qreal offset )
106 setValue( m_data->value + offset );
109void QskBoundedValueInput::setValueInternal( qreal value )
111 if ( !qskFuzzyCompare( value, m_data->value ) )
113 m_data->value = value;
114 Q_EMIT valueChanged( value );
120QString QskBoundedValueInput::valueText()
const
122 return textFromValue( value() );
125QString QskBoundedValueInput::textFromValue( qreal value )
const
127 return locale().toString( value,
'f', m_data->decimals );
130#include "moc_QskBoundedValueInput.cpp"