applets/controller: Auto accept a valid single player configuration
This commit is contained in:
		
							parent
							
								
									484623cd61
								
							
						
					
					
						commit
						5cafa70d3b
					
				| @ -229,6 +229,13 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | ||||
|     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, | ||||
|             &QtControllerSelectorDialog::ApplyConfiguration); | ||||
| 
 | ||||
|     // Enhancement: Check if the parameters have already been met before disconnecting controllers.
 | ||||
|     // If all the parameters are met AND only allows a single player,
 | ||||
|     // stop the constructor here as we do not need to continue.
 | ||||
|     if (CheckIfParametersMet() && parameters.enable_single_mode) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // If keep_controllers_connected is false, forcefully disconnect all controllers
 | ||||
|     if (!parameters.keep_controllers_connected) { | ||||
|         for (auto player : player_groupboxes) { | ||||
| @ -236,13 +243,18 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     CheckIfParametersMet(); | ||||
| 
 | ||||
|     resize(0, 0); | ||||
| } | ||||
| 
 | ||||
| QtControllerSelectorDialog::~QtControllerSelectorDialog() = default; | ||||
| 
 | ||||
| int QtControllerSelectorDialog::exec() { | ||||
|     if (parameters_met && parameters.enable_single_mode) { | ||||
|         return QDialog::Accepted; | ||||
|     } | ||||
|     return QDialog::exec(); | ||||
| } | ||||
| 
 | ||||
| void QtControllerSelectorDialog::ApplyConfiguration() { | ||||
|     // Update the controller state once more, just to be sure they are properly applied.
 | ||||
|     for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { | ||||
| @ -287,7 +299,7 @@ void QtControllerSelectorDialog::CallConfigureInputDialog() { | ||||
|     CheckIfParametersMet(); | ||||
| } | ||||
| 
 | ||||
| void QtControllerSelectorDialog::CheckIfParametersMet() { | ||||
| bool QtControllerSelectorDialog::CheckIfParametersMet() { | ||||
|     // Here, we check and validate the current configuration against all applicable parameters.
 | ||||
|     const auto num_connected_players = static_cast<int>( | ||||
|         std::count_if(player_groupboxes.begin(), player_groupboxes.end(), | ||||
| @ -301,7 +313,7 @@ void QtControllerSelectorDialog::CheckIfParametersMet() { | ||||
|         num_connected_players > max_supported_players) { | ||||
|         parameters_met = false; | ||||
|         ui->buttonBox->setEnabled(parameters_met); | ||||
|         return; | ||||
|         return parameters_met; | ||||
|     } | ||||
| 
 | ||||
|     // Next, check against all connected controllers.
 | ||||
| @ -326,14 +338,9 @@ void QtControllerSelectorDialog::CheckIfParametersMet() { | ||||
|         return true; | ||||
|     }(); | ||||
| 
 | ||||
|     if (!all_controllers_compatible) { | ||||
|         parameters_met = false; | ||||
|         ui->buttonBox->setEnabled(parameters_met); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     parameters_met = true; | ||||
|     parameters_met = all_controllers_compatible; | ||||
|     ui->buttonBox->setEnabled(parameters_met); | ||||
|     return parameters_met; | ||||
| } | ||||
| 
 | ||||
| void QtControllerSelectorDialog::SetSupportedControllers() { | ||||
|  | ||||
| @ -33,6 +33,8 @@ public: | ||||
|                                         InputCommon::InputSubsystem* input_subsystem_); | ||||
|     ~QtControllerSelectorDialog() override; | ||||
| 
 | ||||
|     int exec() override; | ||||
| 
 | ||||
| private: | ||||
|     // Applies the current configuration.
 | ||||
|     void ApplyConfiguration(); | ||||
| @ -43,9 +45,9 @@ private: | ||||
|     // Initializes the "Configure Input" Dialog.
 | ||||
|     void CallConfigureInputDialog(); | ||||
| 
 | ||||
|     // Checks the current configuration against the given parameters and
 | ||||
|     // sets the value of parameters_met.
 | ||||
|     void CheckIfParametersMet(); | ||||
|     // Checks the current configuration against the given parameters.
 | ||||
|     // This sets and returns the value of parameters_met.
 | ||||
|     bool CheckIfParametersMet(); | ||||
| 
 | ||||
|     // Sets the controller icons for "Supported Controller Types".
 | ||||
|     void SetSupportedControllers(); | ||||
|  | ||||
| @ -288,6 +288,7 @@ GMainWindow::~GMainWindow() { | ||||
| void GMainWindow::ControllerSelectorReconfigureControllers( | ||||
|     const Core::Frontend::ControllerParameters& parameters) { | ||||
|     QtControllerSelectorDialog dialog(this, parameters, input_subsystem.get()); | ||||
| 
 | ||||
|     dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint | | ||||
|                           Qt::WindowTitleHint | Qt::WindowSystemMenuHint); | ||||
|     dialog.setWindowModality(Qt::WindowModal); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Morph
						Morph