#pragma once #include #include #include #include #include #include "balance-slider.hpp" class QGridLayout; class QLabel; class QSpinBox; class QCheckBox; class QComboBox; enum class VolumeType { dB, Percent, }; class OBSAdvAudioCtrl : public QObject { Q_OBJECT private: OBSSource source; QPointer mixerContainer; QPointer balanceContainer; QPointer iconLabel; QPointer nameLabel; QPointer active; QPointer stackedWidget; QPointer percent; QPointer volume; QPointer forceMono; QPointer balance; QPointer labelL; QPointer labelR; QPointer syncOffset; QPointer monitoringType; QPointer mixer1; QPointer mixer2; QPointer mixer3; QPointer mixer4; QPointer mixer5; QPointer mixer6; OBSSignal volChangedSignal; OBSSignal syncOffsetSignal; OBSSignal flagsSignal; OBSSignal monitoringTypeSignal; OBSSignal mixersSignal; OBSSignal activateSignal; OBSSignal deactivateSignal; OBSSignal balChangedSignal; OBSSignal renameSignal; static void OBSSourceActivated(void *param, calldata_t *calldata); static void OBSSourceDeactivated(void *param, calldata_t *calldata); static void OBSSourceFlagsChanged(void *param, calldata_t *calldata); static void OBSSourceVolumeChanged(void *param, calldata_t *calldata); static void OBSSourceSyncChanged(void *param, calldata_t *calldata); static void OBSSourceMonitoringTypeChanged(void *param, calldata_t *calldata); static void OBSSourceMixersChanged(void *param, calldata_t *calldata); static void OBSSourceBalanceChanged(void *param, calldata_t *calldata); static void OBSSourceRenamed(void *param, calldata_t *calldata); public: OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_); virtual ~OBSAdvAudioCtrl(); inline obs_source_t *GetSource() const { return source; } void ShowAudioControl(QGridLayout *layout); void SetVolumeWidget(VolumeType type); void SetIconVisible(bool visible); public slots: void SourceActiveChanged(bool active); void SourceFlagsChanged(uint32_t flags); void SourceVolumeChanged(float volume); void SourceSyncChanged(int64_t offset); void SourceMonitoringTypeChanged(int type); void SourceMixersChanged(uint32_t mixers); void SourceBalanceChanged(int balance); void SetSourceName(QString newName); void volumeChanged(double db); void percentChanged(int percent); void downmixMonoChanged(bool checked); void balanceChanged(int val); void syncOffsetChanged(int milliseconds); void monitoringTypeChanged(int index); void ResetBalance(); };