applets/controller: Change the input button to create input profiles
Co-authored-by: Its-Rei <kupfel@gmail.com>
This commit is contained in:
		
							parent
							
								
									30e0d1c973
								
							
						
					
					
						commit
						760a9e8693
					
				| @ -68,12 +68,12 @@ add_executable(yuzu | ||||
|     configuration/configure_input_advanced.cpp | ||||
|     configuration/configure_input_advanced.h | ||||
|     configuration/configure_input_advanced.ui | ||||
|     configuration/configure_input_dialog.cpp | ||||
|     configuration/configure_input_dialog.h | ||||
|     configuration/configure_input_dialog.ui | ||||
|     configuration/configure_input_player.cpp | ||||
|     configuration/configure_input_player.h | ||||
|     configuration/configure_input_player.ui | ||||
|     configuration/configure_input_profile_dialog.cpp | ||||
|     configuration/configure_input_profile_dialog.h | ||||
|     configuration/configure_input_profile_dialog.ui | ||||
|     configuration/configure_motion_touch.cpp | ||||
|     configuration/configure_motion_touch.h | ||||
|     configuration/configure_motion_touch.ui | ||||
|  | ||||
| @ -13,8 +13,10 @@ | ||||
| #include "core/hle/service/sm/sm.h" | ||||
| #include "ui_controller.h" | ||||
| #include "yuzu/applets/controller.h" | ||||
| #include "yuzu/configuration/configure_input_dialog.h" | ||||
| #include "yuzu/configuration/configure_input.h" | ||||
| #include "yuzu/configuration/configure_input_profile_dialog.h" | ||||
| #include "yuzu/configuration/configure_vibration.h" | ||||
| #include "yuzu/configuration/input_profiles.h" | ||||
| #include "yuzu/main.h" | ||||
| 
 | ||||
| namespace { | ||||
| @ -109,7 +111,8 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | ||||
|     QWidget* parent, Core::Frontend::ControllerParameters parameters_, | ||||
|     InputCommon::InputSubsystem* input_subsystem_) | ||||
|     : QDialog(parent), ui(std::make_unique<Ui::QtControllerSelectorDialog>()), | ||||
|       parameters(std::move(parameters_)), input_subsystem(input_subsystem_) { | ||||
|       parameters(std::move(parameters_)), input_subsystem{input_subsystem_}, | ||||
|       input_profiles(std::make_unique<InputProfiles>()) { | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     player_widgets = { | ||||
| @ -230,7 +233,7 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | ||||
|             &QtControllerSelectorDialog::CallConfigureVibrationDialog); | ||||
| 
 | ||||
|     connect(ui->inputConfigButton, &QPushButton::clicked, this, | ||||
|             &QtControllerSelectorDialog::CallConfigureInputDialog); | ||||
|             &QtControllerSelectorDialog::CallConfigureInputProfileDialog); | ||||
| 
 | ||||
|     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, | ||||
|             &QtControllerSelectorDialog::ApplyConfiguration); | ||||
| @ -299,20 +302,13 @@ void QtControllerSelectorDialog::CallConfigureVibrationDialog() { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void QtControllerSelectorDialog::CallConfigureInputDialog() { | ||||
|     const auto max_supported_players = parameters.enable_single_mode ? 1 : parameters.max_players; | ||||
| 
 | ||||
|     ConfigureInputDialog dialog(this, max_supported_players, input_subsystem); | ||||
| void QtControllerSelectorDialog::CallConfigureInputProfileDialog() { | ||||
|     ConfigureInputProfileDialog dialog(this, input_subsystem, input_profiles.get()); | ||||
| 
 | ||||
|     dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | | ||||
|                           Qt::WindowSystemMenuHint); | ||||
|     dialog.setWindowModality(Qt::WindowModal); | ||||
|     dialog.exec(); | ||||
| 
 | ||||
|     dialog.ApplyConfiguration(); | ||||
| 
 | ||||
|     LoadConfiguration(); | ||||
|     CheckIfParametersMet(); | ||||
| } | ||||
| 
 | ||||
| bool QtControllerSelectorDialog::CheckIfParametersMet() { | ||||
|  | ||||
| @ -16,6 +16,8 @@ class QDialogButtonBox; | ||||
| class QGroupBox; | ||||
| class QLabel; | ||||
| 
 | ||||
| class InputProfiles; | ||||
| 
 | ||||
| namespace InputCommon { | ||||
| class InputSubsystem; | ||||
| } | ||||
| @ -45,8 +47,8 @@ private: | ||||
|     // Initializes the "Configure Vibration" Dialog.
 | ||||
|     void CallConfigureVibrationDialog(); | ||||
| 
 | ||||
|     // Initializes the "Configure Input" Dialog.
 | ||||
|     void CallConfigureInputDialog(); | ||||
|     // Initializes the "Create Input Profile" Dialog.
 | ||||
|     void CallConfigureInputProfileDialog(); | ||||
| 
 | ||||
|     // Checks the current configuration against the given parameters.
 | ||||
|     // This sets and returns the value of parameters_met.
 | ||||
| @ -83,6 +85,8 @@ private: | ||||
| 
 | ||||
|     InputCommon::InputSubsystem* input_subsystem; | ||||
| 
 | ||||
|     std::unique_ptr<InputProfiles> input_profiles; | ||||
| 
 | ||||
|     // This is true if and only if all parameters are met. Otherwise, this is false.
 | ||||
|     // This determines whether the "OK" button can be clicked to exit the applet.
 | ||||
|     bool parameters_met{false}; | ||||
|  | ||||
| @ -2402,7 +2402,7 @@ | ||||
|          <item> | ||||
|           <widget class="QGroupBox" name="inputConfigGroup"> | ||||
|            <property name="title"> | ||||
|             <string>Input Config</string> | ||||
|             <string>Profiles</string> | ||||
|            </property> | ||||
|            <layout class="QHBoxLayout" name="horizontalLayout_7"> | ||||
|             <property name="leftMargin"> | ||||
| @ -2429,7 +2429,7 @@ | ||||
|                <string notr="true">min-width: 68px;</string> | ||||
|               </property> | ||||
|               <property name="text"> | ||||
|                <string>Open</string> | ||||
|                <string>Create</string> | ||||
|               </property> | ||||
|              </widget> | ||||
|             </item> | ||||
|  | ||||
| @ -1,37 +0,0 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "ui_configure_input_dialog.h" | ||||
| #include "yuzu/configuration/configure_input_dialog.h" | ||||
| 
 | ||||
| ConfigureInputDialog::ConfigureInputDialog(QWidget* parent, std::size_t max_players, | ||||
|                                            InputCommon::InputSubsystem* input_subsystem) | ||||
|     : QDialog(parent), ui(std::make_unique<Ui::ConfigureInputDialog>()), | ||||
|       input_widget(new ConfigureInput(this)) { | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     input_widget->Initialize(input_subsystem, max_players); | ||||
| 
 | ||||
|     ui->inputLayout->addWidget(input_widget); | ||||
| 
 | ||||
|     RetranslateUI(); | ||||
| } | ||||
| 
 | ||||
| ConfigureInputDialog::~ConfigureInputDialog() = default; | ||||
| 
 | ||||
| void ConfigureInputDialog::ApplyConfiguration() { | ||||
|     input_widget->ApplyConfiguration(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureInputDialog::changeEvent(QEvent* event) { | ||||
|     if (event->type() == QEvent::LanguageChange) { | ||||
|         RetranslateUI(); | ||||
|     } | ||||
| 
 | ||||
|     QDialog::changeEvent(event); | ||||
| } | ||||
| 
 | ||||
| void ConfigureInputDialog::RetranslateUI() { | ||||
|     ui->retranslateUi(this); | ||||
| } | ||||
| @ -1,38 +0,0 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <memory> | ||||
| #include <QDialog> | ||||
| #include "yuzu/configuration/configure_input.h" | ||||
| 
 | ||||
| class QPushButton; | ||||
| 
 | ||||
| namespace InputCommon { | ||||
| class InputSubsystem; | ||||
| } | ||||
| 
 | ||||
| namespace Ui { | ||||
| class ConfigureInputDialog; | ||||
| } | ||||
| 
 | ||||
| class ConfigureInputDialog : public QDialog { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit ConfigureInputDialog(QWidget* parent, std::size_t max_players, | ||||
|                                   InputCommon::InputSubsystem* input_subsystem); | ||||
|     ~ConfigureInputDialog() override; | ||||
| 
 | ||||
|     void ApplyConfiguration(); | ||||
| 
 | ||||
| private: | ||||
|     void changeEvent(QEvent* event) override; | ||||
|     void RetranslateUI(); | ||||
| 
 | ||||
|     std::unique_ptr<Ui::ConfigureInputDialog> ui; | ||||
| 
 | ||||
|     ConfigureInput* input_widget; | ||||
| }; | ||||
| @ -459,11 +459,14 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | ||||
|                 }); | ||||
|     } | ||||
| 
 | ||||
|     if (debug || player_index == 9) { | ||||
|         ui->groupConnectedController->setCheckable(false); | ||||
|     } | ||||
| 
 | ||||
|     // The Debug Controller can only choose the Pro Controller.
 | ||||
|     if (debug) { | ||||
|         ui->buttonScreenshot->setEnabled(false); | ||||
|         ui->buttonHome->setEnabled(false); | ||||
|         ui->groupConnectedController->setCheckable(false); | ||||
|         QStringList debug_controller_types = { | ||||
|             tr("Pro Controller"), | ||||
|         }; | ||||
|  | ||||
							
								
								
									
										36
									
								
								src/yuzu/configuration/configure_input_profile_dialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/yuzu/configuration/configure_input_profile_dialog.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "ui_configure_input_profile_dialog.h" | ||||
| #include "yuzu/configuration/configure_input_profile_dialog.h" | ||||
| 
 | ||||
| ConfigureInputProfileDialog::ConfigureInputProfileDialog( | ||||
|     QWidget* parent, InputCommon::InputSubsystem* input_subsystem, InputProfiles* profiles) | ||||
|     : QDialog(parent), ui(std::make_unique<Ui::ConfigureInputProfileDialog>()), | ||||
|       profile_widget(new ConfigureInputPlayer(this, 9, nullptr, input_subsystem, profiles, false)) { | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     ui->controllerLayout->addWidget(profile_widget); | ||||
| 
 | ||||
|     connect(ui->clear_all_button, &QPushButton::clicked, this, | ||||
|             [this] { profile_widget->ClearAll(); }); | ||||
|     connect(ui->restore_defaults_button, &QPushButton::clicked, this, | ||||
|             [this] { profile_widget->RestoreDefaults(); }); | ||||
| 
 | ||||
|     RetranslateUI(); | ||||
| } | ||||
| 
 | ||||
| ConfigureInputProfileDialog::~ConfigureInputProfileDialog() = default; | ||||
| 
 | ||||
| void ConfigureInputProfileDialog::changeEvent(QEvent* event) { | ||||
|     if (event->type() == QEvent::LanguageChange) { | ||||
|         RetranslateUI(); | ||||
|     } | ||||
| 
 | ||||
|     QDialog::changeEvent(event); | ||||
| } | ||||
| 
 | ||||
| void ConfigureInputProfileDialog::RetranslateUI() { | ||||
|     ui->retranslateUi(this); | ||||
| } | ||||
							
								
								
									
										39
									
								
								src/yuzu/configuration/configure_input_profile_dialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/yuzu/configuration/configure_input_profile_dialog.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <memory> | ||||
| #include <QDialog> | ||||
| #include "yuzu/configuration/configure_input_player.h" | ||||
| 
 | ||||
| class QPushButton; | ||||
| 
 | ||||
| class InputProfiles; | ||||
| 
 | ||||
| namespace InputCommon { | ||||
| class InputSubsystem; | ||||
| } | ||||
| 
 | ||||
| namespace Ui { | ||||
| class ConfigureInputProfileDialog; | ||||
| } | ||||
| 
 | ||||
| class ConfigureInputProfileDialog : public QDialog { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit ConfigureInputProfileDialog(QWidget* parent, | ||||
|                                          InputCommon::InputSubsystem* input_subsystem, | ||||
|                                          InputProfiles* profiles); | ||||
|     ~ConfigureInputProfileDialog() override; | ||||
| 
 | ||||
| private: | ||||
|     void changeEvent(QEvent* event) override; | ||||
|     void RetranslateUI(); | ||||
| 
 | ||||
|     std::unique_ptr<Ui::ConfigureInputProfileDialog> ui; | ||||
| 
 | ||||
|     ConfigureInputPlayer* profile_widget; | ||||
| }; | ||||
| @ -1,7 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | ||||
|  <class>ConfigureInputDialog</class> | ||||
|  <widget class="QDialog" name="ConfigureInputDialog"> | ||||
|  <class>ConfigureInputProfileDialog</class> | ||||
|  <widget class="QDialog" name="ConfigureInputProfileDialog"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
| @ -11,7 +11,7 @@ | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>Configure Input</string> | ||||
|    <string>Create Input Profile</string> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|    <property name="spacing"> | ||||
| @ -30,10 +30,24 @@ | ||||
|     <number>9</number> | ||||
|    </property> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout" name="inputLayout"/> | ||||
|     <layout class="QHBoxLayout" name="controllerLayout"/> | ||||
|    </item> | ||||
|    <item> | ||||
|     <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="clear_all_button"> | ||||
|        <property name="text"> | ||||
|         <string>Clear</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QPushButton" name="restore_defaults_button"> | ||||
|        <property name="text"> | ||||
|         <string>Defaults</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QDialogButtonBox" name="buttonBox"> | ||||
|        <property name="standardButtons"> | ||||
| @ -50,7 +64,7 @@ | ||||
|   <connection> | ||||
|    <sender>buttonBox</sender> | ||||
|    <signal>accepted()</signal> | ||||
|    <receiver>ConfigureInputDialog</receiver> | ||||
|    <receiver>ConfigureInputProfileDialog</receiver> | ||||
|    <slot>accept()</slot> | ||||
|   </connection> | ||||
|  </connections> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Morph
						Morph