diff options
| author | Ethan Uppal <113849268+ethanuppal@users.noreply.github.com> | 2026-04-27 20:16:14 -0400 |
|---|---|---|
| committer | Ethan Uppal <113849268+ethanuppal@users.noreply.github.com> | 2026-04-30 02:23:41 -0400 |
| commit | 4e55d2518a0f68ed47983b29caa0f21e78b0cf1b (patch) | |
| tree | b0078660934ac5722b9a429495ba4c878c63bee3 /Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp | |
| parent | 0e8fa3cacaff15283900aff67af1b3ae762008d6 (diff) | |
Config: Add Edit button to DSU server menu
Signed-off-by: Ethan Uppal <113849268+ethanuppal@users.noreply.github.com>
Diffstat (limited to 'Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp new file mode 100644 index 0000000000..aa36f0cbb6 --- /dev/null +++ b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.cpp @@ -0,0 +1,90 @@ +// Copyright 2020 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "DolphinQt/Config/ControllerInterface/DualShockUDPClientEditServerDialog.h" + +#include <fmt/format.h> + +#include <QDialog> +#include <QDialogButtonBox> +#include <QGridLayout> +#include <QLabel> +#include <QLineEdit> +#include <QPushButton> +#include <QSpinBox> +#include <QString> +#include <QWidget> + +#include "DolphinQt/Config/ControllerInterface/DualShockUDPSettings.h" +#include "DolphinQt/Config/ControllerInterface/ServerStringValidator.h" +#include "InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.h" + +DualShockUDPClientEditServerDialog::DualShockUDPClientEditServerDialog( + QWidget* parent, std::optional<size_t> existing_index) + : QDialog(parent), m_existing_index(std::move(existing_index)) +{ + CreateWidgets(); + setLayout(m_main_layout); +} + +void DualShockUDPClientEditServerDialog::CreateWidgets() +{ + setWindowTitle(tr(m_existing_index.has_value() ? "Edit DSU Server" : "Add New DSU Server")); + + m_main_layout = new QGridLayout; + + m_description = new QLineEdit(); + m_description->setPlaceholderText(tr("BetterJoy, DS4Windows, etc")); + m_description->setValidator(new ServerStringValidator(m_description)); + + m_server_address = + new QLineEdit(QString::fromStdString(ciface::DualShockUDPClient::DEFAULT_SERVER_ADDRESS)); + m_server_address->setValidator(new ServerStringValidator(m_server_address)); + + m_server_port = new QSpinBox(); + m_server_port->setMaximum(65535); + m_server_port->setValue(ciface::DualShockUDPClient::DEFAULT_SERVER_PORT); + + if (m_existing_index.has_value()) + { + const auto server = DualShockUDPSettings::GetServers()[*m_existing_index]; + m_description->setText(QString::fromStdString(server.description)); + m_server_address->setText(QString::fromStdString(server.server_address)); + m_server_port->setValue(server.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* finish_button = new QPushButton(tr(m_existing_index ? "Apply" : "Add")); + auto* cancel_button = new QPushButton(tr("Cancel")); + m_buttonbox->addButton(finish_button, QDialogButtonBox::AcceptRole); + m_buttonbox->addButton(cancel_button, QDialogButtonBox::RejectRole); + connect(finish_button, &QPushButton::clicked, this, + &DualShockUDPClientEditServerDialog::OnServerFinished); + connect(cancel_button, &QPushButton::clicked, this, &DualShockUDPClientEditServerDialog::reject); + finish_button->setDefault(true); + + m_main_layout->addWidget(m_buttonbox, 4, 0, 1, 2); +} + +void DualShockUDPClientEditServerDialog::OnServerFinished() +{ + const auto server = + DualShockUDPServer(m_description->text().toStdString(), + m_server_address->text().toStdString(), m_server_port->value()); + if (m_existing_index.has_value()) + { + DualShockUDPSettings::ReplaceServer(*m_existing_index, server); + } + else + { + DualShockUDPSettings::AddServer(server); + } + accept(); +} |
