Use system volume when possible

Fixes #1037
This commit is contained in:
Jonas Kvinge
2022-12-03 03:46:59 +01:00
parent 3a4199240e
commit b92ec71810
14 changed files with 203 additions and 129 deletions

View File

@@ -68,7 +68,7 @@ void SliderSlider::wheelEvent(QWheelEvent *e) {
QSlider::setValue(nval);
emit sliderReleased(value());
emit SliderReleased(value());
}
@@ -133,7 +133,7 @@ void SliderSlider::mousePressEvent(QMouseEvent *e) {
void SliderSlider::mouseReleaseEvent(QMouseEvent*) {
if (!outside_ && QSlider::value() != prev_value_) {
emit sliderReleased(value());
emit SliderReleased(value());
}
sliding_ = false;
@@ -141,7 +141,7 @@ void SliderSlider::mouseReleaseEvent(QMouseEvent*) {
}
void SliderSlider::SetValueFromVolume(const uint value) {
void SliderSlider::SetValue(const uint value) {
setValue(static_cast<int>(value));
@@ -298,21 +298,21 @@ void VolumeSlider::contextMenuEvent(QContextMenuEvent *e) {
QAction *ret = menu.exec(mapToGlobal(e->pos()));
if (ret) {
QSlider::setValue(values[ret]); // clazy:exclude=skipped-base-method
emit sliderReleased(values[ret]);
QSlider::setValue(values[ret]);
emit SliderReleased(values[ret]);
}
}
void VolumeSlider::slideEvent(QMouseEvent *e) {
QSlider::setValue(QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().x(), width() - 2)); // clazy:exclude=skipped-base-method
QSlider::setValue(QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().x(), width() - 2));
}
void VolumeSlider::wheelEvent(QWheelEvent *e) {
const int step = e->angleDelta().y() / (e->angleDelta().x() == 0 ? 30 : -30);
QSlider::setValue(SliderSlider::value() + step); // clazy:exclude=skipped-base-method
emit sliderReleased(value());
QSlider::setValue(SliderSlider::value() + step);
emit SliderReleased(value());
}

View File

@@ -44,15 +44,15 @@ class SliderSlider : public QSlider {
public:
explicit SliderSlider(const Qt::Orientation, QWidget*, const int max = 0);
virtual void SetValueFromVolume(const uint value);
virtual void SetValue(const uint value);
virtual void setValue(int value);
// WARNING non-virtual - and thus only really intended for internal use this is a major flaw in the class presently, however it suits our current needs fine
int value() const { return adjustValue(QSlider::value()); }
signals:
// we emit this when the user has specifically changed the slider so connect to it if valueChanged() is too generic Qt also emits valueChanged(int)
void sliderReleased(int); // clazy:exclude=overloaded-signal
// We emit this when the user has specifically changed the slider so connect to it if valueChanged() is too generic Qt also emits valueChanged(int)
void SliderReleased(int);
protected:
void wheelEvent(QWheelEvent*) override;