From 0d406f2bdcf2c403460dd78d9d31164d838af843 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jul 2019 08:35:57 -0400 Subject: DolphinQt/Config/ARCodeWidget: Deduplicate ini path We can just store this to a const local and use it to avoid doing the same work twice. --- Source/Core/DolphinQt/Config/ARCodeWidget.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'Source/Core/DolphinQt/Config/ARCodeWidget.cpp') diff --git a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp index eecefd0dee..2c045d4fa9 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -168,11 +168,13 @@ void ARCodeWidget::UpdateList() void ARCodeWidget::SaveCodes() { + const auto ini_path = + std::string(File::GetUserPath(D_GAMESETTINGS_IDX)).append(m_game_id).append(".ini"); + IniFile game_ini_local; - game_ini_local.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + m_game_id + ".ini"); + game_ini_local.Load(ini_path); ActionReplay::SaveCodes(&game_ini_local, m_ar_codes); - - game_ini_local.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + m_game_id + ".ini"); + game_ini_local.Save(ini_path); } void ARCodeWidget::AddCode(ActionReplay::ARCode code) -- cgit v1.2.3 From 4d8d2acae70e58fe4b0b86aa59f2db7af0ef5f87 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jul 2019 09:01:35 -0400 Subject: DolphinQt/Config/ARCodeWidget: Avoid unnecessary disk operations If a user indicates that they want to clone and edit an AR code, then click cancel on the following dialog, we shouldn't actually clone the code. We also shouldn't resave the codes if the edit dialog is opened and then closed again via cancel, as there's nothing that actually changed. This way we don't perform disk accesses unless they're actually necessary. --- Source/Core/DolphinQt/Config/ARCodeWidget.cpp | 41 ++++++++++++++------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'Source/Core/DolphinQt/Config/ARCodeWidget.cpp') diff --git a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp index 2c045d4fa9..4609209bc5 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -191,40 +191,43 @@ void ARCodeWidget::OnCodeAddClicked() ar.active = true; CheatCodeEditor ed(this); - ed.SetARCode(&ar); + if (ed.exec() == QDialog::Rejected) + return; - if (ed.exec()) - { - m_ar_codes.push_back(std::move(ar)); + m_ar_codes.push_back(std::move(ar)); - UpdateList(); - SaveCodes(); - } + UpdateList(); + SaveCodes(); } void ARCodeWidget::OnCodeEditClicked() { - auto items = m_code_list->selectedItems(); - + const auto items = m_code_list->selectedItems(); if (items.empty()) return; - const auto* selected = items[0]; - + const auto* const selected = items[0]; auto& current_ar = m_ar_codes[m_code_list->row(selected)]; - bool user_defined = current_ar.user_defined; - - ActionReplay::ARCode ar = current_ar; - CheatCodeEditor ed(this); + if (current_ar.user_defined) + { + ed.SetARCode(¤t_ar); - ed.SetARCode(user_defined ? ¤t_ar : &ar); - ed.exec(); + if (ed.exec() == QDialog::Rejected) + return; + } + else + { + ActionReplay::ARCode ar = current_ar; + ed.SetARCode(&ar); + + if (ed.exec() == QDialog::Rejected) + return; - if (!user_defined) - m_ar_codes.push_back(ar); + m_ar_codes.push_back(std::move(ar)); + } SaveCodes(); UpdateList(); -- cgit v1.2.3 From e08a76f9e2961d45de97838e220e3497ee67094d Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jul 2019 09:08:29 -0400 Subject: DolphinQt/Config/ARCodeWidget: Call LoadDefaultGameIni() directly This is a static function, so we don't need to go through the instance of SConfig in order to call it. --- Source/Core/DolphinQt/Config/ARCodeWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/DolphinQt/Config/ARCodeWidget.cpp') diff --git a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp index 4609209bc5..6fbfcb4906 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -36,7 +36,7 @@ ARCodeWidget::ARCodeWidget(const UICommon::GameFile& game, bool restart_required // will always be stored in GS/${GAMEID}.ini game_ini_local.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + m_game_id + ".ini"); - IniFile game_ini_default = SConfig::GetInstance().LoadDefaultGameIni(m_game_id, m_game_revision); + const IniFile game_ini_default = SConfig::LoadDefaultGameIni(m_game_id, m_game_revision); m_ar_codes = ActionReplay::LoadCodes(game_ini_default, game_ini_local); UpdateList(); -- cgit v1.2.3 From a07d19a2fd1e6a06db56649f4ae6233a358e80dd Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jul 2019 09:44:16 -0400 Subject: DolphinQt/Config/ARCodeWidget: Use forward declarations where applicable Avoids propagating headers into scopes where they're not necessary. Also uncovered reliance on an indirect inclusion within CheatsManager.cpp, which is now fixed. --- Source/Core/DolphinQt/Config/ARCodeWidget.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Source/Core/DolphinQt/Config/ARCodeWidget.cpp') diff --git a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp index 6fbfcb4906..7120eaab8a 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -43,6 +43,8 @@ ARCodeWidget::ARCodeWidget(const UICommon::GameFile& game, bool restart_required OnSelectionChanged(); } +ARCodeWidget::~ARCodeWidget() = default; + void ARCodeWidget::CreateWidgets() { m_warning = new CheatWarningWidget(m_game_id, m_restart_required, this); -- cgit v1.2.3