adv-audio-control.hpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <QWidget>
  4. #include <QPointer>
  5. #include <QDoubleSpinBox>
  6. #include <QStackedWidget>
  7. #include "balance-slider.hpp"
  8. class QGridLayout;
  9. class QLabel;
  10. class QSpinBox;
  11. class QCheckBox;
  12. class QComboBox;
  13. enum class VolumeType {
  14. dB,
  15. Percent,
  16. };
  17. class OBSAdvAudioCtrl : public QObject {
  18. Q_OBJECT
  19. private:
  20. OBSSource source;
  21. QPointer<QWidget> activeContainer;
  22. QPointer<QWidget> forceMonoContainer;
  23. QPointer<QWidget> mixerContainer;
  24. QPointer<QWidget> balanceContainer;
  25. QPointer<QLabel> iconLabel;
  26. QPointer<QLabel> nameLabel;
  27. QPointer<QLabel> active;
  28. QPointer<QStackedWidget> stackedWidget;
  29. QPointer<QSpinBox> percent;
  30. QPointer<QDoubleSpinBox> volume;
  31. QPointer<QCheckBox> forceMono;
  32. QPointer<BalanceSlider> balance;
  33. QPointer<QLabel> labelL;
  34. QPointer<QLabel> labelR;
  35. QPointer<QSpinBox> syncOffset;
  36. QPointer<QComboBox> monitoringType;
  37. QPointer<QCheckBox> mixer1;
  38. QPointer<QCheckBox> mixer2;
  39. QPointer<QCheckBox> mixer3;
  40. QPointer<QCheckBox> mixer4;
  41. QPointer<QCheckBox> mixer5;
  42. QPointer<QCheckBox> mixer6;
  43. OBSSignal volChangedSignal;
  44. OBSSignal syncOffsetSignal;
  45. OBSSignal flagsSignal;
  46. OBSSignal monitoringTypeSignal;
  47. OBSSignal mixersSignal;
  48. OBSSignal activateSignal;
  49. OBSSignal deactivateSignal;
  50. OBSSignal balChangedSignal;
  51. OBSSignal renameSignal;
  52. static void OBSSourceActivated(void *param, calldata_t *calldata);
  53. static void OBSSourceDeactivated(void *param, calldata_t *calldata);
  54. static void OBSSourceFlagsChanged(void *param, calldata_t *calldata);
  55. static void OBSSourceVolumeChanged(void *param, calldata_t *calldata);
  56. static void OBSSourceSyncChanged(void *param, calldata_t *calldata);
  57. static void OBSSourceMonitoringTypeChanged(void *param,
  58. calldata_t *calldata);
  59. static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
  60. static void OBSSourceBalanceChanged(void *param, calldata_t *calldata);
  61. static void OBSSourceRenamed(void *param, calldata_t *calldata);
  62. public:
  63. OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_);
  64. virtual ~OBSAdvAudioCtrl();
  65. inline obs_source_t *GetSource() const { return source; }
  66. void ShowAudioControl(QGridLayout *layout);
  67. void SetVolumeWidget(VolumeType type);
  68. void SetIconVisible(bool visible);
  69. public slots:
  70. void SourceActiveChanged(bool active);
  71. void SourceFlagsChanged(uint32_t flags);
  72. void SourceVolumeChanged(float volume);
  73. void SourceSyncChanged(int64_t offset);
  74. void SourceMonitoringTypeChanged(int type);
  75. void SourceMixersChanged(uint32_t mixers);
  76. void SourceBalanceChanged(int balance);
  77. void SetSourceName(QString &newNamw);
  78. void volumeChanged(double db);
  79. void percentChanged(int percent);
  80. void downmixMonoChanged(bool checked);
  81. void balanceChanged(int val);
  82. void syncOffsetChanged(int milliseconds);
  83. void monitoringTypeChanged(int index);
  84. void mixer1Changed(bool checked);
  85. void mixer2Changed(bool checked);
  86. void mixer3Changed(bool checked);
  87. void mixer4Changed(bool checked);
  88. void mixer5Changed(bool checked);
  89. void mixer6Changed(bool checked);
  90. void ResetBalance();
  91. };