| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- #include <obs.hpp>
- #include <QWidget>
- class QPushButton;
- class VolumeMeter : public QWidget
- {
- Q_OBJECT
- Q_PROPERTY(QColor bkColor READ getBkColor WRITE setBkColor DESIGNABLE true)
- Q_PROPERTY(QColor magColor READ getMagColor WRITE setMagColor DESIGNABLE true)
- Q_PROPERTY(QColor peakColor READ getPeakColor WRITE setPeakColor DESIGNABLE true)
- Q_PROPERTY(QColor peakHoldColor READ getPeakHoldColor WRITE setPeakHoldColor DESIGNABLE true)
- private:
- float mag, peak, peakHold;
- QColor bkColor, magColor, peakColor, peakHoldColor;
- QTimer *resetTimer;
- public:
- explicit VolumeMeter(QWidget *parent = 0);
- void setLevels(float nmag, float npeak, float npeakHold);
- QColor getBkColor() const;
- void setBkColor(QColor c);
- QColor getMagColor() const;
- void setMagColor(QColor c);
- QColor getPeakColor() const;
- void setPeakColor(QColor c);
- QColor getPeakHoldColor() const;
- void setPeakHoldColor(QColor c);
- protected:
- void paintEvent(QPaintEvent *event);
- private slots:
- void resetState();
- };
- class QLabel;
- class QSlider;
- class MuteCheckBox;
- class VolControl : public QWidget {
- Q_OBJECT
- private:
- OBSSource source;
- QLabel *nameLabel;
- QLabel *volLabel;
- VolumeMeter *volMeter;
- QSlider *slider;
- MuteCheckBox *mute;
- QPushButton *config = nullptr;
- float levelTotal;
- float levelCount;
- obs_fader_t *obs_fader;
- obs_volmeter_t *obs_volmeter;
- static void OBSVolumeChanged(void *param, float db);
- static void OBSVolumeLevel(void *data, float level, float mag,
- float peak, float muted);
- static void OBSVolumeMuted(void *data, calldata_t *calldata);
- void EmitConfigClicked();
- private slots:
- void VolumeChanged();
- void VolumeMuted(bool muted);
- void VolumeLevel(float mag, float peak, float peakHold, bool muted);
- void SetMuted(bool checked);
- void SliderChanged(int vol);
- void updateText();
- signals:
- void ConfigClicked();
- public:
- VolControl(OBSSource source, bool showConfig = false);
- ~VolControl();
- inline obs_source_t *GetSource() const {return source;}
- QString GetName() const;
- void SetName(const QString &newName);
- };
|