volume-control.hpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <QWidget>
  4. class VolumeMeter : public QWidget
  5. {
  6. Q_OBJECT
  7. Q_PROPERTY(QColor bkColor READ getBkColor WRITE setBkColor DESIGNABLE true)
  8. Q_PROPERTY(QColor magColor READ getMagColor WRITE setMagColor DESIGNABLE true)
  9. Q_PROPERTY(QColor peakColor READ getPeakColor WRITE setPeakColor DESIGNABLE true)
  10. Q_PROPERTY(QColor peakHoldColor READ getPeakHoldColor WRITE setPeakHoldColor DESIGNABLE true)
  11. private:
  12. float mag, peak, peakHold;
  13. QColor bkColor, magColor, peakColor, peakHoldColor;
  14. QTimer *resetTimer;
  15. public:
  16. explicit VolumeMeter(QWidget *parent = 0);
  17. void setLevels(float nmag, float npeak, float npeakHold);
  18. QColor getBkColor() const;
  19. void setBkColor(QColor c);
  20. QColor getMagColor() const;
  21. void setMagColor(QColor c);
  22. QColor getPeakColor() const;
  23. void setPeakColor(QColor c);
  24. QColor getPeakHoldColor() const;
  25. void setPeakHoldColor(QColor c);
  26. protected:
  27. void paintEvent(QPaintEvent *event);
  28. private slots:
  29. void resetState();
  30. };
  31. class QLabel;
  32. class QSlider;
  33. class VolControl : public QWidget {
  34. Q_OBJECT
  35. private:
  36. OBSSource source;
  37. QLabel *nameLabel;
  38. QLabel *volLabel;
  39. VolumeMeter *volMeter;
  40. QSlider *slider;
  41. float levelTotal;
  42. float levelCount;
  43. obs_fader_t *obs_fader;
  44. obs_volmeter_t *obs_volmeter;
  45. static void OBSVolumeChanged(void *param, calldata_t *calldata);
  46. static void OBSVolumeLevel(void *data, calldata_t *calldata);
  47. private slots:
  48. void VolumeChanged();
  49. void VolumeLevel(float mag, float peak, float peakHold);
  50. void SliderChanged(int vol);
  51. void updateText();
  52. public:
  53. VolControl(OBSSource source);
  54. ~VolControl();
  55. inline obs_source_t *GetSource() const {return source;}
  56. QString GetName() const;
  57. void SetName(const QString &newName);
  58. };