From ae1b46b2a71077fd49a9a04b7d40309e7aab6001 Mon Sep 17 00:00:00 2001 From: Andrei Tuicu Date: Fri, 30 Jan 2015 17:57:12 +0200 Subject: [PATCH] Scale values for screen reader to be from 0 to 100 for sliders in awl. --- awl/aslider.cpp | 22 +++++++++++++++++++--- awl/aslider.h | 3 +++ mscore/playpanel.cpp | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/awl/aslider.cpp b/awl/aslider.cpp index 6b64ce2153..2ccec53c9d 100644 --- a/awl/aslider.cpp +++ b/awl/aslider.cpp @@ -40,6 +40,7 @@ AbstractSlider::AbstractSlider(QWidget* parent) _invert = false; _scaleWidth = 4; _log = false; + _useActualValue = false; setFocusPolicy(Qt::StrongFocus); } @@ -202,6 +203,21 @@ double AbstractSlider::value() const return _log ? pow(10.0, _value*0.05f) : _value; } +//--------------------------------------------------------- +// userValue (between 0 and 100) +//--------------------------------------------------------- + +QString AbstractSlider::userValue() const + { + double result; + if (_useActualValue) + result = value(); + else + result = (_value - minValue())/ ((maxValue() - minValue())/100); + + return QString::number(result, 'f', 2); + } + //--------------------------------------------------------- // minLogValue //--------------------------------------------------------- @@ -278,7 +294,7 @@ QString AccessibleAbstractSlider::text(QAccessible::Text t) const case QAccessible::Name: return slider->accessibleName(); case QAccessible::Value: - return QString::number(slider->value()); + return slider->userValue(); case QAccessible::Description: return slider->accessibleDescription(); default: @@ -287,9 +303,9 @@ QString AccessibleAbstractSlider::text(QAccessible::Text t) const return QString(); } -void AccessibleAbstractSlider::valueChanged(double value, int) +void AccessibleAbstractSlider::valueChanged(double, int) { - QAccessibleValueChangeEvent ev(slider, value); + QAccessibleValueChangeEvent ev(slider, slider->userValue()); QAccessible::updateAccessibility(&ev); } diff --git a/awl/aslider.h b/awl/aslider.h index a572b68570..2edba9f74a 100644 --- a/awl/aslider.h +++ b/awl/aslider.h @@ -70,6 +70,7 @@ class AbstractSlider : public QWidget { QColor _scaleColor; QColor _scaleValueColor; bool _log; + bool _useActualValue; //! for user value virtual void wheelEvent(QWheelEvent*); virtual void keyPressEvent(QKeyEvent*); @@ -109,6 +110,7 @@ class AbstractSlider : public QWidget { void setId(int i) { _id = i; } virtual double value() const; + virtual QString userValue() const; double minValue() const { return _minValue; } void setMinValue(double v) { _minValue = v; } @@ -135,6 +137,7 @@ class AbstractSlider : public QWidget { void setDclickValue1(double val) { _dclickValue1 = val; } void setDclickValue2(double val) { _dclickValue2 = val; } void setEnabled(bool val); + void setUseActualValue(bool v) { _useActualValue = v; } }; class AccessibleAbstractSlider : public QObject, QAccessibleWidget { diff --git a/mscore/playpanel.cpp b/mscore/playpanel.cpp index 28e725e9ba..6bca251121 100644 --- a/mscore/playpanel.cpp +++ b/mscore/playpanel.cpp @@ -63,6 +63,7 @@ PlayPanel::PlayPanel(QWidget* parent) tempoSlider->setDclickValue1(100.0); tempoSlider->setDclickValue2(100.0); + tempoSlider->setUseActualValue(true); connect(volumeSlider, SIGNAL(valueChanged(double,int)), SLOT(volumeChanged(double,int))); connect(posSlider, SIGNAL(sliderMoved(int)), SLOT(setPos(int)));