// Copyright 2019 Dolphin Emulator Project5~5~5~ // Licensed under GPLv2+ // Refer to the license.txt file included. #include "DolphinQt/Config/ControllerInterface/DualShockUDPClientWidget.h" #include #include #include #include #include #include #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_address->setEnabled(m_server_enabled->isChecked()); m_server_port = new QSpinBox(); m_server_port->setMaximum(65535); m_server_port->setValue(Config::Get(ciface::DualShockUDPClient::Settings::SERVER_PORT)); m_server_port->setEnabled(m_server_enabled->isChecked()); 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.

" "For setup instructions, " "" "refer to this page.")); 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] { bool checked = m_server_enabled->isChecked(); Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVER_ENABLED, checked); m_server_address->setEnabled(checked); m_server_port->setEnabled(checked); }); 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(&QSpinBox::valueChanged), this, [this] { Config::SetBaseOrCurrent(ciface::DualShockUDPClient::Settings::SERVER_PORT, static_cast(m_server_port->value())); }); }