subcontrol renamed from Knob to Handle

This commit is contained in:
Uwe Rathmann 2024-11-28 15:47:20 +01:00
parent 7a180cfe5e
commit 9d13cd1edf
4 changed files with 28 additions and 32 deletions

View File

@ -18,7 +18,7 @@ QSK_SUBCONTROL( LightDisplay, Tickmarks )
QSK_SUBCONTROL( LightDisplay, ValueText ) QSK_SUBCONTROL( LightDisplay, ValueText )
QSK_SUBCONTROL( LightDisplay, LeftLabel ) QSK_SUBCONTROL( LightDisplay, LeftLabel )
QSK_SUBCONTROL( LightDisplay, RightLabel ) QSK_SUBCONTROL( LightDisplay, RightLabel )
QSK_SUBCONTROL( LightDisplay, Knob ) QSK_SUBCONTROL( LightDisplay, Handle )
QSK_STATE( LightDisplay, Pressed, ( QskAspect::FirstUserState << 1 ) ) QSK_STATE( LightDisplay, Pressed, ( QskAspect::FirstUserState << 1 ) )
@ -53,16 +53,14 @@ bool LightDisplay::isPressed() const
void LightDisplay::mousePressEvent( QMouseEvent* event ) void LightDisplay::mousePressEvent( QMouseEvent* event )
{ {
QRectF handleRect = subControlRect( LightDisplay::Knob ); const auto handleRect = subControlRect( LightDisplay::Handle );
if ( handleRect.contains( event->pos() ) ) if ( handleRect.contains( event->pos() ) )
{ {
setSkinStateFlag( Pressed ); setSkinStateFlag( Pressed );
return;
} }
else
{ Inherited::mousePressEvent( event );
QskBoundedValueInput::mousePressEvent( event );
}
} }
void LightDisplay::mouseMoveEvent( QMouseEvent* event ) void LightDisplay::mouseMoveEvent( QMouseEvent* event )
@ -73,19 +71,17 @@ void LightDisplay::mouseMoveEvent( QMouseEvent* event )
const auto mousePos = qskMousePosition( event ); const auto mousePos = qskMousePosition( event );
const auto rect = subControlRect( ColdAndWarmArc ); const auto rect = subControlRect( ColdAndWarmArc );
bool arcContainsMousePos = arcContainsPoint( rect, mousePos ); if( !arcContainsPoint( rect, mousePos ) )
if( !arcContainsMousePos )
{ {
setSkinStateFlag( Pressed, false ); setSkinStateFlag( Pressed, false );
return; return;
} }
const auto metrics = arcMetricsHint( ColdAndWarmArc ); const auto metrics = arcMetricsHint( ColdAndWarmArc );
qreal angle = angleFromPoint( rect, mousePos );
const int tolerance = 20; const int tolerance = 20;
auto angle = angleFromPoint( rect, mousePos );
if( !angleInRange( metrics, angle ) ) if( !angleInRange( metrics, angle ) )
{ {
// we're slightly outside the range, but don't want to give up // we're slightly outside the range, but don't want to give up
@ -101,7 +97,7 @@ void LightDisplay::mouseMoveEvent( QMouseEvent* event )
} }
} }
qreal ratio = ( metrics.spanAngle() - angle ) / metrics.spanAngle(); const auto ratio = ( metrics.spanAngle() - angle ) / metrics.spanAngle();
setValueAsRatio( ratio ); setValueAsRatio( ratio );
} }
@ -112,12 +108,11 @@ void LightDisplay::mouseReleaseEvent( QMouseEvent* /*event*/ )
qreal LightDisplay::angleFromPoint( const QRectF& rect, const QPointF& point ) const qreal LightDisplay::angleFromPoint( const QRectF& rect, const QPointF& point ) const
{ {
QPointF circlePos( point.x() - rect.center().x(), const QPointF circlePos( point.x() - rect.center().x(),
rect.center().y() - point.y() ); rect.center().y() - point.y() );
const qreal atan = qAtan2( circlePos.y(), circlePos.x() ); const qreal angle = qAtan2( circlePos.y(), circlePos.x() );
const qreal angle = qRadiansToDegrees( atan ); return qRadiansToDegrees( angle );
return angle;
} }
bool LightDisplay::arcContainsPoint( const QRectF& rect, const QPointF& point ) const bool LightDisplay::arcContainsPoint( const QRectF& rect, const QPointF& point ) const
@ -148,9 +143,7 @@ bool LightDisplay::arcContainsPoint( const QRectF& rect, const QPointF& point )
const bool pointOnArc = ( polarRadius + tolerance ) > radiusMin const bool pointOnArc = ( polarRadius + tolerance ) > radiusMin
&& ( polarRadius - tolerance ) < radiusMax; && ( polarRadius - tolerance ) < radiusMax;
bool ret = angleWithinRange && pointOnArc; return angleWithinRange && pointOnArc;
return ret;
} }
#include "moc_LightDisplay.cpp" #include "moc_LightDisplay.cpp"

View File

