diff --git a/examples/automotive/Speedometer.cpp b/examples/automotive/Speedometer.cpp index b3f439f6..972221d0 100644 --- a/examples/automotive/Speedometer.cpp +++ b/examples/automotive/Speedometer.cpp @@ -8,44 +8,10 @@ QSK_SUBCONTROL( Speedometer, Labels ) QSK_SUBCONTROL( Speedometer, Needle ) Speedometer::Speedometer( QQuickItem* parent ) : - QskControl( parent ), - m_value( 0.0 ), - m_startAngle( -215 ), - m_endAngle( 35 ) + QskRangeControl( parent ) { } -float Speedometer::value() const -{ - return m_value; -} - -void Speedometer::setValue( float value ) -{ - m_value = value; - update(); -} - -float Speedometer::startAngle() const -{ - return m_startAngle; -} - -void Speedometer::setStartAngle( float startAngle ) -{ - m_startAngle = startAngle; -} - -float Speedometer::endAngle() const -{ - return m_endAngle; -} - -void Speedometer::setEndAngle( float endAngle ) -{ - m_endAngle = endAngle; -} - QVector< QString > Speedometer::labels() const { return m_labels; diff --git a/examples/automotive/Speedometer.h b/examples/automotive/Speedometer.h index 70b083df..198f6b27 100644 --- a/examples/automotive/Speedometer.h +++ b/examples/automotive/Speedometer.h @@ -1,9 +1,9 @@ #ifndef SPEEDOMETER_H #define SPEEDOMETER_H -#include +#include -class Speedometer : public QskControl +class Speedometer : public QskRangeControl { Q_OBJECT @@ -12,22 +12,10 @@ public: Speedometer( QQuickItem* parent = nullptr ); - float value() const; - void setValue( float value ); // angle; should be within a set range - - float startAngle() const; - void setStartAngle( float startAngle ); - - float endAngle() const; - void setEndAngle( float endAngle ); - QVector< QString > labels() const; void setLabels( const QVector< QString >& labels ); private: - float m_value; - float m_startAngle; - float m_endAngle; float m_labelsStep; QVector< QString > m_labels; }; diff --git a/examples/automotive/SpeedometerDisplay.cpp b/examples/automotive/SpeedometerDisplay.cpp index 86cfd28b..859bec74 100644 --- a/examples/automotive/SpeedometerDisplay.cpp +++ b/examples/automotive/SpeedometerDisplay.cpp @@ -29,11 +29,12 @@ SpeedometerDisplay::SpeedometerDisplay( QQuickItem *parent ) : m_box->setSpacing( 20 ); m_revCounter->setObjectName( QStringLiteral( "RevCounter" ) ); - int startAngle = 145, endAngle = 305, value = 200, numberLabels = 8; - m_revCounter->setStartAngle( startAngle ); - m_revCounter->setEndAngle( endAngle ); - m_revCounter->setValue( value ); + m_revCounter->setMinimum( 145 ); + m_revCounter->setMaximum( 305 ); + m_revCounter->setValue( 200 ); QVector< QString > revCounterLabels; + int numberLabels = 8; + revCounterLabels.reserve( numberLabels ); for ( int i = 0; i < numberLabels; ++i ) { @@ -43,14 +44,11 @@ SpeedometerDisplay::SpeedometerDisplay( QQuickItem *parent ) : m_revCounter->setLabels( revCounterLabels ); m_speedometer->setObjectName( QStringLiteral( "Speedometer" ) ); - value = 280; - numberLabels = 23; - startAngle = -215; - endAngle = 35; - m_speedometer->setStartAngle( startAngle ); - m_speedometer->setEndAngle( endAngle ); - m_speedometer->setValue( value ); + m_speedometer->setMinimum( -215 ); + m_speedometer->setMaximum( 35 ); + m_speedometer->setValue( -90 ); QVector< QString > speedometerLabels; + numberLabels = 23; speedometerLabels.reserve( numberLabels ); for ( int i = 0; i < numberLabels; ++i ) @@ -76,8 +74,8 @@ SpeedometerDisplay::SpeedometerDisplay( QQuickItem *parent ) : m_fuelGauge->setObjectName( QStringLiteral( "Fuel Gauge" ) ); - m_fuelGauge->setStartAngle( 195 ); - m_fuelGauge->setEndAngle( 345 ); + m_fuelGauge->setMinimum( 195 ); + m_fuelGauge->setMaximum( 345 ); m_fuelGauge->setValue( 330 ); QVector< QString > fuelGaugeLabels; diff --git a/examples/automotive/SpeedometerSkinlet.cpp b/examples/automotive/SpeedometerSkinlet.cpp index 8d4fee4b..086b6f47 100644 --- a/examples/automotive/SpeedometerSkinlet.cpp +++ b/examples/automotive/SpeedometerSkinlet.cpp @@ -112,8 +112,8 @@ QSGNode* SpeedometerSkinlet::updateLabelsNode( const Speedometer* speedometer, Q ticksNode = new TicksNode( Qt::white ); } - const float startAngle = speedometer->startAngle(); - const float endAngle = speedometer->endAngle(); + const auto startAngle = speedometer->minimum(); + const auto endAngle = speedometer->maximum(); const auto step = ( endAngle - startAngle ) / ( labelsCount - 1 ); auto geometry = ticksNode->geometry(); @@ -133,7 +133,7 @@ QSGNode* SpeedometerSkinlet::updateLabelsNode( const Speedometer* speedometer, Q const QMarginsF numbersMargins = speedometer->marginsHint( Speedometer::Labels | QskAspect::Margin ); QFontMetrics fontMetrics( speedometer->effectiveFont( Speedometer::Labels ) ); - float angle = startAngle; + auto angle = startAngle; // Create a series of tickmarks from minimum to maximum for( int i = 0; i < labelsCount; ++i, angle += step ) @@ -141,13 +141,13 @@ QSGNode* SpeedometerSkinlet::updateLabelsNode( const Speedometer* speedometer, Q qreal cosine = qCos( qDegreesToRadians( angle ) ); qreal sine = qSin( qDegreesToRadians( angle ) ); - float xStart = center.x() + radius * cosine; - float yStart = center.y() + radius * sine; + auto xStart = center.x() + radius * cosine; + auto yStart = center.y() + radius * sine; // ### skin hint for each of highlighted / normal marks qreal length = 15; - float xEnd = center.x() + ( radius - length ) * cosine; - float yEnd = center.y() + ( radius - length ) * sine; + auto xEnd = center.x() + ( radius - length ) * cosine; + auto yEnd = center.y() + ( radius - length ) * sine; vertexData[0].set( xStart, yStart ); vertexData[1].set( xEnd, yEnd ); @@ -161,13 +161,13 @@ QSGNode* SpeedometerSkinlet::updateLabelsNode( const Speedometer* speedometer, Q { const QString& text = labels.at( i ); - float w = fontMetrics.width( text ); - float h = fontMetrics.height(); - float adjustX = ( -0.5 * cosine - 0.5 ) * w; - float adjustY = ( -0.5 * sine - 0.5 ) * h; + auto w = fontMetrics.width( text ); + auto h = fontMetrics.height(); + auto adjustX = ( -0.5 * cosine - 0.5 ) * w; + auto adjustY = ( -0.5 * sine - 0.5 ) * h; - float numbersX = xEnd + ( -1 * numbersMargins.left() * cosine ) + adjustX; - float numbersY = yEnd + ( -1 * numbersMargins.top() * sine ) + adjustY; + auto numbersX = xEnd + ( -1 * numbersMargins.left() * cosine ) + adjustX; + auto numbersY = yEnd + ( -1 * numbersMargins.top() * sine ) + adjustY; QRectF numbersRect( numbersX, numbersY, w, h );