2014-12-28 09:38:00 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <obs.hpp>
|
|
|
|
#include <QWidget>
|
2015-02-11 16:49:12 +01:00
|
|
|
#include <QPointer>
|
2019-04-28 07:21:19 +02:00
|
|
|
#include <QDoubleSpinBox>
|
2019-09-12 09:13:19 +02:00
|
|
|
#include <QStackedWidget>
|
2018-09-03 05:17:09 +02:00
|
|
|
#include "balance-slider.hpp"
|
2014-12-28 09:38:00 +01:00
|
|
|
|
2015-02-11 16:49:12 +01:00
|
|
|
class QGridLayout;
|
2014-12-28 09:38:00 +01:00
|
|
|
class QLabel;
|
|
|
|
class QSpinBox;
|
|
|
|
class QCheckBox;
|
2017-02-06 06:51:50 +01:00
|
|
|
class QComboBox;
|
2014-12-28 09:38:00 +01:00
|
|
|
|
2019-09-12 09:13:19 +02:00
|
|
|
enum class VolumeType {
|
|
|
|
dB,
|
|
|
|
Percent,
|
|
|
|
};
|
|
|
|
|
2015-02-11 16:49:12 +01:00
|
|
|
class OBSAdvAudioCtrl : public QObject {
|
2014-12-28 09:38:00 +01:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
private:
|
|
|
|
OBSSource source;
|
2015-02-11 16:49:12 +01:00
|
|
|
|
|
|
|
QPointer<QWidget> mixerContainer;
|
2017-10-08 12:15:28 +02:00
|
|
|
QPointer<QWidget> balanceContainer;
|
2015-02-11 16:49:12 +01:00
|
|
|
|
2020-01-25 12:48:38 +01:00
|
|
|
QPointer<QLabel> iconLabel;
|
2015-02-11 16:49:12 +01:00
|
|
|
QPointer<QLabel> nameLabel;
|
2019-12-27 19:59:19 +01:00
|
|
|
QPointer<QLabel> active;
|
2019-09-12 09:13:19 +02:00
|
|
|
QPointer<QStackedWidget> stackedWidget;
|
|
|
|
QPointer<QSpinBox> percent;
|
2019-04-28 07:21:19 +02:00
|
|
|
QPointer<QDoubleSpinBox> volume;
|
2015-02-11 16:49:12 +01:00
|
|
|
QPointer<QCheckBox> forceMono;
|
2018-09-03 05:17:09 +02:00
|
|
|
QPointer<BalanceSlider> balance;
|
2015-02-11 16:49:12 +01:00
|
|
|
QPointer<QLabel> labelL;
|
|
|
|
QPointer<QLabel> labelR;
|
|
|
|
QPointer<QSpinBox> syncOffset;
|
2017-02-06 06:51:50 +01:00
|
|
|
QPointer<QComboBox> monitoringType;
|
2015-02-11 16:49:12 +01:00
|
|
|
QPointer<QCheckBox> mixer1;
|
|
|
|
QPointer<QCheckBox> mixer2;
|
|
|
|
QPointer<QCheckBox> mixer3;
|
|
|
|
QPointer<QCheckBox> mixer4;
|
2016-12-22 02:14:24 +01:00
|
|
|
QPointer<QCheckBox> mixer5;
|
|
|
|
QPointer<QCheckBox> mixer6;
|
2014-12-28 09:38:00 +01:00
|
|
|
|
|
|
|
OBSSignal volChangedSignal;
|
|
|
|
OBSSignal syncOffsetSignal;
|
|
|
|
OBSSignal flagsSignal;
|
2021-08-31 15:26:52 +02:00
|
|
|
OBSSignal monitoringTypeSignal;
|
2015-01-16 18:08:57 +01:00
|
|
|
OBSSignal mixersSignal;
|
2019-12-27 19:59:19 +01:00
|
|
|
OBSSignal activateSignal;
|
|
|
|
OBSSignal deactivateSignal;
|
2021-10-01 02:24:58 +02:00
|
|
|
OBSSignal balChangedSignal;
|
2022-05-13 08:57:43 +02:00
|
|
|
OBSSignal renameSignal;
|
2014-12-28 09:38:00 +01:00
|
|
|
|
2019-12-27 19:59:19 +01:00
|
|
|
static void OBSSourceActivated(void *param, calldata_t *calldata);
|
|
|
|
static void OBSSourceDeactivated(void *param, calldata_t *calldata);
|
2014-12-28 09:38:00 +01:00
|
|
|
static void OBSSourceFlagsChanged(void *param, calldata_t *calldata);
|
|
|
|
static void OBSSourceVolumeChanged(void *param, calldata_t *calldata);
|
|
|
|
static void OBSSourceSyncChanged(void *param, calldata_t *calldata);
|
2021-08-31 15:26:52 +02:00
|
|
|
static void OBSSourceMonitoringTypeChanged(void *param,
|
|
|
|
calldata_t *calldata);
|
2015-01-16 18:08:57 +01:00
|
|
|
static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
|
2021-10-01 02:24:58 +02:00
|
|
|
static void OBSSourceBalanceChanged(void *param, calldata_t *calldata);
|
2022-05-13 08:57:43 +02:00
|
|
|
static void OBSSourceRenamed(void *param, calldata_t *calldata);
|
2014-12-28 09:38:00 +01:00
|
|
|
|
|
|
|
public:
|
2015-02-11 16:49:12 +01:00
|
|
|
OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_);
|
|
|
|
virtual ~OBSAdvAudioCtrl();
|
2014-12-28 09:38:00 +01:00
|
|
|
|
|
|
|
inline obs_source_t *GetSource() const { return source; }
|
2018-03-18 16:29:13 +01:00
|
|
|
void ShowAudioControl(QGridLayout *layout);
|
2014-12-28 09:38:00 +01:00
|
|
|
|
2019-09-12 09:13:19 +02:00
|
|
|
void SetVolumeWidget(VolumeType type);
|
2020-01-25 12:48:38 +01:00
|
|
|
void SetIconVisible(bool visible);
|
2019-09-12 09:13:19 +02:00
|
|
|
|
2014-12-28 09:38:00 +01:00
|
|
|
public slots:
|
2019-12-27 19:59:19 +01:00
|
|
|
void SourceActiveChanged(bool active);
|
2014-12-28 09:38:00 +01:00
|
|
|
void SourceFlagsChanged(uint32_t flags);
|
|
|
|
void SourceVolumeChanged(float volume);
|
|
|
|
void SourceSyncChanged(int64_t offset);
|
2021-08-31 15:26:52 +02:00
|
|
|
void SourceMonitoringTypeChanged(int type);
|
2015-01-16 18:08:57 +01:00
|
|
|
void SourceMixersChanged(uint32_t mixers);
|
2021-10-01 02:24:58 +02:00
|
|
|
void SourceBalanceChanged(int balance);
|
2022-06-05 11:15:51 +02:00
|
|
|
void SetSourceName(QString newName);
|
2014-12-28 09:38:00 +01:00
|
|
|
|
2019-04-28 07:21:19 +02:00
|
|
|
void volumeChanged(double db);
|
2019-09-12 09:13:19 +02:00
|
|
|
void percentChanged(int percent);
|
2014-12-28 09:38:00 +01:00
|
|
|
void downmixMonoChanged(bool checked);
|
2017-10-08 12:15:28 +02:00
|
|
|
void balanceChanged(int val);
|
2014-12-28 09:38:00 +01:00
|
|
|
void syncOffsetChanged(int milliseconds);
|
2017-02-06 06:51:50 +01:00
|
|
|
void monitoringTypeChanged(int index);
|
2018-09-03 05:17:09 +02:00
|
|
|
void ResetBalance();
|
2014-12-28 09:38:00 +01:00
|
|
|
};
|