@ -12,9 +12,12 @@ class LightDisplay : public QskBoundedValueInput
{ {
Q_OBJECT Q_OBJECT
using Inherited = QskBoundedValueInput;
public: public:
QSK_SUBCONTROLS( Panel, Groove, ColdAndWarmArc, Tickmarks, ValueText, QSK_SUBCONTROLS( Panel, Groove, ColdAndWarmArc, Tickmarks,
LeftLabel, RightLabel, Knob ) // ### rename knob to handle? ValueText, LeftLabel, RightLabel, Handle )
QSK_STATES( Pressed ) QSK_STATES( Pressed )
LightDisplay( QQuickItem* parent = nullptr ); LightDisplay( QQuickItem* parent = nullptr );
@ -22,9 +25,9 @@ class LightDisplay : public QskBoundedValueInput
bool isPressed() const; bool isPressed() const;
protected: protected:
void mousePressEvent( QMouseEvent* e ) override; void mousePressEvent( QMouseEvent* ) override;
void mouseMoveEvent( QMouseEvent* e ) override; void mouseMoveEvent( QMouseEvent* ) override;
void mouseReleaseEvent( QMouseEvent* e ) override; void mouseReleaseEvent( QMouseEvent* ) override;
private: private:
qreal angleFromPoint( const QRectF&, const QPointF& ) const; qreal angleFromPoint( const QRectF&, const QPointF& ) const;

View File

@ -105,12 +105,12 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
return rect; return rect;
} }
else if( subControl == LightDisplay::Knob ) else if( subControl == LightDisplay::Handle )
{ {
const auto arcRect = subControlRect( skinnable, const auto arcRect = subControlRect( skinnable,
contentsRect, LightDisplay::ColdAndWarmArc ); contentsRect, LightDisplay::ColdAndWarmArc );
const auto arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc ); const auto arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc );
const auto knobSize = display->strutSizeHint( LightDisplay::Knob ); const auto knobSize = display->strutSizeHint( LightDisplay::Handle );
const qreal radius = ( arcRect.width() - arcMetrics.thickness() ) / 2; const qreal radius = ( arcRect.width() - arcMetrics.thickness() ) / 2;
const qreal angle = display->valueAsRatio() * 180; const qreal angle = display->valueAsRatio() * 180;
@ -183,7 +183,7 @@ QSGNode* LightDisplaySkinlet::updateSubNode(
} }
case KnobRole: case KnobRole:
{ {
return updateBoxNode( skinnable, node, LightDisplay::Knob ); return updateBoxNode( skinnable, node, LightDisplay::Handle );
} }
} }

View File

@ -241,9 +241,9 @@ void Skin::initHints()
ed.setFontRole( LightDisplay::ValueText, QskFontRole::Headline ); ed.setFontRole( LightDisplay::ValueText, QskFontRole::Headline );
ed.setColor( LightDisplay::ValueText, 0xff929cb2 ); ed.setColor( LightDisplay::ValueText, 0xff929cb2 );
ed.setStrutSize( LightDisplay::Knob, { 20, 20 } ); ed.setStrutSize( LightDisplay::Handle, { 20, 20 } );
ed.setBoxBorderMetrics( LightDisplay::Knob, 1 ); ed.setBoxBorderMetrics( LightDisplay::Handle, 1 );
ed.setBoxShape( LightDisplay::Knob, 100, Qt::RelativeSize ); ed.setBoxShape( LightDisplay::Handle, 100, Qt::RelativeSize );
// palette dependent skin hints: // palette dependent skin hints:
ed.setGradient( MenuBar::Panel, palette.menuBar ); ed.setGradient( MenuBar::Panel, palette.menuBar );
@ -265,9 +265,9 @@ void Skin::initHints()
ed.setShadowColor( UsageDiagramBox::Panel, palette.shadow ); ed.setShadowColor( UsageDiagramBox::Panel, palette.shadow );
ed.setGradient( LightDisplay::Panel, palette.box ); ed.setGradient( LightDisplay::Panel, palette.box );
ed.setGradient( LightDisplay::Knob, palette.box ); ed.setGradient( LightDisplay::Handle, palette.box );
ed.setGradient( LightDisplay::ColdAndWarmArc, palette.lightDisplayColdAndWarmArc ); ed.setGradient( LightDisplay::ColdAndWarmArc, palette.lightDisplayColdAndWarmArc );
ed.setBoxBorderColors( LightDisplay::Knob, palette.lightDisplayKnobBorder ); ed.setBoxBorderColors( LightDisplay::Handle, palette.lightDisplayKnobBorder );
ed.setShadowMetrics( LightDisplay::Groove, { 0, 20 } ); ed.setShadowMetrics( LightDisplay::Groove, { 0, 20 } );
ed.setShadowColor( LightDisplay::Groove, palette.shadow ); ed.setShadowColor( LightDisplay::Groove, palette.shadow );
ed.setGradient( LightDisplay::Groove, palette.box ); ed.setGradient( LightDisplay::Groove, palette.box );