diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 781838e5e..7e9bac2b5 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -42,7 +42,7 @@ #include "obs-app.hpp" #include "obs-proxy-style.hpp" #include "log-viewer.hpp" -#include "slider-ignorewheel.hpp" +#include "volume-control.hpp" #include "window-basic-main.hpp" #ifdef __APPLE__ #include "window-permissions.hpp" diff --git a/UI/slider-ignorewheel.cpp b/UI/slider-ignorewheel.cpp index 8ce293f3c..69f595405 100644 --- a/UI/slider-ignorewheel.cpp +++ b/UI/slider-ignorewheel.cpp @@ -21,80 +21,6 @@ void SliderIgnoreScroll::wheelEvent(QWheelEvent *event) QSlider::wheelEvent(event); } -VolumeSlider::VolumeSlider(obs_fader_t *fader, QWidget *parent) - : SliderIgnoreScroll(parent) -{ - fad = fader; -} - -VolumeSlider::VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation, - QWidget *parent) - : SliderIgnoreScroll(orientation, parent) -{ - fad = fader; -} - -VolumeAccessibleInterface::VolumeAccessibleInterface(QWidget *w) - : QAccessibleWidget(w) -{ -} - -VolumeSlider *VolumeAccessibleInterface::slider() const -{ - return qobject_cast(object()); -} - -QString VolumeAccessibleInterface::text(QAccessible::Text t) const -{ - if (slider()->isVisible()) { - switch (t) { - case QAccessible::Text::Value: - return currentValue().toString(); - default: - break; - } - } - return QAccessibleWidget::text(t); -} - -QVariant VolumeAccessibleInterface::currentValue() const -{ - QString text; - float db = obs_fader_get_db(slider()->fad); - - if (db < -96.0f) - text = "-inf dB"; - else - text = QString::number(db, 'f', 1).append(" dB"); - - return text; -} - -void VolumeAccessibleInterface::setCurrentValue(const QVariant &value) -{ - slider()->setValue(value.toInt()); -} - -QVariant VolumeAccessibleInterface::maximumValue() const -{ - return slider()->maximum(); -} - -QVariant VolumeAccessibleInterface::minimumValue() const -{ - return slider()->minimum(); -} - -QVariant VolumeAccessibleInterface::minimumStepSize() const -{ - return slider()->singleStep(); -} - -QAccessible::Role VolumeAccessibleInterface::role() const -{ - return QAccessible::Role::Slider; -} - void SliderIgnoreClick::mousePressEvent(QMouseEvent *event) { QStyleOptionSlider styleOption; diff --git a/UI/slider-ignorewheel.hpp b/UI/slider-ignorewheel.hpp index 2c996ac0f..24e4056f2 100644 --- a/UI/slider-ignorewheel.hpp +++ b/UI/slider-ignorewheel.hpp @@ -4,7 +4,6 @@ #include #include #include -#include #include class SliderIgnoreScroll : public QSlider { @@ -19,38 +18,6 @@ protected: virtual void wheelEvent(QWheelEvent *event) override; }; -class VolumeSlider : public SliderIgnoreScroll { - Q_OBJECT - -public: - obs_fader_t *fad; - - VolumeSlider(obs_fader_t *fader, QWidget *parent = nullptr); - VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation, - QWidget *parent = nullptr); -}; - -class VolumeAccessibleInterface : public QAccessibleWidget { - -public: - VolumeAccessibleInterface(QWidget *w); - - QVariant currentValue() const; - void setCurrentValue(const QVariant &value); - - QVariant maximumValue() const; - QVariant minimumValue() const; - - QVariant minimumStepSize() const; - -private: - VolumeSlider *slider() const; - -protected: - virtual QAccessible::Role role() const override; - virtual QString text(QAccessible::Text t) const override; -}; - class SliderIgnoreClick : public SliderIgnoreScroll { public: inline SliderIgnoreClick(Qt::Orientation orientation, diff --git a/UI/volume-control.cpp b/UI/volume-control.cpp index a900a3fa7..755be2723 100644 --- a/UI/volume-control.cpp +++ b/UI/volume-control.cpp @@ -1518,3 +1518,77 @@ void VolumeMeterTimer::timerEvent(QTimerEvent *) } } } + +VolumeSlider::VolumeSlider(obs_fader_t *fader, QWidget *parent) + : SliderIgnoreScroll(parent) +{ + fad = fader; +} + +VolumeSlider::VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation, + QWidget *parent) + : SliderIgnoreScroll(orientation, parent) +{ + fad = fader; +} + +VolumeAccessibleInterface::VolumeAccessibleInterface(QWidget *w) + : QAccessibleWidget(w) +{ +} + +VolumeSlider *VolumeAccessibleInterface::slider() const +{ + return qobject_cast(object()); +} + +QString VolumeAccessibleInterface::text(QAccessible::Text t) const +{ + if (slider()->isVisible()) { + switch (t) { + case QAccessible::Text::Value: + return currentValue().toString(); + default: + break; + } + } + return QAccessibleWidget::text(t); +} + +QVariant VolumeAccessibleInterface::currentValue() const +{ + QString text; + float db = obs_fader_get_db(slider()->fad); + + if (db < -96.0f) + text = "-inf dB"; + else + text = QString::number(db, 'f', 1).append(" dB"); + + return text; +} + +void VolumeAccessibleInterface::setCurrentValue(const QVariant &value) +{ + slider()->setValue(value.toInt()); +} + +QVariant VolumeAccessibleInterface::maximumValue() const +{ + return slider()->maximum(); +} + +QVariant VolumeAccessibleInterface::minimumValue() const +{ + return slider()->minimum(); +} + +QVariant VolumeAccessibleInterface::minimumStepSize() const +{ + return slider()->singleStep(); +} + +QAccessible::Role VolumeAccessibleInterface::role() const +{ + return QAccessible::Role::Slider; +} diff --git a/UI/volume-control.hpp b/UI/volume-control.hpp index 5f9a6762f..99271609b 100644 --- a/UI/volume-control.hpp +++ b/UI/volume-control.hpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include "slider-ignorewheel.hpp" class QPushButton; class VolumeMeterTimer; @@ -270,7 +272,7 @@ protected: }; class QLabel; -class QSlider; +class VolumeSlider; class MuteCheckBox; class OBSSourceLabel; @@ -283,7 +285,7 @@ private: OBSSourceLabel *nameLabel; QLabel *volLabel; VolumeMeter *volMeter; - QSlider *slider; + VolumeSlider *slider; MuteCheckBox *mute; QPushButton *config = nullptr; float levelTotal; @@ -330,3 +332,35 @@ public: void refreshColors(); }; + +class VolumeSlider : public SliderIgnoreScroll { + Q_OBJECT + +public: + obs_fader_t *fad; + + VolumeSlider(obs_fader_t *fader, QWidget *parent = nullptr); + VolumeSlider(obs_fader_t *fader, Qt::Orientation orientation, + QWidget *parent = nullptr); +}; + +class VolumeAccessibleInterface : public QAccessibleWidget { + +public: + VolumeAccessibleInterface(QWidget *w); + + QVariant currentValue() const; + void setCurrentValue(const QVariant &value); + + QVariant maximumValue() const; + QVariant minimumValue() const; + + QVariant minimumStepSize() const; + +private: + VolumeSlider *slider() const; + +protected: + virtual QAccessible::Role role() const override; + virtual QString text(QAccessible::Text t) const override; +};