You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.8 KiB

#pragma once
#include <QWidget>
#include <QComboBox>
#include <QProgressBar>
#include <QPushButton>
#include <QCheckBox>
#include <QSlider>
#include <QLabel>
#include <QTimer>
class DbManager;
class AudioRecorder;
class AudioCompressor;
class AudioDeviceSettingsPage : public QWidget {
Q_OBJECT
public:
explicit AudioDeviceSettingsPage(DbManager* db, QWidget* parent = nullptr);
~AudioDeviceSettingsPage() override;
void loadFromDb();
void applyAndSave();
private slots:
void onTestMicToggled();
void onTestSpeaker();
void onLevelTimer();
private:
void stopMicTest();
void buildCompressorUI(class QVBoxLayout* layout);
void updateCompressorLabels();
DbManager* m_db;
AudioRecorder* m_testRecorder = nullptr;
QComboBox* m_outputCombo;
QComboBox* m_inputCombo;
QComboBox* m_codecPresetCombo;
QProgressBar* m_micLevelBar;
QPushButton* m_testMicBtn;
QPushButton* m_testSpeakerBtn;
QTimer* m_levelTimer;
bool m_micTestActive = false;
int m_savedOutputIdx = -1;
int m_savedInputIdx = -1;
int m_savedCodecPreset = 1;
QCheckBox* m_compressorEnabledCb;
QSlider* m_compressorMaxGainSlider;
QSlider* m_compressorLookbackSlider;
QSlider* m_compressorLookaheadSlider;
QSlider* m_compressorRiseRateSlider;
QSlider* m_compressorTargetLevelSlider;
QLabel* m_compressorMaxGainLabel;
QLabel* m_compressorLookbackLabel;
QLabel* m_compressorLookaheadLabel;
QLabel* m_compressorRiseRateLabel;
QLabel* m_compressorTargetLevelLabel;
int m_savedCompressorEnabled = 0;
int m_savedCompressorMaxGainDb = 30;
int m_savedCompressorLookbackMs = 200;
int m_savedCompressorLookaheadMs = 100;
int m_savedCompressorRiseRateTenths = 20;
int m_savedCompressorTargetLevelDb = -12;
};