summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/yuzu/CMakeLists.txt6
-rw-r--r--src/yuzu/applets/controller.cpp20
-rw-r--r--src/yuzu/applets/controller.h8
-rw-r--r--src/yuzu/applets/controller.ui4
-rw-r--r--src/yuzu/configuration/configure_input_dialog.cpp37
-rw-r--r--src/yuzu/configuration/configure_input_dialog.h38
-rw-r--r--src/yuzu/configuration/configure_input_player.cpp5
-rw-r--r--src/yuzu/configuration/configure_input_profile_dialog.cpp36
-rw-r--r--src/yuzu/configuration/configure_input_profile_dialog.h39
-rw-r--r--src/yuzu/configuration/configure_input_profile_dialog.ui (renamed from src/yuzu/configuration/configure_input_dialog.ui)24
10 files changed, 117 insertions, 100 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index bf1fae9fa..b16b54032 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -68,12 +68,12 @@ add_executable(yuzu
68 configuration/configure_input_advanced.cpp 68 configuration/configure_input_advanced.cpp
69 configuration/configure_input_advanced.h 69 configuration/configure_input_advanced.h
70 configuration/configure_input_advanced.ui 70 configuration/configure_input_advanced.ui
71 configuration/configure_input_dialog.cpp
72 configuration/configure_input_dialog.h
73 configuration/configure_input_dialog.ui
74 configuration/configure_input_player.cpp 71 configuration/configure_input_player.cpp
75 configuration/configure_input_player.h 72 configuration/configure_input_player.h
76 configuration/configure_input_player.ui 73 configuration/configure_input_player.ui
74 configuration/configure_input_profile_dialog.cpp
75 configuration/configure_input_profile_dialog.h
76 configuration/configure_input_profile_dialog.ui
77 configuration/configure_motion_touch.cpp 77 configuration/configure_motion_touch.cpp
78 configuration/configure_motion_touch.h 78 configuration/configure_motion_touch.h
79 configuration/configure_motion_touch.ui 79 configuration/configure_motion_touch.ui
diff --git a/src/yuzu/applets/controller.cpp b/src/yuzu/applets/controller.cpp
index 552cb7204..5112d48d2 100644
--- a/src/yuzu/applets/controller.cpp
+++ b/src/yuzu/applets/controller.cpp
@@ -13,8 +13,10 @@
13#include "core/hle/service/sm/sm.h" 13#include "core/hle/service/sm/sm.h"
14#include "ui_controller.h" 14#include "ui_controller.h"
15#include "yuzu/applets/controller.h" 15#include "yuzu/applets/controller.h"
16#include "yuzu/configuration/configure_input_dialog.h" 16#include "yuzu/configuration/configure_input.h"
17#include "yuzu/configuration/configure_input_profile_dialog.h"
17#include "yuzu/configuration/configure_vibration.h" 18#include "yuzu/configuration/configure_vibration.h"
19#include "yuzu/configuration/input_profiles.h"
18#include "yuzu/main.h" 20#include "yuzu/main.h"
19 21
20namespace { 22namespace {
@@ -109,7 +111,8 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
109 QWidget* parent, Core::Frontend::ControllerParameters parameters_, 111 QWidget* parent, Core::Frontend::ControllerParameters parameters_,
110 InputCommon::InputSubsystem* input_subsystem_) 112 InputCommon::InputSubsystem* input_subsystem_)
111 : QDialog(parent), ui(std::make_unique<Ui::QtControllerSelectorDialog>()), 113 : QDialog(parent), ui(std::make_unique<Ui::QtControllerSelectorDialog>()),
112 parameters(std::move(parameters_)), input_subsystem(input_subsystem_) { 114 parameters(std::move(parameters_)), input_subsystem{input_subsystem_},
115 input_profiles(std::make_unique<InputProfiles>()) {
113 ui->setupUi(this); 116 ui->setupUi(this);
114 117
115 player_widgets = { 118 player_widgets = {
@@ -230,7 +233,7 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
230 &QtControllerSelectorDialog::CallConfigureVibrationDialog); 233 &QtControllerSelectorDialog::CallConfigureVibrationDialog);
231 234
232 connect(ui->inputConfigButton, &QPushButton::clicked, this, 235 connect(ui->inputConfigButton, &QPushButton::clicked, this,
233 &QtControllerSelectorDialog::CallConfigureInputDialog); 236 &QtControllerSelectorDialog::CallConfigureInputProfileDialog);
234 237
235 connect(ui->buttonBox, &QDialogButtonBox::accepted, this, 238 connect(ui->buttonBox, &QDialogButtonBox::accepted, this,
236 &QtControllerSelectorDialog::ApplyConfiguration); 239 &QtControllerSelectorDialog::ApplyConfiguration);
@@ -299,20 +302,13 @@ void QtControllerSelectorDialog::CallConfigureVibrationDialog() {
299 } 302 }
300} 303}
301 304
302void QtControllerSelectorDialog::CallConfigureInputDialog() { 305void QtControllerSelectorDialog::CallConfigureInputProfileDialog() {
303 const auto max_supported_players = parameters.enable_single_mode ? 1 : parameters.max_players; 306 ConfigureInputProfileDialog dialog(this, input_subsystem, input_profiles.get());
304
305 ConfigureInputDialog dialog(this, max_supported_players, input_subsystem);
306 307
307 dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | 308 dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint |
308 Qt::WindowSystemMenuHint); 309 Qt::WindowSystemMenuHint);
309 dialog.setWindowModality(Qt::WindowModal); 310 dialog.setWindowModality(Qt::WindowModal);
310 dialog.exec(); 311 dialog.exec();
311
312 dialog.ApplyConfiguration();
313
314 LoadConfiguration();
315 CheckIfParametersMet();
316} 312}
317 313
318bool QtControllerSelectorDialog::CheckIfParametersMet() { 314bool QtControllerSelectorDialog::CheckIfParametersMet() {
diff --git a/src/yuzu/applets/controller.h b/src/yuzu/applets/controller.h
index a2ce03c8f..4344e1dd0 100644
--- a/src/yuzu/applets/controller.h
+++ b/src/yuzu/applets/controller.h
@@ -16,6 +16,8 @@ class QDialogButtonBox;
16class QGroupBox; 16class QGroupBox;
17class QLabel; 17class QLabel;
18 18
19class InputProfiles;
20
19namespace InputCommon { 21namespace InputCommon {
20class InputSubsystem; 22class InputSubsystem;
21} 23}
@@ -45,8 +47,8 @@ private:
45 // Initializes the "Configure Vibration" Dialog. 47 // Initializes the "Configure Vibration" Dialog.
46 void CallConfigureVibrationDialog(); 48 void CallConfigureVibrationDialog();
47 49
48 // Initializes the "Configure Input" Dialog. 50 // Initializes the "Create Input Profile" Dialog.
49 void CallConfigureInputDialog(); 51 void CallConfigureInputProfileDialog();
50 52
51 // Checks the current configuration against the given parameters. 53 // Checks the current configuration against the given parameters.
52 // This sets and returns the value of parameters_met. 54 // This sets and returns the value of parameters_met.
@@ -83,6 +85,8 @@ private:
83 85
84 InputCommon::InputSubsystem* input_subsystem; 86 InputCommon::InputSubsystem* input_subsystem;
85 87
88 std::unique_ptr<InputProfiles> input_profiles;
89
86 // This is true if and only if all parameters are met. Otherwise, this is false. 90 // This is true if and only if all parameters are met. Otherwise, this is false.
87 // This determines whether the "OK" button can be clicked to exit the applet. 91 // This determines whether the "OK" button can be clicked to exit the applet.
88 bool parameters_met{false}; 92 bool parameters_met{false};
diff --git a/src/yuzu/applets/controller.ui b/src/yuzu/applets/controller.ui
index 8e571ba8f..c8cb6bcf3 100644
--- a/src/yuzu/applets/controller.ui
+++ b/src/yuzu/applets/controller.ui
@@ -2402,7 +2402,7 @@
2402 <item> 2402 <item>
2403 <widget class="QGroupBox" name="inputConfigGroup"> 2403 <widget class="QGroupBox" name="inputConfigGroup">
2404 <property name="title"> 2404 <property name="title">
2405 <string>Input Config</string> 2405 <string>Profiles</string>
2406 </property> 2406 </property>
2407 <layout class="QHBoxLayout" name="horizontalLayout_7"> 2407 <layout class="QHBoxLayout" name="horizontalLayout_7">
2408 <property name="leftMargin"> 2408 <property name="leftMargin">
@@ -2429,7 +2429,7 @@
2429 <string notr="true">min-width: 68px;</string> 2429 <string notr="true">min-width: 68px;</string>
2430 </property> 2430 </property>
2431 <property name="text"> 2431 <property name="text">
2432 <string>Open</string> 2432 <string>Create</string>
2433 </property> 2433 </property>
2434 </widget> 2434 </widget>
2435 </item> 2435 </item>
diff --git a/src/yuzu/configuration/configure_input_dialog.cpp b/src/yuzu/configuration/configure_input_dialog.cpp
deleted file mode 100644
index 1866003c2..000000000
--- a/src/yuzu/configuration/configure_input_dialog.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
1// Copyright 2020 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "ui_configure_input_dialog.h"
6#include "yuzu/configuration/configure_input_dialog.h"
7
8ConfigureInputDialog::ConfigureInputDialog(QWidget* parent, std::size_t max_players,
9 InputCommon::InputSubsystem* input_subsystem)
10 : QDialog(parent), ui(std::make_unique<Ui::ConfigureInputDialog>()),
11 input_widget(new ConfigureInput(this)) {
12 ui->setupUi(this);
13
14 input_widget->Initialize(input_subsystem, max_players);
15
16 ui->inputLayout->addWidget(input_widget);
17
18 RetranslateUI();
19}
20
21ConfigureInputDialog::~ConfigureInputDialog() = default;
22
23void ConfigureInputDialog::ApplyConfiguration() {
24 input_widget->ApplyConfiguration();
25}
26
27void ConfigureInputDialog::changeEvent(QEvent* event) {
28 if (event->type() == QEvent::LanguageChange) {
29 RetranslateUI();
30 }
31
32 QDialog::changeEvent(event);
33}
34
35void ConfigureInputDialog::RetranslateUI() {
36 ui->retranslateUi(this);
37}
diff --git a/src/yuzu/configuration/configure_input_dialog.h b/src/yuzu/configuration/configure_input_dialog.h
deleted file mode 100644
index d1bd865f9..000000000
--- a/src/yuzu/configuration/configure_input_dialog.h
+++ /dev/null
@@ -1,38 +0,0 @@
1// Copyright 2020 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <memory>
8#include <QDialog>
9#include "yuzu/configuration/configure_input.h"
10
11class QPushButton;
12
13namespace InputCommon {
14class InputSubsystem;
15}
16
17namespace Ui {
18class ConfigureInputDialog;
19}
20
21class ConfigureInputDialog : public QDialog {
22 Q_OBJECT
23
24public:
25 explicit ConfigureInputDialog(QWidget* parent, std::size_t max_players,
26 InputCommon::InputSubsystem* input_subsystem);
27 ~ConfigureInputDialog() override;
28
29 void ApplyConfiguration();
30
31private:
32 void changeEvent(QEvent* event) override;
33 void RetranslateUI();
34
35 std::unique_ptr<Ui::ConfigureInputDialog> ui;
36
37 ConfigureInput* input_widget;
38};
diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp
index 1ee4725ef..4ed704793 100644
--- a/src/yuzu/configuration/configure_input_player.cpp
+++ b/src/yuzu/configuration/configure_input_player.cpp
@@ -459,11 +459,14 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
459 }); 459 });
460 } 460 }
461 461
462 if (debug || player_index == 9) {
463 ui->groupConnectedController->setCheckable(false);
464 }
465
462 // The Debug Controller can only choose the Pro Controller. 466 // The Debug Controller can only choose the Pro Controller.
463 if (debug) { 467 if (debug) {
464 ui->buttonScreenshot->setEnabled(false); 468 ui->buttonScreenshot->setEnabled(false);
465 ui->buttonHome->setEnabled(false); 469 ui->buttonHome->setEnabled(false);
466 ui->groupConnectedController->setCheckable(false);
467 QStringList debug_controller_types = { 470 QStringList debug_controller_types = {
468 tr("Pro Controller"), 471 tr("Pro Controller"),
469 }; 472 };
diff --git a/src/yuzu/configuration/configure_input_profile_dialog.cpp b/src/yuzu/configuration/configure_input_profile_dialog.cpp
new file mode 100644
index 000000000..818399b47
--- /dev/null
+++ b/src/yuzu/configuration/configure_input_profile_dialog.cpp
@@ -0,0 +1,36 @@
1// Copyright 2020 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "ui_configure_input_profile_dialog.h"
6#include "yuzu/configuration/configure_input_profile_dialog.h"
7
8ConfigureInputProfileDialog::ConfigureInputProfileDialog(
9 QWidget* parent, InputCommon::InputSubsystem* input_subsystem, InputProfiles* profiles)
10 : QDialog(parent), ui(std::make_unique<Ui::ConfigureInputProfileDialog>()),
11 profile_widget(new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, false)) {
12 ui->setupUi(this);
13
14 ui->controllerLayout->addWidget(profile_widget);
15
16 connect(ui->clear_all_button, &QPushButton::clicked, this,
17 [this] { profile_widget->ClearAll(); });
18 connect(ui->restore_defaults_button, &QPushButton::clicked, this,
19 [this] { profile_widget->RestoreDefaults(); });
20
21 RetranslateUI();
22}
23
24ConfigureInputProfileDialog::~ConfigureInputProfileDialog() = default;
25
26void ConfigureInputProfileDialog::changeEvent(QEvent* event) {
27 if (event->type() == QEvent::LanguageChange) {
28 RetranslateUI();
29 }
30
31 QDialog::changeEvent(event);
32}
33
34void ConfigureInputProfileDialog::RetranslateUI() {
35 ui->retranslateUi(this);
36}
diff --git a/src/yuzu/configuration/configure_input_profile_dialog.h b/src/yuzu/configuration/configure_input_profile_dialog.h
new file mode 100644
index 000000000..d4a3973d9
--- /dev/null
+++ b/src/yuzu/configuration/configure_input_profile_dialog.h
@@ -0,0 +1,39 @@
1// Copyright 2020 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <memory>
8#include <QDialog>
9#include "yuzu/configuration/configure_input_player.h"
10
11class QPushButton;
12
13class InputProfiles;
14
15namespace InputCommon {
16class InputSubsystem;
17}
18
19namespace Ui {
20class ConfigureInputProfileDialog;
21}
22
23class ConfigureInputProfileDialog : public QDialog {
24 Q_OBJECT
25
26public:
27 explicit ConfigureInputProfileDialog(QWidget* parent,
28 InputCommon::InputSubsystem* input_subsystem,
29 InputProfiles* profiles);
30 ~ConfigureInputProfileDialog() override;
31
32private:
33 void changeEvent(QEvent* event) override;
34 void RetranslateUI();
35
36 std::unique_ptr<Ui::ConfigureInputProfileDialog> ui;
37
38 ConfigureInputPlayer* profile_widget;
39};
diff --git a/src/yuzu/configuration/configure_input_dialog.ui b/src/yuzu/configuration/configure_input_profile_dialog.ui
index b92ddb200..726cf6905 100644
--- a/src/yuzu/configuration/configure_input_dialog.ui
+++ b/src/yuzu/configuration/configure_input_profile_dialog.ui
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0"> 2<ui version="4.0">
3 <class>ConfigureInputDialog</class> 3 <class>ConfigureInputProfileDialog</class>
4 <widget class="QDialog" name="ConfigureInputDialog"> 4 <widget class="QDialog" name="ConfigureInputProfileDialog">
5 <property name="geometry"> 5 <property name="geometry">
6 <rect> 6 <rect>
7 <x>0</x> 7 <x>0</x>
@@ -11,7 +11,7 @@
11 </rect> 11 </rect>
12 </property> 12 </property>
13 <property name="windowTitle"> 13 <property name="windowTitle">
14 <string>Configure Input</string> 14 <string>Create Input Profile</string>
15 </property> 15 </property>
16 <layout class="QVBoxLayout" name="verticalLayout"> 16 <layout class="QVBoxLayout" name="verticalLayout">
17 <property name="spacing"> 17 <property name="spacing">
@@ -30,11 +30,25 @@
30 <number>9</number> 30 <number>9</number>
31 </property> 31 </property>
32 <item> 32 <item>
33 <layout class="QHBoxLayout" name="inputLayout"/> 33 <layout class="QHBoxLayout" name="controllerLayout"/>
34 </item> 34 </item>
35 <item> 35 <item>
36 <layout class="QHBoxLayout" name="horizontalLayout"> 36 <layout class="QHBoxLayout" name="horizontalLayout">
37 <item> 37 <item>
38 <widget class="QPushButton" name="clear_all_button">
39 <property name="text">
40 <string>Clear</string>
41 </property>
42 </widget>
43 </item>
44 <item>
45 <widget class="QPushButton" name="restore_defaults_button">
46 <property name="text">
47 <string>Defaults</string>
48 </property>
49 </widget>
50 </item>
51 <item>
38 <widget class="QDialogButtonBox" name="buttonBox"> 52 <widget class="QDialogButtonBox" name="buttonBox">
39 <property name="standardButtons"> 53 <property name="standardButtons">
40 <set>QDialogButtonBox::Ok</set> 54 <set>QDialogButtonBox::Ok</set>
@@ -50,7 +64,7 @@
50 <connection> 64 <connection>
51 <sender>buttonBox</sender> 65 <sender>buttonBox</sender>
52 <signal>accepted()</signal> 66 <signal>accepted()</signal>
53 <receiver>ConfigureInputDialog</receiver> 67 <receiver>ConfigureInputProfileDialog</receiver>
54 <slot>accept()</slot> 68 <slot>accept()</slot>
55 </connection> 69 </connection>
56 </connections> 70 </connections>