diff options
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())); + }); +} |
