Scale values for screen reader to be from 0 to 100 for sliders in awl.

This commit is contained in:
Andrei Tuicu 2015-01-30 17:57:12 +02:00
parent ddaf8b363e
commit ae1b46b2a7
3 changed files with 23 additions and 3 deletions

View file

@ -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);
}

View file

@ -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 {

View file

@ -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)));