From a8b5eab4c4ed16547e0bd66103e0300af634fc64 Mon Sep 17 00:00:00 2001 From: Michael M Date: Fri, 3 Nov 2017 14:47:36 -0700 Subject: [PATCH] Qt GCPadWiiU: standalone dialog, not subclass of MappingWidget It uses none of the functionality of MappingWidget or the parent MappingWindow, and complicates the definition of the MappingWidget interface. --- .../DolphinQt2/Config/ControllersWindow.cpp | 5 ++- .../DolphinQt2/Config/Mapping/GCPadWiiU.cpp | 21 +++++----- .../DolphinQt2/Config/Mapping/GCPadWiiU.h | 16 ++++---- .../Config/Mapping/MappingWindow.cpp | 40 +++++-------------- .../DolphinQt2/Config/Mapping/MappingWindow.h | 3 -- 5 files changed, 32 insertions(+), 53 deletions(-) diff --git a/Source/Core/DolphinQt2/Config/ControllersWindow.cpp b/Source/Core/DolphinQt2/Config/ControllersWindow.cpp index be22be811c..86f238761d 100644 --- a/Source/Core/DolphinQt2/Config/ControllersWindow.cpp +++ b/Source/Core/DolphinQt2/Config/ControllersWindow.cpp @@ -28,6 +28,7 @@ #include "Core/IOS/IOS.h" #include "Core/IOS/USB/Bluetooth/BTReal.h" #include "Core/NetPlayProto.h" +#include "DolphinQt2/Config/Mapping/GCPadWiiU.h" #include "DolphinQt2/Config/Mapping/MappingWindow.h" #include "DolphinQt2/Settings.h" #include "UICommon/UICommon.h" @@ -417,8 +418,8 @@ void ControllersWindow::OnGCPadConfigure() type = MappingWindow::Type::MAPPING_GCPAD; break; case 2: // GameCube Adapter for Wii U - type = MappingWindow::Type::MAPPING_GCPAD_WIIU; - break; + GCPadWiiU(index, this).exec(); + return; case 3: // Steering Wheel type = MappingWindow::Type::MAPPING_GC_STEERINGWHEEL; break; diff --git a/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.cpp b/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.cpp index 11193b8bbd..f08c4b6693 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.cpp +++ b/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include +#include #include #include @@ -11,7 +12,7 @@ #include "Core/ConfigManager.h" #include "InputCommon/GCAdapter.h" -GCPadWiiU::GCPadWiiU(MappingWindow* window) : MappingWidget(window) +GCPadWiiU::GCPadWiiU(int port, QWidget* parent) : QDialog(parent), m_port{port} { CreateLayout(); ConnectWidgets(); @@ -21,15 +22,19 @@ GCPadWiiU::GCPadWiiU(MappingWindow* window) : MappingWidget(window) void GCPadWiiU::CreateLayout() { + setWindowTitle(tr("GameCube Adapter for Wii U at Port %1").arg(m_port + 1)); + const bool detected = GCAdapter::IsDetected(); m_layout = new QVBoxLayout(); m_status_label = new QLabel(detected ? tr("Adapter Detected") : tr("No Adapter Detected")); m_rumble = new QCheckBox(tr("Enable Rumble")); m_simulate_bongos = new QCheckBox(tr("Simulate DK Bongos")); + m_button_box = new QDialogButtonBox(QDialogButtonBox::Ok); m_layout->addWidget(m_status_label); m_layout->addWidget(m_rumble); m_layout->addWidget(m_simulate_bongos); + m_layout->addWidget(m_button_box); if (!detected) { @@ -44,21 +49,17 @@ void GCPadWiiU::ConnectWidgets() { connect(m_rumble, &QCheckBox::toggled, this, &GCPadWiiU::SaveSettings); connect(m_simulate_bongos, &QCheckBox::toggled, this, &GCPadWiiU::SaveSettings); + connect(m_button_box, &QDialogButtonBox::accepted, this, &GCPadWiiU::accept); } void GCPadWiiU::LoadSettings() { - m_rumble->setChecked(SConfig::GetInstance().m_AdapterRumble[GetPort()]); - m_simulate_bongos->setChecked(SConfig::GetInstance().m_AdapterKonga[GetPort()]); + m_rumble->setChecked(SConfig::GetInstance().m_AdapterRumble[m_port]); + m_simulate_bongos->setChecked(SConfig::GetInstance().m_AdapterKonga[m_port]); } void GCPadWiiU::SaveSettings() { - SConfig::GetInstance().m_AdapterRumble[GetPort()] = m_rumble->isChecked(); - SConfig::GetInstance().m_AdapterKonga[GetPort()] = m_simulate_bongos->isChecked(); -} - -InputConfig* GCPadWiiU::GetConfig() -{ - return nullptr; + SConfig::GetInstance().m_AdapterRumble[m_port] = m_rumble->isChecked(); + SConfig::GetInstance().m_AdapterKonga[m_port] = m_simulate_bongos->isChecked(); } diff --git a/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.h b/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.h index 5c3cbbe9ac..bbbacf94bb 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.h +++ b/Source/Core/DolphinQt2/Config/Mapping/GCPadWiiU.h @@ -4,28 +4,30 @@ #pragma once -#include "DolphinQt2/Config/Mapping/MappingWidget.h" +#include class QCheckBox; class QLabel; +class QDialogButtonBox; class QVBoxLayout; -class GCPadWiiU final : public MappingWidget +class GCPadWiiU final : public QDialog { public: - explicit GCPadWiiU(MappingWindow* window); - - InputConfig* GetConfig() override; + explicit GCPadWiiU(int port, QWidget* parent = nullptr); private: - void LoadSettings() override; - void SaveSettings() override; + void LoadSettings(); + void SaveSettings(); void CreateLayout(); void ConnectWidgets(); + int m_port; + QVBoxLayout* m_layout; QLabel* m_status_label; + QDialogButtonBox* m_button_box; // Checkboxes QCheckBox* m_rumble; diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.cpp index 60efad03c6..446680cdd5 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.cpp +++ b/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.cpp @@ -20,7 +20,6 @@ #include "Core/Core.h" #include "DolphinQt2/Config/Mapping/GCKeyboardEmu.h" #include "DolphinQt2/Config/Mapping/GCPadEmu.h" -#include "DolphinQt2/Config/Mapping/GCPadWiiU.h" #include "DolphinQt2/Config/Mapping/Hotkey3D.h" #include "DolphinQt2/Config/Mapping/HotkeyGeneral.h" #include "DolphinQt2/Config/Mapping/HotkeyGraphics.h" @@ -240,8 +239,6 @@ void MappingWindow::RefreshDevices() void MappingWindow::SetMappingType(MappingWindow::Type type) { - m_controller = nullptr; - MappingWidget* widget; switch (type) @@ -259,11 +256,6 @@ void MappingWindow::SetMappingType(MappingWindow::Type type) setWindowTitle(tr("GameCube Controller at Port %1").arg(GetPort() + 1)); AddWidget(tr("GameCube Controller"), widget); break; - case Type::MAPPING_GCPAD_WIIU: - widget = new GCPadWiiU(this); - setWindowTitle(tr("GameCube Adapter for Wii U at Port %1").arg(GetPort() + 1)); - AddWidget(tr("GameCube Adapter for Wii U"), widget); - break; case Type::MAPPING_WIIMOTE_EMU: case Type::MAPPING_WIIMOTE_HYBRID: { @@ -295,23 +287,18 @@ void MappingWindow::SetMappingType(MappingWindow::Type type) m_config = widget->GetConfig(); - if (m_config) + m_controller = m_config->GetController(GetPort()); + m_profiles_combo->addItem(QStringLiteral("")); + + const std::string profiles_path = + File::GetUserPath(D_CONFIG_IDX) + "Profiles/" + m_config->GetProfileName(); + for (const auto& filename : Common::DoFileSearch({profiles_path}, {".ini"})) { - m_controller = m_config->GetController(GetPort()); - m_profiles_combo->addItem(QStringLiteral("")); - - const std::string profiles_path = - File::GetUserPath(D_CONFIG_IDX) + "Profiles/" + m_config->GetProfileName(); - for (const auto& filename : Common::DoFileSearch({profiles_path}, {".ini"})) - { - std::string basename; - SplitPath(filename, nullptr, &basename, nullptr); - m_profiles_combo->addItem(QString::fromStdString(basename), QString::fromStdString(filename)); - } + std::string basename; + SplitPath(filename, nullptr, &basename, nullptr); + m_profiles_combo->addItem(QString::fromStdString(basename), QString::fromStdString(filename)); } - SetLayoutComplex(type != Type::MAPPING_GCPAD_WIIU); - if (m_controller != nullptr) RefreshDevices(); } @@ -321,15 +308,6 @@ void MappingWindow::AddWidget(const QString& name, QWidget* widget) m_tab_widget->addTab(widget, name); } -void MappingWindow::SetLayoutComplex(bool is_complex) -{ - m_reset_box->setHidden(!is_complex); - m_profiles_box->setHidden(!is_complex); - m_devices_box->setHidden(!is_complex); - - m_is_complex = is_complex; -} - int MappingWindow::GetPort() const { return m_port; diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.h b/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.h index b7c0060f99..fee581c175 100644 --- a/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.h +++ b/Source/Core/DolphinQt2/Config/Mapping/MappingWindow.h @@ -37,7 +37,6 @@ public: MAPPING_GC_DANCEMAT, MAPPING_GC_KEYBOARD, MAPPING_GCPAD, - MAPPING_GCPAD_WIIU, MAPPING_GC_STEERINGWHEEL, // Wii MAPPING_WIIMOTE_EMU, @@ -65,7 +64,6 @@ private: void CreateMainLayout(); void ConnectWidgets(); - void SetLayoutComplex(bool is_complex); void AddWidget(const QString& name, QWidget* widget); void RefreshDevices(); @@ -107,7 +105,6 @@ private: Type m_mapping_type; const int m_port; - bool m_is_complex; InputConfig* m_config; ciface::Core::DeviceQualifier m_devq; };