|
|
|
@ -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); |
|
|
|
|