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 AudioDeviceSettingsPage : public QWidget {
Q_OBJECT
public:
explicit AudioDeviceSettingsPage(DbManager* db, AudioRecorder* recorder, QWidget* parent = nullptr);
~AudioDeviceSettingsPage() override;
void setConfigPath(const QString& path) { m_configPath = path; }
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_recorder = nullptr;
AudioRecorder* m_testRecorder = nullptr;
QString m_configPath;
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_compressorRiseRateSlider;
QLabel* m_compressorMaxGainLabel;
QLabel* m_compressorRiseRateLabel;
int m_savedCompressorEnabled = 0;
int m_savedCompressorMaxGainDb = 25;
int m_savedCompressorRiseRate = 10;
QComboBox* m_radioOpusModeCombo;
QComboBox* m_radioOpusBitrateCombo;
QCheckBox* m_radioCaptureStereoCb;
int m_savedRadioOpusMode = 0;
int m_savedRadioOpusBitrate = 32;
int m_savedRadioCaptureStereo = 0;
};