diff options
Diffstat (limited to 'Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp | 79 |
1 files changed, 79 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..f3e9a2f530 --- /dev/null +++ b/Source/Core/DolphinQt/Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp @@ -0,0 +1,79 @@ +// 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 <QString> +#include <QWidget> + +#include "Common/Config/Config.h" +#include "DolphinQt/Config/ControllerInterface/ServerStringValidator.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_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); + + 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(); +} |
