diff --git a/UI/CMakeLists.txt b/UI/CMakeLists.txt index f41448831..e0339311b 100644 --- a/UI/CMakeLists.txt +++ b/UI/CMakeLists.txt @@ -207,6 +207,7 @@ set(obs_HEADERS properties-view.hpp properties-view.moc.hpp display-helpers.hpp + balance-slider.hpp double-slider.hpp focus-list.hpp menu-button.hpp diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp index e84e7c227..c327a6109 100644 --- a/UI/adv-audio-control.cpp +++ b/UI/adv-audio-control.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include "qt-wrappers.hpp" #include "obs-app.hpp" #include "adv-audio-control.hpp" @@ -32,7 +31,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) nameLabel = new QLabel(); volume = new QSpinBox(); forceMono = new QCheckBox(); - balance = new QSlider(Qt::Horizontal); + balance = new BalanceSlider(); #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO monitoringType = new QComboBox(); #endif @@ -82,6 +81,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) forceMonoContainer->layout()->setAlignment(forceMono, Qt::AlignHCenter | Qt::AlignVCenter); + balance->setOrientation(Qt::Horizontal); balance->setMinimum(0); balance->setMaximum(100); balance->setTickPosition(QSlider::TicksAbove); @@ -153,6 +153,8 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) this, SLOT(downmixMonoChanged(bool))); QWidget::connect(balance, SIGNAL(valueChanged(int)), this, SLOT(balanceChanged(int))); + QWidget::connect(balance, SIGNAL(doubleClicked()), + this, SLOT(ResetBalance())); QWidget::connect(syncOffset, SIGNAL(valueChanged(int)), this, SLOT(syncOffsetChanged(int))); #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO @@ -314,6 +316,12 @@ void OBSAdvAudioCtrl::balanceChanged(int val) obs_source_set_balance_value(source, bal); } +void OBSAdvAudioCtrl::ResetBalance() +{ + balance->setValue(50); +} + + void OBSAdvAudioCtrl::syncOffsetChanged(int milliseconds) { int64_t cur_val = obs_source_get_sync_offset(source); diff --git a/UI/adv-audio-control.hpp b/UI/adv-audio-control.hpp index a075390b0..80d248e83 100644 --- a/UI/adv-audio-control.hpp +++ b/UI/adv-audio-control.hpp @@ -3,12 +3,12 @@ #include #include #include +#include "balance-slider.hpp" class QGridLayout; class QLabel; class QSpinBox; class QCheckBox; -class QSlider; class QComboBox; class OBSAdvAudioCtrl : public QObject { @@ -24,7 +24,7 @@ private: QPointer nameLabel; QPointer volume; QPointer forceMono; - QPointer balance; + QPointerbalance; QPointer labelL; QPointer labelR; QPointer syncOffset; @@ -70,4 +70,5 @@ public slots: void mixer4Changed(bool checked); void mixer5Changed(bool checked); void mixer6Changed(bool checked); + void ResetBalance(); }; diff --git a/UI/balance-slider.hpp b/UI/balance-slider.hpp new file mode 100644 index 000000000..06be1b5f8 --- /dev/null +++ b/UI/balance-slider.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include +#include + +class BalanceSlider : public QSlider { + Q_OBJECT + +public: + inline BalanceSlider(QWidget *parent = 0) : QSlider(parent) {} + +signals: + void doubleClicked(); + +protected: + void mouseDoubleClickEvent(QMouseEvent *event) + { + emit doubleClicked(); + event->accept(); + } +};