UI: Move VolumeSlider widget to volume control

This commit is contained in:
Warchamp7
2024-05-23 18:55:43 -04:00
committed by Ryan Foster
parent e79fea301d
commit aba600cec0
5 changed files with 111 additions and 110 deletions
+1 -1
View File
@@ -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"
-74
View File
@@ -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<VolumeSlider *>(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;
-33
View File
@@ -4,7 +4,6 @@
#include <QSlider>
#include <QInputEvent>
#include <QtCore/QObject>
#include <QAccessibleWidget>
#include <QStyleOptionSlider>
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,
+74
View File
@@ -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<VolumeSlider *>(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;
}
+36 -2
View File
@@ -7,6 +7,8 @@
#include <QMutex>
#include <QList>
#include <QMenu>
#include <QAccessibleWidget>
#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;
};