summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2020-05-09 15:44:45 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2020-07-17 14:53:39 -0500
commit58aa0150e1d3d391d5fd4e04ab402afb10a60fcc (patch)
treeadcca627f92d26bf324eea6e8d73dbaaf149aa1d /Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp
parenta98df567b11758c9581b23dc72cb1ee9afaf79ce (diff)
DolphinQt / InputCommon: Support multiple DSU servers
Diffstat (limited to 'Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp')
-rw-r--r--Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp75
1 files changed, 75 insertions, 0 deletions
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 <fmt/format.h>
+
+#include <QButtonGroup>
+#include <QDialog>
+#include <QDialogButtonBox>
+#include <QGridLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QSpinBox>
+#include <QWidget>
+
+#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();
+}