Move Audio Settings above About in GUI (#392)

This commit is contained in:
Blueroom VR 2020-12-02 11:27:43 -08:00 committed by GitHub
commit fc5306cfdd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -90,6 +90,36 @@ SettingsDialog::SettingsDialog(Settings *settings, QWidget *parent) : QDialog(pa
connect(disconnect_action_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(DisconnectActionSelected()));
general_layout->addRow(tr("Action on Disconnect:"), disconnect_action_combo_box);
audio_device_combo_box = new QComboBox(this);
audio_device_combo_box->addItem(tr("Auto"));
auto current_audio_device = settings->GetAudioOutDevice();
if(!current_audio_device.isEmpty())
{
// temporarily add the selected device before async fetching is done
audio_device_combo_box->addItem(current_audio_device, current_audio_device);
audio_device_combo_box->setCurrentIndex(1);
}
connect(audio_device_combo_box, QOverload<int>::of(&QComboBox::activated), this, [this](){
this->settings->SetAudioOutDevice(audio_device_combo_box->currentData().toString());
});
// do this async because it's slow, assuming availableDevices() is thread-safe
auto audio_devices_future = QtConcurrent::run([]() {
return QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
});
auto audio_devices_future_watcher = new QFutureWatcher<QList<QAudioDeviceInfo>>(this);
connect(audio_devices_future_watcher, &QFutureWatcher<QList<QAudioDeviceInfo>>::finished, this, [this, audio_devices_future_watcher, settings]() {
auto available_devices = audio_devices_future_watcher->result();
while(audio_device_combo_box->count() > 1) // remove all but "Auto"
audio_device_combo_box->removeItem(1);
for (QAudioDeviceInfo di : available_devices)
audio_device_combo_box->addItem(di.deviceName(), di.deviceName());
int audio_out_device_index = audio_device_combo_box->findData(settings->GetAudioOutDevice());
audio_device_combo_box->setCurrentIndex(audio_out_device_index < 0 ? 0 : audio_out_device_index);
});
audio_devices_future_watcher->setFuture(audio_devices_future);
general_layout->addRow(tr("Audio Output Device:"), audio_device_combo_box);
auto about_button = new QPushButton(tr("About Chiaki"), this);
general_layout->addRow(about_button);
@ -153,36 +183,6 @@ SettingsDialog::SettingsDialog(Settings *settings, QWidget *parent) : QDialog(pa
audio_buffer_size_edit->setPlaceholderText(tr("Default (%1)").arg(settings->GetAudioBufferSizeDefault()));
connect(audio_buffer_size_edit, &QLineEdit::textEdited, this, &SettingsDialog::AudioBufferSizeEdited);
audio_device_combo_box = new QComboBox(this);
audio_device_combo_box->addItem(tr("Auto"));
auto current_audio_device = settings->GetAudioOutDevice();
if(!current_audio_device.isEmpty())
{
// temporarily add the selected device before async fetching is done
audio_device_combo_box->addItem(current_audio_device, current_audio_device);
audio_device_combo_box->setCurrentIndex(1);
}
connect(audio_device_combo_box, QOverload<int>::of(&QComboBox::activated), this, [this](){
this->settings->SetAudioOutDevice(audio_device_combo_box->currentData().toString());
});
// do this async because it's slow, assuming availableDevices() is thread-safe
auto audio_devices_future = QtConcurrent::run([]() {
return QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
});
auto audio_devices_future_watcher = new QFutureWatcher<QList<QAudioDeviceInfo>>(this);
connect(audio_devices_future_watcher, &QFutureWatcher<QList<QAudioDeviceInfo>>::finished, this, [this, audio_devices_future_watcher, settings]() {
auto available_devices = audio_devices_future_watcher->result();
while(audio_device_combo_box->count() > 1) // remove all but "Auto"
audio_device_combo_box->removeItem(1);
for (QAudioDeviceInfo di : available_devices)
audio_device_combo_box->addItem(di.deviceName(), di.deviceName());
int audio_out_device_index = audio_device_combo_box->findData(settings->GetAudioOutDevice());
audio_device_combo_box->setCurrentIndex(audio_out_device_index < 0 ? 0 : audio_out_device_index);
});
audio_devices_future_watcher->setFuture(audio_devices_future);
general_layout->addRow(tr("Audio Output Device:"), audio_device_combo_box);
// Decode Settings
auto decode_settings = new QGroupBox(tr("Decode Settings"));