mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #4515 from lat9nq/pgs-menubar-config
main: Add an option to modify the currrent game's configuration
This commit is contained in:
		
						commit
						bbb5623f52
					
				| @ -894,6 +894,8 @@ void GMainWindow::ConnectMenuEvents() { | ||||
|     connect(ui.action_Open_FAQ, &QAction::triggered, this, &GMainWindow::OnOpenFAQ); | ||||
|     connect(ui.action_Restart, &QAction::triggered, this, [this] { BootGame(QString(game_path)); }); | ||||
|     connect(ui.action_Configure, &QAction::triggered, this, &GMainWindow::OnConfigure); | ||||
|     connect(ui.action_Configure_Current_Game, &QAction::triggered, this, | ||||
|             &GMainWindow::OnConfigurePerGame); | ||||
| 
 | ||||
|     // View
 | ||||
|     connect(ui.action_Single_Window_Mode, &QAction::triggered, this, | ||||
| @ -1167,6 +1169,7 @@ void GMainWindow::ShutdownGame() { | ||||
|     ui.action_Pause->setEnabled(false); | ||||
|     ui.action_Stop->setEnabled(false); | ||||
|     ui.action_Restart->setEnabled(false); | ||||
|     ui.action_Configure_Current_Game->setEnabled(false); | ||||
|     ui.action_Report_Compatibility->setEnabled(false); | ||||
|     ui.action_Load_Amiibo->setEnabled(false); | ||||
|     ui.action_Capture_Screenshot->setEnabled(false); | ||||
| @ -1718,26 +1721,7 @@ void GMainWindow::OnGameListOpenPerGameProperties(const std::string& file) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     ConfigurePerGame dialog(this, title_id); | ||||
|     dialog.LoadFromFile(v_file); | ||||
|     auto result = dialog.exec(); | ||||
|     if (result == QDialog::Accepted) { | ||||
|         dialog.ApplyConfiguration(); | ||||
| 
 | ||||
|         const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false); | ||||
|         if (reload) { | ||||
|             game_list->PopulateAsync(UISettings::values.game_dirs); | ||||
|         } | ||||
| 
 | ||||
|         // Do not cause the global config to write local settings into the config file
 | ||||
|         Settings::RestoreGlobalState(); | ||||
| 
 | ||||
|         if (!Core::System::GetInstance().IsPoweredOn()) { | ||||
|             config->Save(); | ||||
|         } | ||||
|     } else { | ||||
|         Settings::RestoreGlobalState(); | ||||
|     } | ||||
|     OpenPerGameConfiguration(title_id, file); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::OnMenuLoadFile() { | ||||
| @ -2066,6 +2050,7 @@ void GMainWindow::OnStartGame() { | ||||
|     ui.action_Pause->setEnabled(true); | ||||
|     ui.action_Stop->setEnabled(true); | ||||
|     ui.action_Restart->setEnabled(true); | ||||
|     ui.action_Configure_Current_Game->setEnabled(true); | ||||
|     ui.action_Report_Compatibility->setEnabled(true); | ||||
| 
 | ||||
|     discord_rpc->Update(); | ||||
| @ -2255,6 +2240,36 @@ void GMainWindow::OnConfigure() { | ||||
|     UpdateStatusButtons(); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::OnConfigurePerGame() { | ||||
|     const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID(); | ||||
|     OpenPerGameConfiguration(title_id, game_path.toStdString()); | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file_name) { | ||||
|     const auto v_file = Core::GetGameFileFromPath(vfs, file_name); | ||||
| 
 | ||||
|     ConfigurePerGame dialog(this, title_id); | ||||
|     dialog.LoadFromFile(v_file); | ||||
|     auto result = dialog.exec(); | ||||
|     if (result == QDialog::Accepted) { | ||||
|         dialog.ApplyConfiguration(); | ||||
| 
 | ||||
|         const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false); | ||||
|         if (reload) { | ||||
|             game_list->PopulateAsync(UISettings::values.game_dirs); | ||||
|         } | ||||
| 
 | ||||
|         // Do not cause the global config to write local settings into the config file
 | ||||
|         Settings::RestoreGlobalState(); | ||||
| 
 | ||||
|         if (!Core::System::GetInstance().IsPoweredOn()) { | ||||
|             config->Save(); | ||||
|         } | ||||
|     } else { | ||||
|         Settings::RestoreGlobalState(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void GMainWindow::OnLoadAmiibo() { | ||||
|     const QString extensions{QStringLiteral("*.bin")}; | ||||
|     const QString file_filter = tr("Amiibo File (%1);; All Files (*.*)").arg(extensions); | ||||
|  | ||||
| @ -216,6 +216,7 @@ private slots: | ||||
|     void OnMenuInstallToNAND(); | ||||
|     void OnMenuRecentFile(); | ||||
|     void OnConfigure(); | ||||
|     void OnConfigurePerGame(); | ||||
|     void OnLoadAmiibo(); | ||||
|     void OnOpenYuzuFolder(); | ||||
|     void OnAbout(); | ||||
| @ -249,6 +250,7 @@ private: | ||||
|     void ShowMouseCursor(); | ||||
|     void OpenURL(const QUrl& url); | ||||
|     void LoadTranslation(); | ||||
|     void OpenPerGameConfiguration(u64 title_id, const std::string& file_name); | ||||
| 
 | ||||
|     Ui::MainWindow ui; | ||||
| 
 | ||||
|  | ||||
| @ -81,6 +81,7 @@ | ||||
|     <addaction name="action_Restart"/> | ||||
|     <addaction name="separator"/> | ||||
|     <addaction name="action_Configure"/> | ||||
|     <addaction name="action_Configure_Current_Game"/> | ||||
|    </widget> | ||||
|    <widget class="QMenu" name="menu_View"> | ||||
|     <property name="title"> | ||||
| @ -287,6 +288,14 @@ | ||||
|     <string>Capture Screenshot</string> | ||||
|    </property> | ||||
|   </action> | ||||
|   <action name="action_Configure_Current_Game"> | ||||
|    <property name="enabled"> | ||||
|     <bool>false</bool> | ||||
|    </property> | ||||
|    <property name="text"> | ||||
|     <string>Configure Current Game..</string> | ||||
|    </property> | ||||
|   </action> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  <connections/> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei