value to text conversion moved to QskSlider

This commit is contained in:
Uwe Rathmann 2024-10-23 09:17:28 +02:00
parent e3b87338c0
commit 4778feaaa2
4 changed files with 20 additions and 19 deletions

View File

@ -9,6 +9,8 @@
#include "QskIntervalF.h"
#include "QskEvent.h"
#include <qlocale.h>
QSK_SUBCONTROL( QskSlider, Panel )
QSK_SUBCONTROL( QskSlider, Groove )
QSK_SUBCONTROL( QskSlider, Fill )
@ -261,4 +263,12 @@ void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
update();
}
QString QskSlider::textFromValue( qreal value ) const
{
#if 1
// we could try to find the precision from the step size. TODO ...
return locale().toString( value, 'f', 1 );
#endif
}
#include "moc_QskSlider.cpp"

View File

@ -45,6 +45,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
qreal handlePosition() const; // [0,0, 1.0]
QskAspect::Variation effectiveVariation() const override;
QString textFromValue( qreal ) const override;
Q_SIGNALS:
void pressedChanged( bool );

View File

@ -112,7 +112,8 @@ QRectF QskSliderSkinlet::subControlRect( const QskSkinnable* skinnable,
return Inherited::subControlRect( skinnable, contentsRect, subControl );
}
int QskSliderSkinlet::sampleCount( const QskSkinnable* skinnable, QskAspect::Subcontrol subControl ) const
int QskSliderSkinlet::sampleCount( const QskSkinnable* skinnable,
QskAspect::Subcontrol subControl ) const
{
const auto slider = static_cast< const QskSlider* >( skinnable );
@ -127,7 +128,8 @@ int QskSliderSkinlet::sampleCount( const QskSkinnable* skinnable, QskAspect::Sub
}
}
QRectF QskSliderSkinlet::sampleRect( const QskSkinnable* skinnable, const QRectF& contentsRect,
QRectF QskSliderSkinlet::sampleRect(
const QskSkinnable* skinnable, const QRectF& contentsRect,
QskAspect::Subcontrol subControl, int index ) const
{
const auto slider = static_cast< const QskSlider* >( skinnable );
@ -223,8 +225,7 @@ QSGNode* QskSliderSkinlet::updateSubNode(
case LabelTextRole:
{
const auto text = labelValue( slider );
return updateTextNode( slider, node, text, Q::LabelText );
return updateTextNode( slider, node, slider->valueText(), Q::LabelText );
}
}
@ -395,12 +396,10 @@ QRectF QskSliderSkinlet::labelContainerRect(
auto size = slider->strutSizeHint( Q::LabelContainer );
if( size.isEmpty() )
{
return {};
}
return QRectF();
QFontMetricsF fm( slider->effectiveFont( Q::LabelText ) );
const auto w = qskHorizontalAdvance( fm, labelValue( slider ) );
const QFontMetricsF fm( slider->effectiveFont( Q::LabelText ) );
const auto w = qskHorizontalAdvance( fm, slider->valueText() );
const auto padding = slider->paddingHint( Q::LabelContainer );
const auto h = fm.height() + padding.top() + padding.bottom();
@ -423,9 +422,7 @@ QRectF QskSliderSkinlet::labelContainerRect(
y = hr.center().y() - size.height() / 2;
}
const QRectF r( x, y, size.width(), size.height() );
return r;
return QRectF( x, y, size.width(), size.height() );
}
QSizeF QskSliderSkinlet::sizeHint( const QskSkinnable* skinnable,
@ -447,9 +444,4 @@ QSizeF QskSliderSkinlet::sizeHint( const QskSkinnable* skinnable,
return hint;
}
QString QskSliderSkinlet::labelValue( const QskSlider* slider ) const
{
return QString::number( slider->value(), 'f', 1 );
}
#include "moc_QskSliderSkinlet.cpp"

View File

@ -66,8 +66,6 @@ class QSK_EXPORT QskSliderSkinlet : public QskSkinlet
QRectF labelContainerRect( const QskSlider*, const QRectF& ) const;
QRectF innerRect( const QskSlider*, const QRectF&, QskAspect::Subcontrol ) const;
QString labelValue( const QskSlider* ) const;
};
#endif