From 58aa0150e1d3d391d5fd4e04ab402afb10a60fcc Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 9 May 2020 15:44:45 -0500 Subject: DolphinQt / InputCommon: Support multiple DSU servers --- .../DualShockUDPClientAddServerDialog.cpp | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp (limited to 'Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp') diff --git a/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp new file mode 100644 index 0000000000..ff510165db --- /dev/null +++ b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp @@ -0,0 +1,75 @@ +// Copyright 2020 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Common/Config/Config.h" +#include "InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.h" + +DualShockUDPClientAddServerDialog::DualShockUDPClientAddServerDialog(QWidget* parent) + : QDialog(parent) +{ + CreateWidgets(); + setLayout(m_main_layout); +} + +void DualShockUDPClientAddServerDialog::CreateWidgets() +{ + setWindowTitle(tr("Add New DSU Server")); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + + m_main_layout = new QGridLayout; + + m_description = new QLineEdit(); + m_description->setPlaceholderText(tr("BetterJoy, DS4Windows, etc")); + + m_server_address = + new QLineEdit(QString::fromStdString(ciface::DualShockUDPClient::DEFAULT_SERVER_ADDRESS)); + + m_server_port = new QSpinBox(); + m_server_port->setMaximum(65535); + m_server_port->setValue(ciface::DualShockUDPClient::DEFAULT_SERVER_PORT); + + m_main_layout->addWidget(new QLabel(tr("Description")), 1, 0); + m_main_layout->addWidget(m_description, 1, 1); + m_main_layout->addWidget(new QLabel(tr("Server IP Address")), 2, 0); + m_main_layout->addWidget(m_server_address, 2, 1); + m_main_layout->addWidget(new QLabel(tr("Server Port")), 3, 0); + m_main_layout->addWidget(m_server_port, 3, 1); + + m_buttonbox = new QDialogButtonBox(); + auto* add_button = new QPushButton(tr("Add")); + auto* cancel_button = new QPushButton(tr("Cancel")); + m_buttonbox->addButton(add_button, QDialogButtonBox::AcceptRole); + m_buttonbox->addButton(cancel_button, QDialogButtonBox::RejectRole); + connect(add_button, &QPushButton::clicked, this, + &DualShockUDPClientAddServerDialog::OnServerAdded); + connect(cancel_button, &QPushButton::clicked, this, &DualShockUDPClientAddServerDialog::reject); + add_button->setDefault(true); + + m_main_layout->addWidget(m_buttonbox, 4, 0, 1, 2); +} + +void DualShockUDPClientAddServerDialog::OnServerAdded() +{ + const auto& servers_setting = Config::Get(ciface::DualShockUDPClient::Settings::SERVERS); + Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVERS, + servers_setting + fmt::format("{}:{}:{};", + m_description->text().toStdString(), + m_server_address->text().toStdString(), + m_server_port->value())); + accept(); +} -- cgit v1.2.3