diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2019-10-28 16:39:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-28 16:39:10 +0100 |
| commit | 1f3d1a9b7fa2d4729ddadfc0fc923c7730a00a49 (patch) | |
| tree | 59c9aac33c104d3dc5b4039773b876cd6c389b4f /Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp | |
| parent | a825e7e09f8a39772b10c83db5322dc88e0f591f (diff) | |
| parent | da1f153b47a3f3f4eb9b976670bfddf68108bae9 (diff) | |
Merge pull request #8352 from rlnilsen/motion-controller-support-via-cemuhook-protocol
Support for motion controllers like the DualShock 4
Diffstat (limited to 'Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp new file mode 100644 index 0000000000..965f2f6879 --- /dev/null +++ b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.cpp @@ -0,0 +1,75 @@ +// Copyright 2019 Dolphin Emulator Project5~5~5~ +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.h" + +#include <QCheckBox> +#include <QGridLayout> +#include <QGroupBox> +#include <QLabel> +#include <QLineEdit> +#include <QSpinBox> + +#include "Common/Config/Config.h" +#include "InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.h" + +DualShockUDPClientWidget::DualShockUDPClientWidget() +{ + CreateWidgets(); + ConnectWidgets(); +} + +void DualShockUDPClientWidget::CreateWidgets() +{ + auto* main_layout = new QGridLayout; + + m_server_enabled = new QCheckBox(tr("Enable")); + m_server_enabled->setChecked(Config::Get(ciface::DualShockUDPClient::Settings::SERVER_ENABLED)); + + m_server_address = new QLineEdit( + QString::fromStdString(Config::Get(ciface::DualShockUDPClient::Settings::SERVER_ADDRESS))); + + m_server_port = new QSpinBox(); + m_server_port->setMaximum(65535); + m_server_port->setValue(Config::Get(ciface::DualShockUDPClient::Settings::SERVER_PORT)); + + auto* description = + new QLabel(tr("DSU protocol enables the use of input and motion data from compatible " + "sources, like PlayStation, Nintendo Switch and Steam controllers.<br><br>" + "For setup instructions, " + "<a href=\"https://wiki.dolphin-emu.org/index.php?title=DSU_Client\">" + "refer to this page</a>.")); + description->setTextFormat(Qt::RichText); + description->setWordWrap(true); + description->setTextInteractionFlags(Qt::TextBrowserInteraction); + description->setOpenExternalLinks(true); + + main_layout->addWidget(m_server_enabled, 1, 1); + main_layout->addWidget(new QLabel(tr("Server IP Address")), 2, 1); + main_layout->addWidget(m_server_address, 2, 2); + main_layout->addWidget(new QLabel(tr("Server Port")), 3, 1); + main_layout->addWidget(m_server_port, 3, 2); + main_layout->addWidget(description, 4, 1, 1, 2); + + setLayout(main_layout); +} + +void DualShockUDPClientWidget::ConnectWidgets() +{ + connect(m_server_enabled, &QCheckBox::toggled, this, [this] { + Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVER_ENABLED, + m_server_enabled->isChecked()); + }); + + connect(m_server_address, &QLineEdit::editingFinished, this, [this] { + Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVER_ADDRESS, + m_server_address->text().toStdString()); + }); + + connect(m_server_port, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, + [this] { + Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVER_PORT, + static_cast<u16>(m_server_port->value())); + }); +} |
