diff --git a/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.cpp b/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.cpp
index 7965892691..04b4a8b16e 100644
--- a/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.cpp
+++ b/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.cpp
@@ -19,6 +19,7 @@
#include "Core/Config/MainSettings.h"
#include "Core/Core.h"
#include "Core/System.h"
+#include "DolphinQt/Config/ConfigControls/ConfigBool.h"
#include "DolphinQt/Resources.h"
#include "DolphinQt/Settings.h"
@@ -39,8 +40,8 @@ LogitechMicWindow::LogitechMicWindow(QWidget* parent) : QWidget(parent)
void LogitechMicWindow::CreateMainWindow()
{
- auto* main_layout = new QVBoxLayout();
- auto* label = new QLabel();
+ auto* const main_layout = new QVBoxLayout;
+ auto* const label = new QLabel;
label->setText(QStringLiteral("
%1")
.arg(tr("Some settings cannot be changed when emulation is running.")));
main_layout->addWidget(label);
@@ -58,16 +59,11 @@ void LogitechMicWindow::CreateCheckboxGroup(QVBoxLayout* main_layout)
auto* checkbox_layout = new QHBoxLayout();
checkbox_layout->setAlignment(Qt::AlignHCenter);
- for (u8 index = 0; index < 4; index++)
+ for (std::size_t index = 0; index != Config::EMULATED_LOGITECH_MIC_COUNT; ++index)
{
- std::stringstream ss;
- ss << "Emulate Logitech USB Mic " << (index + 1);
- m_checkbox_mic_enabled[index] = new QCheckBox(tr(ss.str().c_str()), this);
- m_checkbox_mic_enabled[index]->setChecked(
- Config::Get(Config::MAIN_EMULATE_LOGITECH_MIC[index]));
- connect(m_checkbox_mic_enabled[index], &QCheckBox::toggled, this,
- [index, this](bool checked) { EmulateLogitechMic(index, checked); });
- checkbox_layout->addWidget(m_checkbox_mic_enabled[index]);
+ m_mic_enabled_checkboxes[index] = new ConfigBool(
+ tr("Emulate Logitech USB Mic %1").arg(index + 1), Config::MAIN_EMULATE_LOGITECH_MIC[index]);
+ checkbox_layout->addWidget(m_mic_enabled_checkboxes[index]);
}
checkbox_group->setLayout(checkbox_layout);
@@ -79,20 +75,15 @@ void LogitechMicWindow::CreateMicrophoneConfigurationGroup(QVBoxLayout* main_lay
auto* main_config_group = new QGroupBox(tr("Microphone Configuration"));
auto* main_config_layout = new QVBoxLayout();
- for (u8 index = 0; index < 4; index++)
+ for (std::size_t index = 0; index != Config::EMULATED_LOGITECH_MIC_COUNT; ++index)
{
- std::stringstream ss;
- ss << "Microphone " << (index + 1) << " Configuration";
- auto* config_group = new QGroupBox(tr(ss.str().c_str()));
- auto* config_layout = new QHBoxLayout();
+ // i18n: %1 is a number from 1 to 4.
+ auto* config_group = new QGroupBox(tr("Microphone %1 Configuration").arg(index + 1));
+ auto* const config_layout = new QHBoxLayout();
- m_checkbox_mic_muted[index] = new QCheckBox(tr("Mute"), this);
- m_checkbox_mic_muted[index]->setChecked(Settings::Instance().IsLogitechMicMuted(index));
-
- connect(m_checkbox_mic_muted[index], &QCheckBox::toggled, &Settings::Instance(),
- [index](bool checked) { Settings::Instance().SetLogitechMicMuted(index, checked); });
- m_checkbox_mic_muted[index]->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
- config_layout->addWidget(m_checkbox_mic_muted[index]);
+ auto* const mic_muted = new ConfigBool(tr("Mute"), Config::MAIN_LOGITECH_MIC_MUTED[index]);
+ mic_muted->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+ config_layout->addWidget(mic_muted);
static constexpr int FILTER_MIN = -50;
static constexpr int FILTER_MAX = 50;
@@ -100,8 +91,8 @@ void LogitechMicWindow::CreateMicrophoneConfigurationGroup(QVBoxLayout* main_lay
auto* volume_layout = new QGridLayout();
const int volume_modifier = std::clamp(
Config::Get(Config::MAIN_LOGITECH_MIC_VOLUME_MODIFIER[index]), FILTER_MIN, FILTER_MAX);
- auto filter_slider = new QSlider(Qt::Horizontal, this);
- auto slider_label = new QLabel(tr("Volume modifier (value: %1dB)").arg(volume_modifier));
+ auto* const filter_slider = new QSlider(Qt::Horizontal, this);
+ auto* const slider_label = new QLabel(tr("Volume modifier (value: %1dB)").arg(volume_modifier));
connect(filter_slider, &QSlider::valueChanged, this, [slider_label, index](int value) {
Config::SetBaseOrCurrent(Config::MAIN_LOGITECH_MIC_VOLUME_MODIFIER[index], value);
slider_label->setText(tr("Volume modifier (value: %1dB)").arg(value));
@@ -121,65 +112,51 @@ void LogitechMicWindow::CreateMicrophoneConfigurationGroup(QVBoxLayout* main_lay
config_layout->addLayout(volume_layout);
config_layout->setStretch(1, 3);
- m_combobox_microphone[index] = new QComboBox();
+ m_mic_device_comboboxes[index] = new QComboBox();
#ifndef HAVE_CUBEB
m_combobox_microphone[index]->addItem(
QLatin1String("(%1)").arg(tr("Audio backend unsupported")), QString{});
#else
- m_combobox_microphone[index]->addItem(
+ m_mic_device_comboboxes[index]->addItem(
QLatin1String("(%1)").arg(tr("Autodetect preferred microphone")), QString{});
for (auto& [device_id, device_name] : CubebUtils::ListInputDevices())
{
const auto user_data = QString::fromStdString(device_id);
- m_combobox_microphone[index]->addItem(QString::fromStdString(device_name), user_data);
+ m_mic_device_comboboxes[index]->addItem(QString::fromStdString(device_name), user_data);
}
#endif
auto current_device_id =
QString::fromStdString(Config::Get(Config::MAIN_LOGITECH_MIC_MICROPHONE[index]));
- m_combobox_microphone[index]->setCurrentIndex(
- m_combobox_microphone[index]->findData(current_device_id));
- connect(m_combobox_microphone[index], &QComboBox::currentIndexChanged, this,
+ m_mic_device_comboboxes[index]->setCurrentIndex(
+ m_mic_device_comboboxes[index]->findData(current_device_id));
+ connect(m_mic_device_comboboxes[index], &QComboBox::currentIndexChanged, this,
[index, this]() { OnInputDeviceChange(index); });
- config_layout->addWidget(m_combobox_microphone[index]);
+ config_layout->addWidget(m_mic_device_comboboxes[index]);
config_group->setLayout(config_layout);
main_config_layout->addWidget(config_group);
}
- connect(&Settings::Instance(), &Settings::LogitechMicMuteChanged, this,
- &LogitechMicWindow::OnMuteChange);
-
main_config_group->setLayout(main_config_layout);
main_layout->addWidget(main_config_group);
}
-void LogitechMicWindow::EmulateLogitechMic(u8 index, bool emulate)
-{
- Config::SetBaseOrCurrent(Config::MAIN_EMULATE_LOGITECH_MIC[index], emulate);
-}
-
void LogitechMicWindow::OnEmulationStateChanged(Core::State state)
{
const bool running = state != Core::State::Uninitialized;
- for (u8 index = 0; index < 4; index++)
+ for (std::size_t index = 0; index != Config::EMULATED_LOGITECH_MIC_COUNT; ++index)
{
- m_checkbox_mic_enabled[index]->setEnabled(!running);
- m_combobox_microphone[index]->setEnabled(!running);
+ m_mic_enabled_checkboxes[index]->setEnabled(!running);
}
}
-void LogitechMicWindow::OnInputDeviceChange(u8 index)
+void LogitechMicWindow::OnInputDeviceChange(std::size_t index)
{
- auto user_data = m_combobox_microphone[index]->currentData();
+ auto user_data = m_mic_device_comboboxes[index]->currentData();
if (user_data.isValid())
{
const std::string device_id = user_data.toString().toStdString();
Config::SetBaseOrCurrent(Config::MAIN_LOGITECH_MIC_MICROPHONE[index], device_id);
}
}
-
-void LogitechMicWindow::OnMuteChange(u8 index, bool muted)
-{
- m_checkbox_mic_muted[index]->setChecked(muted);
-}
diff --git a/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.h b/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.h
index 6bc707e34b..746aeed3ab 100644
--- a/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.h
+++ b/Source/Core/DolphinQt/EmulatedUSB/LogitechMicWindow.h
@@ -6,12 +6,13 @@
#include
#include
+#include "Core/Config/MainSettings.h"
#include "Core/Core.h"
-class QCheckBox;
+class ConfigBool;
class QComboBox;
-class LogitechMicWindow : public QWidget
+class LogitechMicWindow final : public QWidget
{
Q_OBJECT
public:
@@ -21,12 +22,10 @@ private:
void CreateMainWindow();
void CreateCheckboxGroup(QVBoxLayout* main_layout);
void CreateMicrophoneConfigurationGroup(QVBoxLayout* main_layout);
- void OnEmulationStateChanged(Core::State state);
- void EmulateLogitechMic(u8 index, bool emulate);
- void OnInputDeviceChange(u8 index);
- void OnMuteChange(u8 index, bool muted);
- std::array m_checkbox_mic_enabled;
- std::array m_checkbox_mic_muted;
- std::array m_combobox_microphone;
+ void OnEmulationStateChanged(Core::State state);
+ void OnInputDeviceChange(std::size_t index);
+
+ std::array m_mic_enabled_checkboxes;
+ std::array m_mic_device_comboboxes;
};
diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp
index 9dc5b5d67b..acc6552512 100644
--- a/Source/Core/DolphinQt/Settings.cpp
+++ b/Source/Core/DolphinQt/Settings.cpp
@@ -801,20 +801,6 @@ void Settings::SetWiiSpeakMuted(bool muted)
emit WiiSpeakMuteChanged(muted);
}
-bool Settings::IsLogitechMicMuted(u8 index) const
-{
- return Config::Get(Config::MAIN_LOGITECH_MIC_MUTED[index]);
-}
-
-void Settings::SetLogitechMicMuted(u8 index, bool muted)
-{
- if (IsLogitechMicMuted(index) == muted)
- return;
-
- Config::SetBaseOrCurrent(Config::MAIN_LOGITECH_MIC_MUTED[index], muted);
- emit LogitechMicMuteChanged(index, muted);
-}
-
void Settings::SetIsContinuouslyFrameStepping(bool is_stepping)
{
m_continuously_frame_stepping = is_stepping;
diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h
index f13dac0819..cb78e9e5c0 100644
--- a/Source/Core/DolphinQt/Settings.h
+++ b/Source/Core/DolphinQt/Settings.h
@@ -122,9 +122,6 @@ public:
bool IsWiiSpeakMuted() const;
void SetWiiSpeakMuted(bool muted);
- bool IsLogitechMicMuted(u8 index) const;
- void SetLogitechMicMuted(u8 index, bool muted);
-
void SetIsContinuouslyFrameStepping(bool is_stepping);
bool GetIsContinuouslyFrameStepping() const;
@@ -227,7 +224,6 @@ signals:
void ReleaseDevices();
void DevicesChanged();
void WiiSpeakMuteChanged(bool muted);
- void LogitechMicMuteChanged(u8 index, bool muted);
void EnableGfxModsChanged(bool enabled);
private: