audiosettingswidget.h (1248B)
1 // SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com> 2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) 3 4 #pragma once 5 6 #include "ui_audiosettingswidget.h" 7 8 #include "common/types.h" 9 10 #include <QtWidgets/QWidget> 11 12 enum class AudioBackend : u8; 13 enum class AudioExpansionMode : u8; 14 15 class SettingsWindow; 16 17 class AudioSettingsWidget : public QWidget 18 { 19 Q_OBJECT 20 21 public: 22 AudioSettingsWidget(SettingsWindow* dialog, QWidget* parent); 23 ~AudioSettingsWidget(); 24 25 private Q_SLOTS: 26 void onExpansionModeChanged(); 27 void onStretchModeChanged(); 28 29 void updateDriverNames(); 30 void updateDeviceNames(); 31 void updateLatencyLabel(); 32 void updateVolumeLabel(); 33 void onMinimalOutputLatencyChecked(Qt::CheckState state); 34 void onOutputVolumeChanged(int new_value); 35 void onFastForwardVolumeChanged(int new_value); 36 void onOutputMutedChanged(int new_state); 37 38 void onExpansionSettingsClicked(); 39 void onStretchSettingsClicked(); 40 41 private: 42 AudioBackend getEffectiveBackend() const; 43 AudioExpansionMode getEffectiveExpansionMode() const; 44 u32 getEffectiveExpansionBlockSize() const; 45 void resetVolume(bool fast_forward); 46 47 Ui::AudioSettingsWidget m_ui; 48 SettingsWindow* m_dialog; 49 u32 m_output_device_latency = 0; 50 };