Merge pull request #9466 from iwubcode/common_controllers_widget

DolphinQt: Move common controller interface logic to its own widget
This commit is contained in:
Léo Lam 2021-01-27 13:06:20 +01:00 committed by GitHub
commit 093978b2e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 112 additions and 38 deletions

View File

@ -59,6 +59,8 @@ add_executable(dolphin-emu
Config/CheatCodeEditor.h Config/CheatCodeEditor.h
Config/CheatWarningWidget.cpp Config/CheatWarningWidget.cpp
Config/CheatWarningWidget.h Config/CheatWarningWidget.h
Config/CommonControllersWidget.cpp
Config/CommonControllersWidget.h
Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp
Config/ControllerInterface/DualShockUDPClientAddServerDialog.h Config/ControllerInterface/DualShockUDPClientAddServerDialog.h
Config/ControllerInterface/DualShockUDPClientWidget.cpp Config/ControllerInterface/DualShockUDPClientWidget.cpp

View File

@ -0,0 +1,68 @@
// Copyright 2021 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "DolphinQt/Config/CommonControllersWidget.h"
#include <QCheckBox>
#include <QGroupBox>
#include <QPushButton>
#include <QVBoxLayout>
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.h"
CommonControllersWidget::CommonControllersWidget(QWidget* parent) : QWidget(parent)
{
CreateLayout();
LoadSettings();
ConnectWidgets();
}
void CommonControllersWidget::CreateLayout()
{
// i18n: This is "common" as in "shared", not the opposite of "uncommon"
m_common_box = new QGroupBox(tr("Common"));
m_common_layout = new QVBoxLayout();
m_common_bg_input = new QCheckBox(tr("Background Input"));
m_common_configure_controller_interface = new QPushButton(tr("Alternate Input Sources"));
m_common_layout->addWidget(m_common_bg_input);
m_common_layout->addWidget(m_common_configure_controller_interface);
m_common_box->setLayout(m_common_layout);
auto* layout = new QVBoxLayout;
layout->setMargin(0);
layout->setAlignment(Qt::AlignTop);
layout->addWidget(m_common_box);
setLayout(layout);
}
void CommonControllersWidget::ConnectWidgets()
{
connect(m_common_bg_input, &QCheckBox::toggled, this, &CommonControllersWidget::SaveSettings);
connect(m_common_configure_controller_interface, &QPushButton::clicked, this,
&CommonControllersWidget::OnControllerInterfaceConfigure);
}
void CommonControllersWidget::OnControllerInterfaceConfigure()
{
ControllerInterfaceWindow* window = new ControllerInterfaceWindow(this);
window->setAttribute(Qt::WA_DeleteOnClose, true);
window->setWindowModality(Qt::WindowModality::WindowModal);
window->show();
}
void CommonControllersWidget::LoadSettings()
{
m_common_bg_input->setChecked(SConfig::GetInstance().m_BackgroundInput);
}
void CommonControllersWidget::SaveSettings()
{
SConfig::GetInstance().m_BackgroundInput = m_common_bg_input->isChecked();
SConfig::GetInstance().SaveSettings();
}

View File

@ -0,0 +1,35 @@
// Copyright 2021 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <QWidget>
#include <array>
class QCheckBox;
class QGroupBox;
class QVBoxLayout;
class QPushButton;
class CommonControllersWidget final : public QWidget
{
Q_OBJECT
public:
explicit CommonControllersWidget(QWidget* parent);
private:
void OnControllerInterfaceConfigure();
void CreateLayout();
void ConnectWidgets();
void LoadSettings();
void SaveSettings();
QGroupBox* m_common_box;
QVBoxLayout* m_common_layout;
QCheckBox* m_common_bg_input;
QPushButton* m_common_configure_controller_interface;
};

View File

@ -31,7 +31,7 @@
#include "Core/IOS/IOS.h" #include "Core/IOS/IOS.h"
#include "Core/IOS/USB/Bluetooth/BTReal.h" #include "Core/IOS/USB/Bluetooth/BTReal.h"
#include "DolphinQt/Config/ControllerInterface/ControllerInterfaceWindow.h" #include "DolphinQt/Config/CommonControllersWidget.h"
#include "DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h" #include "DolphinQt/Config/Mapping/GCPadWiiUConfigDialog.h"
#include "DolphinQt/Config/Mapping/MappingWindow.h" #include "DolphinQt/Config/Mapping/MappingWindow.h"
#include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/ModalMessageBox.h"
@ -68,7 +68,7 @@ ControllersWindow::ControllersWindow(QWidget* parent) : QDialog(parent)
CreateGamecubeLayout(); CreateGamecubeLayout();
CreateWiimoteLayout(); CreateWiimoteLayout();
CreateCommonLayout(); m_common = new CommonControllersWidget(this);
CreateMainLayout(); CreateMainLayout();
LoadSettings(); LoadSettings();
ConnectWidgets(); ConnectWidgets();
@ -204,20 +204,6 @@ void ControllersWindow::CreateWiimoteLayout()
m_wiimote_layout->addWidget(m_wiimote_refresh, continuous_scanning_row, 3); m_wiimote_layout->addWidget(m_wiimote_refresh, continuous_scanning_row, 3);
} }
void ControllersWindow::CreateCommonLayout()
{
// i18n: This is "common" as in "shared", not the opposite of "uncommon"
m_common_box = new QGroupBox(tr("Common"));
m_common_layout = new QVBoxLayout();
m_common_bg_input = new QCheckBox(tr("Background Input"));
m_common_configure_controller_interface = new QPushButton(tr("Alternate Input Sources"));
m_common_layout->addWidget(m_common_bg_input);
m_common_layout->addWidget(m_common_configure_controller_interface);
m_common_box->setLayout(m_common_layout);
}
void ControllersWindow::CreateMainLayout() void ControllersWindow::CreateMainLayout()
{ {
auto* layout = new QVBoxLayout(); auto* layout = new QVBoxLayout();
@ -225,7 +211,7 @@ void ControllersWindow::CreateMainLayout()
layout->addWidget(m_gc_box); layout->addWidget(m_gc_box);
layout->addWidget(m_wiimote_box); layout->addWidget(m_wiimote_box);
layout->addWidget(m_common_box); layout->addWidget(m_common);
layout->addStretch(); layout->addStretch();
layout->addWidget(m_button_box); layout->addWidget(m_button_box);
@ -246,9 +232,6 @@ void ControllersWindow::ConnectWidgets()
connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this, connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this,
&ControllersWindow::OnWiimoteModeChanged); &ControllersWindow::OnWiimoteModeChanged);
connect(m_common_bg_input, &QCheckBox::toggled, this, &ControllersWindow::SaveSettings);
connect(m_common_configure_controller_interface, &QPushButton::clicked, this,
&ControllersWindow::OnControllerInterfaceConfigure);
connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this, connect(m_wiimote_continuous_scanning, &QCheckBox::toggled, this,
&ControllersWindow::SaveSettings); &ControllersWindow::SaveSettings);
connect(m_wiimote_real_balance_board, &QCheckBox::toggled, this, connect(m_wiimote_real_balance_board, &QCheckBox::toggled, this,
@ -457,14 +440,6 @@ void ControllersWindow::OnWiimoteConfigure()
window->show(); window->show();
} }
void ControllersWindow::OnControllerInterfaceConfigure()
{
ControllerInterfaceWindow* window = new ControllerInterfaceWindow(this);
window->setAttribute(Qt::WA_DeleteOnClose, true);
window->setWindowModality(Qt::WindowModality::WindowModal);
window->show();
}
void ControllersWindow::LoadSettings() void ControllersWindow::LoadSettings()
{ {
for (size_t i = 0; i < m_wiimote_groups.size(); i++) for (size_t i = 0; i < m_wiimote_groups.size(); i++)
@ -483,8 +458,6 @@ void ControllersWindow::LoadSettings()
m_wiimote_ciface->setChecked(SConfig::GetInstance().connect_wiimotes_for_ciface); m_wiimote_ciface->setChecked(SConfig::GetInstance().connect_wiimotes_for_ciface);
m_wiimote_continuous_scanning->setChecked(SConfig::GetInstance().m_WiimoteContinuousScanning); m_wiimote_continuous_scanning->setChecked(SConfig::GetInstance().m_WiimoteContinuousScanning);
m_common_bg_input->setChecked(SConfig::GetInstance().m_BackgroundInput);
if (SConfig::GetInstance().m_bt_passthrough_enabled) if (SConfig::GetInstance().m_bt_passthrough_enabled)
m_wiimote_passthrough->setChecked(true); m_wiimote_passthrough->setChecked(true);
else else
@ -499,7 +472,6 @@ void ControllersWindow::SaveSettings()
SConfig::GetInstance().connect_wiimotes_for_ciface = m_wiimote_ciface->isChecked(); SConfig::GetInstance().connect_wiimotes_for_ciface = m_wiimote_ciface->isChecked();
SConfig::GetInstance().m_WiimoteContinuousScanning = m_wiimote_continuous_scanning->isChecked(); SConfig::GetInstance().m_WiimoteContinuousScanning = m_wiimote_continuous_scanning->isChecked();
SConfig::GetInstance().m_bt_passthrough_enabled = m_wiimote_passthrough->isChecked(); SConfig::GetInstance().m_bt_passthrough_enabled = m_wiimote_passthrough->isChecked();
SConfig::GetInstance().m_BackgroundInput = m_common_bg_input->isChecked();
WiimoteCommon::SetSource(WIIMOTE_BALANCE_BOARD, m_wiimote_real_balance_board->isChecked() ? WiimoteCommon::SetSource(WIIMOTE_BALANCE_BOARD, m_wiimote_real_balance_board->isChecked() ?
WiimoteSource::Real : WiimoteSource::Real :

View File

@ -8,6 +8,7 @@
#include <array> #include <array>
class CommonControllersWidget;
class MappingWindow; class MappingWindow;
class QDialogButtonBox; class QDialogButtonBox;
class QCheckBox; class QCheckBox;
@ -16,7 +17,6 @@ class QHBoxLayout;
class QGridLayout; class QGridLayout;
class QGroupBox; class QGroupBox;
class QLabel; class QLabel;
class QVBoxLayout;
class QPushButton; class QPushButton;
class QRadioButton; class QRadioButton;
@ -36,11 +36,9 @@ private:
void OnWiimoteRefreshPressed(); void OnWiimoteRefreshPressed();
void OnGCPadConfigure(); void OnGCPadConfigure();
void OnWiimoteConfigure(); void OnWiimoteConfigure();
void OnControllerInterfaceConfigure();
void CreateGamecubeLayout(); void CreateGamecubeLayout();
void CreateWiimoteLayout(); void CreateWiimoteLayout();
void CreateCommonLayout();
void CreateMainLayout(); void CreateMainLayout();
void ConnectWidgets(); void ConnectWidgets();
void LoadSettings(); void LoadSettings();
@ -75,8 +73,5 @@ private:
QPushButton* m_wiimote_refresh; QPushButton* m_wiimote_refresh;
// Common // Common
QGroupBox* m_common_box; CommonControllersWidget* m_common;
QVBoxLayout* m_common_layout;
QCheckBox* m_common_bg_input;
QPushButton* m_common_configure_controller_interface;
}; };

View File

@ -49,6 +49,7 @@
<ClCompile Include="Config\ARCodeWidget.cpp" /> <ClCompile Include="Config\ARCodeWidget.cpp" />
<ClCompile Include="Config\CheatCodeEditor.cpp" /> <ClCompile Include="Config\CheatCodeEditor.cpp" />
<ClCompile Include="Config\CheatWarningWidget.cpp" /> <ClCompile Include="Config\CheatWarningWidget.cpp" />
<ClCompile Include="Config\CommonControllersWidget.cpp" />
<ClCompile Include="Config\ControllerInterface\ControllerInterfaceWindow.cpp" /> <ClCompile Include="Config\ControllerInterface\ControllerInterfaceWindow.cpp" />
<ClCompile Include="Config\ControllerInterface\DualShockUDPClientAddServerDialog.cpp" /> <ClCompile Include="Config\ControllerInterface\DualShockUDPClientAddServerDialog.cpp" />
<ClCompile Include="Config\ControllerInterface\DualShockUDPClientWidget.cpp" /> <ClCompile Include="Config\ControllerInterface\DualShockUDPClientWidget.cpp" />
@ -220,6 +221,7 @@
<QtMoc Include="CheatsManager.h" /> <QtMoc Include="CheatsManager.h" />
<QtMoc Include="Config\ARCodeWidget.h" /> <QtMoc Include="Config\ARCodeWidget.h" />
<QtMoc Include="Config\CheatWarningWidget.h" /> <QtMoc Include="Config\CheatWarningWidget.h" />
<QtMoc Include="Config\CommonControllersWidget.h" />
<QtMoc Include="Config\ControllerInterface\ControllerInterfaceWindow.h" /> <QtMoc Include="Config\ControllerInterface\ControllerInterfaceWindow.h" />
<QtMoc Include="Config\ControllerInterface\DualShockUDPClientAddServerDialog.h" /> <QtMoc Include="Config\ControllerInterface\DualShockUDPClientAddServerDialog.h" />
<QtMoc Include="Config\ControllerInterface\DualShockUDPClientWidget.h" /> <QtMoc Include="Config\ControllerInterface\DualShockUDPClientWidget.h" />