From 4af021ea0335382de8e204964b341d1d97d85617 Mon Sep 17 00:00:00 2001 From: spycrab Date: Wed, 27 Jun 2018 13:20:50 +0200 Subject: [PATCH] Qt/PadMappingDialog: Retain previous settings --- .../DolphinQt2/NetPlay/PadMappingDialog.cpp | 29 +++++++++++++++---- .../DolphinQt2/NetPlay/PadMappingDialog.h | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.cpp b/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.cpp index f8fcde0003..7617475c91 100644 --- a/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.cpp +++ b/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.cpp @@ -45,11 +45,24 @@ void PadMappingDialog::CreateWidgets() void PadMappingDialog::ConnectWidgets() { connect(m_button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); + for (auto& combo_group : {m_gc_boxes, m_wii_boxes}) + { + for (auto& combo : combo_group) + { + connect(combo, static_cast(&QComboBox::currentIndexChanged), this, + &PadMappingDialog::OnMappingChanged); + } + } } int PadMappingDialog::exec() { - m_players = Settings::Instance().GetNetPlayClient()->GetPlayers(); + auto* client = Settings::Instance().GetNetPlayClient(); + auto* server = Settings::Instance().GetNetPlayServer(); + // Load Settings + m_players = client->GetPlayers(); + m_pad_mapping = server->GetPadMapping(); + m_wii_mapping = server->GetWiimoteMapping(); QStringList players; @@ -63,18 +76,24 @@ int PadMappingDialog::exec() for (auto& combo_group : {m_gc_boxes, m_wii_boxes}) { - for (auto& combo : combo_group) + bool gc = combo_group == m_gc_boxes; + for (size_t i = 0; i < combo_group.size(); i++) { + auto& combo = combo_group[i]; + const bool old = combo->blockSignals(true); + combo->clear(); combo->addItems(players); - connect(combo, static_cast(&QComboBox::currentIndexChanged), this, - &PadMappingDialog::OnMappingChanged); + + const auto index = gc ? m_pad_mapping[i] : m_wii_mapping[i]; + + combo->setCurrentIndex(index == -1 ? 0 : index); + combo->blockSignals(old); } } return QDialog::exec(); } - PadMappingArray PadMappingDialog::GetGCPadArray() { return m_pad_mapping; diff --git a/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.h b/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.h index 71779f6520..3677a1f5e5 100644 --- a/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.h +++ b/Source/Core/DolphinQt2/NetPlay/PadMappingDialog.h @@ -28,6 +28,7 @@ public: private: void CreateWidgets(); void ConnectWidgets(); + void OnMappingChanged(); PadMappingArray m_pad_mapping;