summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-09-24 00:14:54 +0200
committerGitHub <noreply@github.com>2022-09-24 00:14:54 +0200
commit3fa9fdf57a546b37797e222b1dd290ccfc15fd1b (patch)
treee759dd382b479ef76d41dad1a4ab90c476d577ca /Source/Core
parent3ee4c6a33bfb497d8866d0624f03853c761f754f (diff)
parent270ffa73513fe4f83d9d204e11a8f1e020e4a0ff (diff)
Merge pull request #11075 from AdmiralCurtiss/controller-gui-refresh
Qt/Controllers: Refresh GUI on settings change.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/Config/CommonControllersWidget.cpp7
-rw-r--r--Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp101
-rw-r--r--Source/Core/DolphinQt/Config/GamecubeControllersWidget.h4
-rw-r--r--Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp194
-rw-r--r--Source/Core/DolphinQt/Config/WiimoteControllersWidget.h11
5 files changed, 153 insertions, 164 deletions
diff --git a/Source/Core/DolphinQt/Config/CommonControllersWidget.cpp b/Source/Core/DolphinQt/Config/CommonControllersWidget.cpp
index 0f43658ae3..e988509f6a 100644
--- a/Source/Core/DolphinQt/Config/CommonControllersWidget.cpp
+++ b/Source/Core/DolphinQt/Config/CommonControllersWidget.cpp
@@ -13,12 +13,17 @@
#include "DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.h"
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
+#include "DolphinQt/QtUtils/SignalBlocking.h"
+#include "DolphinQt/Settings.h"
CommonControllersWidget::CommonControllersWidget(QWidget* parent) : QWidget(parent)
{
CreateLayout();
LoadSettings();
ConnectWidgets();
+
+ connect(&Settings::Instance(), &Settings::ConfigChanged, this,
+ &CommonControllersWidget::LoadSettings);
}
void CommonControllersWidget::CreateLayout()
@@ -59,7 +64,7 @@ void CommonControllersWidget::OnControllerInterfaceConfigure()
void CommonControllersWidget::LoadSettings()
{
- m_common_bg_input->setChecked(Config::Get(Config::MAIN_INPUT_BACKGROUND_INPUT));
+ SignalBlocking(m_common_bg_input)->setChecked(Config::Get(Config::MAIN_INPUT_BACKGROUND_INPUT));
}
void CommonControllersWidget::SaveSettings()
diff --git a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp
index 3b18baf1e9..2f9fc53183 100644
--- a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp
+++ b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp
@@ -22,22 +22,25 @@
#include "DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h"
#include "DolphinQt/Config/Mapping/MappingWindow.h"
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
+#include "DolphinQt/QtUtils/SignalBlocking.h"
#include "DolphinQt/Settings.h"
#include "InputCommon/GCAdapter.h"
-static const std::vector<std::pair<SerialInterface::SIDevices, const char*>> s_gc_types = {
- {SerialInterface::SIDEVICE_NONE, _trans("None")},
- {SerialInterface::SIDEVICE_GC_CONTROLLER, _trans("Standard Controller")},
- {SerialInterface::SIDEVICE_WIIU_ADAPTER, _trans("GameCube Adapter for Wii U")},
- {SerialInterface::SIDEVICE_GC_STEERING, _trans("Steering Wheel")},
- {SerialInterface::SIDEVICE_DANCEMAT, _trans("Dance Mat")},
- {SerialInterface::SIDEVICE_GC_TARUKONGA, _trans("DK Bongos")},
+using SIDeviceName = std::pair<SerialInterface::SIDevices, const char*>;
+static constexpr std::array s_gc_types = {
+ SIDeviceName{SerialInterface::SIDEVICE_NONE, _trans("None")},
+ SIDeviceName{SerialInterface::SIDEVICE_GC_CONTROLLER, _trans("Standard Controller")},
+ SIDeviceName{SerialInterface::SIDEVICE_WIIU_ADAPTER, _trans("GameCube Adapter for Wii U")},
+ SIDeviceName{SerialInterface::SIDEVICE_GC_STEERING, _trans("Steering Wheel")},
+ SIDeviceName{SerialInterface::SIDEVICE_DANCEMAT, _trans("Dance Mat")},
+ SIDeviceName{SerialInterface::SIDEVICE_GC_TARUKONGA, _trans("DK Bongos")},
#ifdef HAS_LIBMGBA
- {SerialInterface::SIDEVICE_GC_GBA_EMULATED, _trans("GBA (Integrated)")},
+ SIDeviceName{SerialInterface::SIDEVICE_GC_GBA_EMULATED, _trans("GBA (Integrated)")},
#endif
- {SerialInterface::SIDEVICE_GC_GBA, _trans("GBA (TCP)")},
- {SerialInterface::SIDEVICE_GC_KEYBOARD, _trans("Keyboard")}};
+ SIDeviceName{SerialInterface::SIDEVICE_GC_GBA, _trans("GBA (TCP)")},
+ SIDeviceName{SerialInterface::SIDEVICE_GC_KEYBOARD, _trans("Keyboard")},
+};
static std::optional<int> ToGCMenuIndex(const SerialInterface::SIDevices sidevice)
{
@@ -54,16 +57,14 @@ static SerialInterface::SIDevices FromGCMenuIndex(const int menudevice)
return s_gc_types[menudevice].first;
}
-static bool IsConfigurable(SerialInterface::SIDevices sidevice)
-{
- return sidevice != SerialInterface::SIDEVICE_NONE && sidevice != SerialInterface::SIDEVICE_GC_GBA;
-}
-
GamecubeControllersWidget::GamecubeControllersWidget(QWidget* parent) : QWidget(parent)
{
CreateLayout();
LoadSettings();
ConnectWidgets();
+
+ connect(&Settings::Instance(), &Settings::ConfigChanged, this,
+ &GamecubeControllersWidget::LoadSettings);
}
void GamecubeControllersWidget::CreateLayout()
@@ -100,43 +101,27 @@ void GamecubeControllersWidget::CreateLayout()
void GamecubeControllersWidget::ConnectWidgets()
{
- for (size_t i = 0; i < m_gc_controller_boxes.size(); i++)
+ for (size_t i = 0; i < m_gc_controller_boxes.size(); ++i)
{
connect(m_gc_controller_boxes[i], qOverload<int>(&QComboBox::currentIndexChanged), this,
- &GamecubeControllersWidget::SaveSettings);
- connect(m_gc_controller_boxes[i], qOverload<int>(&QComboBox::currentIndexChanged), this,
- &GamecubeControllersWidget::OnGCTypeChanged);
- connect(m_gc_buttons[i], &QPushButton::clicked, this,
- &GamecubeControllersWidget::OnGCPadConfigure);
+ [this, i] {
+ OnGCTypeChanged(i);
+ SaveSettings();
+ });
+ connect(m_gc_buttons[i], &QPushButton::clicked, this, [this, i] { OnGCPadConfigure(i); });
}
}
-void GamecubeControllersWidget::OnGCTypeChanged(int type)
+void GamecubeControllersWidget::OnGCTypeChanged(size_t index)
{
- const auto* box = static_cast<QComboBox*>(QObject::sender());
-
- for (size_t i = 0; i < m_gc_groups.size(); i++)
- {
- if (m_gc_controller_boxes[i] == box)
- {
- const SerialInterface::SIDevices si_device = FromGCMenuIndex(box->currentIndex());
- m_gc_buttons[i]->setEnabled(IsConfigurable(si_device));
- return;
- }
- }
-
- SaveSettings();
+ const SerialInterface::SIDevices si_device =
+ FromGCMenuIndex(m_gc_controller_boxes[index]->currentIndex());
+ m_gc_buttons[index]->setEnabled(si_device != SerialInterface::SIDEVICE_NONE &&
+ si_device != SerialInterface::SIDEVICE_GC_GBA);
}
-void GamecubeControllersWidget::OnGCPadConfigure()
+void GamecubeControllersWidget::OnGCPadConfigure(size_t index)
{
- size_t index;
- for (index = 0; index < m_gc_groups.size(); index++)
- {
- if (m_gc_buttons[index] == QObject::sender())
- break;
- }
-
MappingWindow::Type type;
switch (FromGCMenuIndex(m_gc_controller_boxes[index]->currentIndex()))
@@ -184,30 +169,32 @@ void GamecubeControllersWidget::LoadSettings()
const std::optional<int> gc_index = ToGCMenuIndex(si_device);
if (gc_index)
{
- m_gc_controller_boxes[i]->setCurrentIndex(*gc_index);
- m_gc_buttons[i]->setEnabled(IsConfigurable(si_device));
+ SignalBlocking(m_gc_controller_boxes[i])->setCurrentIndex(*gc_index);
+ OnGCTypeChanged(i);
}
}
}
void GamecubeControllersWidget::SaveSettings()
{
- for (size_t i = 0; i < m_gc_groups.size(); i++)
{
- const int index = m_gc_controller_boxes[i]->currentIndex();
- const SerialInterface::SIDevices si_device = FromGCMenuIndex(index);
- Config::SetBaseOrCurrent(Config::GetInfoForSIDevice(static_cast<int>(i)), si_device);
+ Config::ConfigChangeCallbackGuard config_guard;
- if (Core::IsRunning())
- SerialInterface::ChangeDevice(si_device, static_cast<s32>(i));
+ for (size_t i = 0; i < m_gc_groups.size(); ++i)
+ {
+ const SerialInterface::SIDevices si_device =
+ FromGCMenuIndex(m_gc_controller_boxes[i]->currentIndex());
+ Config::SetBaseOrCurrent(Config::GetInfoForSIDevice(static_cast<int>(i)), si_device);
- m_gc_buttons[i]->setEnabled(IsConfigurable(si_device));
- }
+ if (Core::IsRunning())
+ SerialInterface::ChangeDevice(si_device, static_cast<s32>(i));
+ }
- if (GCAdapter::UseAdapter())
- GCAdapter::StartScanThread();
- else
- GCAdapter::StopScanThread();
+ if (GCAdapter::UseAdapter())
+ GCAdapter::StartScanThread();
+ else
+ GCAdapter::StopScanThread();
+ }
SConfig::GetInstance().SaveSettings();
}
diff --git a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.h b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.h
index 236fd1774a..edaf405476 100644
--- a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.h
+++ b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.h
@@ -23,8 +23,8 @@ private:
void LoadSettings();
void SaveSettings();
- void OnGCTypeChanged(int state);
- void OnGCPadConfigure();
+ void OnGCTypeChanged(size_t index);
+ void OnGCPadConfigure(size_t index);
void CreateLayout();
void ConnectWidgets();
diff --git a/Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp b/Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp
index 392af928d8..6db5bc28ec 100644
--- a/Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp
+++ b/Source/Core/DolphinQt/Config/WiimoteControllersWidget.cpp
@@ -32,6 +32,7 @@
#include "DolphinQt/Config/Mapping/MappingWindow.h"
#include "DolphinQt/QtUtils/ModalMessageBox.h"
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
+#include "DolphinQt/QtUtils/SignalBlocking.h"
#include "DolphinQt/Settings.h"
#include "UICommon/UICommon.h"
@@ -39,8 +40,13 @@
WiimoteControllersWidget::WiimoteControllersWidget(QWidget* parent) : QWidget(parent)
{
CreateLayout();
- LoadSettings();
ConnectWidgets();
+
+ connect(&Settings::Instance(), &Settings::ConfigChanged, this,
+ [this] { LoadSettings(Core::GetState()); });
+ connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
+ [this](Core::State state) { LoadSettings(state); });
+ LoadSettings(Core::GetState());
}
static int GetRadioButtonIndicatorWidth()
@@ -153,20 +159,20 @@ void WiimoteControllersWidget::CreateLayout()
void WiimoteControllersWidget::ConnectWidgets()
{
- connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
- &WiimoteControllersWidget::UpdateDisabledWiimoteControls);
-
- connect(m_wiimote_passthrough, &QRadioButton::toggled, this,
- &WiimoteControllersWidget::OnWiimoteModeChanged);
- connect(m_wiimote_ciface, &QCheckBox::toggled, this,
- &WiimoteControllersWidget::OnWiimoteModeChanged);
- connect(m_wiimote_ciface, &QCheckBox::toggled, this,
- &WiimoteReal::HandleWiimotesInControllerInterfaceSettingChange);
- connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this,
- &WiimoteControllersWidget::OnWiimoteModeChanged);
-
- connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this,
- &WiimoteControllersWidget::SaveSettings);
+ connect(m_wiimote_passthrough, &QRadioButton::toggled, this, [this] {
+ SaveSettings();
+ LoadSettings(Core::GetState());
+ });
+ connect(m_wiimote_ciface, &QCheckBox::toggled, this, [this] {
+ SaveSettings();
+ LoadSettings(Core::GetState());
+ WiimoteReal::HandleWiimotesInControllerInterfaceSettingChange();
+ });
+ connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this, [this] {
+ SaveSettings();
+ LoadSettings(Core::GetState());
+ });
+
connect(m_wiimote_real_balance_board, &QCheckBox::toggled, this,
&WiimoteControllersWidget::SaveSettings);
connect(m_wiimote_speaker_data, &QCheckBox::toggled, this,
@@ -180,61 +186,15 @@ void WiimoteControllersWidget::ConnectWidgets()
for (size_t i = 0; i < m_wiimote_groups.size(); i++)
{
- connect(m_wiimote_boxes[i], qOverload<int>(&QComboBox::currentIndexChanged), this,
- &WiimoteControllersWidget::SaveSettings);
- connect(m_wiimote_boxes[i], qOverload<int>(&QComboBox::currentIndexChanged), this,
- &WiimoteControllersWidget::OnWiimoteModeChanged);
+ connect(m_wiimote_boxes[i], qOverload<int>(&QComboBox::currentIndexChanged), this, [this] {
+ SaveSettings();
+ LoadSettings(Core::GetState());
+ });
connect(m_wiimote_buttons[i], &QPushButton::clicked, this,
- &WiimoteControllersWidget::OnWiimoteConfigure);
+ [this, i] { OnWiimoteConfigure(i); });
}
}
-void WiimoteControllersWidget::OnWiimoteModeChanged()
-{
- SaveSettings();
-
- // Make sure continuous scanning setting is applied.
- WiimoteReal::Initialize(::Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
-
- UpdateDisabledWiimoteControls();
-}
-
-void WiimoteControllersWidget::UpdateDisabledWiimoteControls()
-{
- const bool running = Core::GetState() != Core::State::Uninitialized;
-
- m_wiimote_emu->setEnabled(!running);
- m_wiimote_passthrough->setEnabled(!running);
-
- const bool running_gc = running && !SConfig::GetInstance().bWii;
- const bool enable_passthrough = m_wiimote_passthrough->isChecked() && !running_gc;
- const bool enable_emu_bt = !m_wiimote_passthrough->isChecked() && !running_gc;
-
- m_wiimote_sync->setEnabled(enable_passthrough);
- m_wiimote_reset->setEnabled(enable_passthrough);
-
- for (auto* pt_label : m_wiimote_pt_labels)
- pt_label->setEnabled(enable_passthrough);
-
- for (size_t i = 0; i < m_wiimote_groups.size(); i++)
- {
- m_wiimote_labels[i]->setEnabled(enable_emu_bt);
- m_wiimote_boxes[i]->setEnabled(enable_emu_bt);
-
- const bool is_emu_wiimote = m_wiimote_boxes[i]->currentIndex() == 1;
- m_wiimote_buttons[i]->setEnabled(enable_emu_bt && is_emu_wiimote);
- }
-
- m_wiimote_real_balance_board->setEnabled(enable_emu_bt);
- m_wiimote_speaker_data->setEnabled(enable_emu_bt);
-
- const bool ciface_wiimotes = m_wiimote_ciface->isChecked();
-
- m_wiimote_refresh->setEnabled((enable_emu_bt || ciface_wiimotes) &&
- !m_wiimote_continuous_scanning->isChecked());
- m_wiimote_continuous_scanning->setEnabled(enable_emu_bt || ciface_wiimotes);
-}
-
void WiimoteControllersWidget::OnBluetoothPassthroughResetPressed()
{
const auto ios = IOS::HLE::GetIOS();
@@ -273,15 +233,8 @@ void WiimoteControllersWidget::OnWiimoteRefreshPressed()
WiimoteReal::Refresh();
}
-void WiimoteControllersWidget::OnWiimoteConfigure()
+void WiimoteControllersWidget::OnWiimoteConfigure(size_t index)
{
- size_t index;
- for (index = 0; index < m_wiimote_groups.size(); index++)
- {
- if (m_wiimote_buttons[index] == QObject::sender())
- break;
- }
-
MappingWindow::Type type;
switch (m_wiimote_boxes[index]->currentIndex())
{
@@ -301,45 +254,86 @@ void WiimoteControllersWidget::OnWiimoteConfigure()
window->show();
}
-void WiimoteControllersWidget::LoadSettings()
+void WiimoteControllersWidget::LoadSettings(Core::State state)
{
for (size_t i = 0; i < m_wiimote_groups.size(); i++)
{
- m_wiimote_boxes[i]->setCurrentIndex(int(Config::Get(Config::GetInfoForWiimoteSource(int(i)))));
+ SignalBlocking(m_wiimote_boxes[i])
+ ->setCurrentIndex(int(Config::Get(Config::GetInfoForWiimoteSource(int(i)))));
}
- m_wiimote_real_balance_board->setChecked(Config::Get(Config::WIIMOTE_BB_SOURCE) ==
- WiimoteSource::Real);
- m_wiimote_speaker_data->setChecked(Config::Get(Config::MAIN_WIIMOTE_ENABLE_SPEAKER));
- m_wiimote_ciface->setChecked(Config::Get(Config::MAIN_CONNECT_WIIMOTES_FOR_CONTROLLER_INTERFACE));
- m_wiimote_continuous_scanning->setChecked(Config::Get(Config::MAIN_WIIMOTE_CONTINUOUS_SCANNING));
+ SignalBlocking(m_wiimote_real_balance_board)
+ ->setChecked(Config::Get(Config::WIIMOTE_BB_SOURCE) == WiimoteSource::Real);
+ SignalBlocking(m_wiimote_speaker_data)
+ ->setChecked(Config::Get(Config::MAIN_WIIMOTE_ENABLE_SPEAKER));
+ SignalBlocking(m_wiimote_ciface)
+ ->setChecked(Config::Get(Config::MAIN_CONNECT_WIIMOTES_FOR_CONTROLLER_INTERFACE));
+ SignalBlocking(m_wiimote_continuous_scanning)
+ ->setChecked(Config::Get(Config::MAIN_WIIMOTE_CONTINUOUS_SCANNING));
if (Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED))
- m_wiimote_passthrough->setChecked(true);
+ SignalBlocking(m_wiimote_passthrough)->setChecked(true);
else
- m_wiimote_emu->setChecked(true);
+ SignalBlocking(m_wiimote_emu)->setChecked(true);
+
+ // Make sure continuous scanning setting is applied.
+ WiimoteReal::Initialize(::Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
+
+ const bool running = state != Core::State::Uninitialized;
+
+ m_wiimote_emu->setEnabled(!running);
+ m_wiimote_passthrough->setEnabled(!running);
+
+ const bool running_gc = running && !SConfig::GetInstance().bWii;
+ const bool enable_passthrough = m_wiimote_passthrough->isChecked() && !running_gc;
+ const bool enable_emu_bt = !m_wiimote_passthrough->isChecked() && !running_gc;
+
+ m_wiimote_sync->setEnabled(enable_passthrough);
+ m_wiimote_reset->setEnabled(enable_passthrough);
+
+ for (auto* pt_label : m_wiimote_pt_labels)
+ pt_label->setEnabled(enable_passthrough);
+
+ for (size_t i = 0; i < m_wiimote_groups.size(); i++)
+ {
+ m_wiimote_labels[i]->setEnabled(enable_emu_bt);
+ m_wiimote_boxes[i]->setEnabled(enable_emu_bt);
+
+ const bool is_emu_wiimote = m_wiimote_boxes[i]->currentIndex() == 1;
+ m_wiimote_buttons[i]->setEnabled(enable_emu_bt && is_emu_wiimote);
+ }
- OnWiimoteModeChanged();
+ m_wiimote_real_balance_board->setEnabled(enable_emu_bt);
+ m_wiimote_speaker_data->setEnabled(enable_emu_bt);
+
+ const bool ciface_wiimotes = m_wiimote_ciface->isChecked();
+
+ m_wiimote_refresh->setEnabled((enable_emu_bt || ciface_wiimotes) &&
+ !m_wiimote_continuous_scanning->isChecked());
+ m_wiimote_continuous_scanning->setEnabled(enable_emu_bt || ciface_wiimotes);
}
void WiimoteControllersWidget::SaveSettings()
{
- Config::SetBaseOrCurrent(Config::MAIN_WIIMOTE_ENABLE_SPEAKER,
- m_wiimote_speaker_data->isChecked());
- Config::SetBaseOrCurrent(Config::MAIN_CONNECT_WIIMOTES_FOR_CONTROLLER_INTERFACE,
- m_wiimote_ciface->isChecked());
- Config::SetBaseOrCurrent(Config::MAIN_WIIMOTE_CONTINUOUS_SCANNING,
- m_wiimote_continuous_scanning->isChecked());
- Config::SetBaseOrCurrent(Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED,
- m_wiimote_passthrough->isChecked());
-
- const WiimoteSource bb_source =
- m_wiimote_real_balance_board->isChecked() ? WiimoteSource::Real : WiimoteSource::None;
- Config::SetBaseOrCurrent(Config::WIIMOTE_BB_SOURCE, bb_source);
-
- for (size_t i = 0; i < m_wiimote_groups.size(); i++)
{
- const int index = m_wiimote_boxes[i]->currentIndex();
- Config::SetBaseOrCurrent(Config::GetInfoForWiimoteSource(int(i)), WiimoteSource(index));
+ Config::ConfigChangeCallbackGuard config_guard;
+ Config::SetBaseOrCurrent(Config::MAIN_WIIMOTE_ENABLE_SPEAKER,
+ m_wiimote_speaker_data->isChecked());
+ Config::SetBaseOrCurrent(Config::MAIN_CONNECT_WIIMOTES_FOR_CONTROLLER_INTERFACE,
+ m_wiimote_ciface->isChecked());
+ Config::SetBaseOrCurrent(Config::MAIN_WIIMOTE_CONTINUOUS_SCANNING,
+ m_wiimote_continuous_scanning->isChecked());
+ Config::SetBaseOrCurrent(Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED,
+ m_wiimote_passthrough->isChecked());
+
+ const WiimoteSource bb_source =
+ m_wiimote_real_balance_board->isChecked() ? WiimoteSource::Real : WiimoteSource::None;
+ Config::SetBaseOrCurrent(Config::WIIMOTE_BB_SOURCE, bb_source);
+
+ for (size_t i = 0; i < m_wiimote_groups.size(); i++)
+ {
+ const int index = m_wiimote_boxes[i]->currentIndex();
+ Config::SetBaseOrCurrent(Config::GetInfoForWiimoteSource(int(i)), WiimoteSource(index));
+ }
}
SConfig::GetInstance().SaveSettings();
diff --git a/Source/Core/DolphinQt/Config/WiimoteControllersWidget.h b/Source/Core/DolphinQt/Config/WiimoteControllersWidget.h
index 4ba49e2771..e8cf91ce4b 100644
--- a/Source/Core/DolphinQt/Config/WiimoteControllersWidget.h
+++ b/Source/Core/DolphinQt/Config/WiimoteControllersWidget.h
@@ -16,6 +16,11 @@ class QLabel;
class QPushButton;
class QRadioButton;
+namespace Core
+{
+enum class State;
+}
+
class WiimoteControllersWidget final : public QWidget
{
Q_OBJECT
@@ -23,17 +28,15 @@ public:
explicit WiimoteControllersWidget(QWidget* parent);
private:
- void OnWiimoteModeChanged();
- void UpdateDisabledWiimoteControls();
void SaveSettings();
void OnBluetoothPassthroughSyncPressed();
void OnBluetoothPassthroughResetPressed();
void OnWiimoteRefreshPressed();
- void OnWiimoteConfigure();
+ void OnWiimoteConfigure(size_t index);
void CreateLayout();
void ConnectWidgets();
- void LoadSettings();
+ void LoadSettings(Core::State state);
QGroupBox* m_wiimote_box;
QGridLayout* m_wiimote_layout;