mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Merge pull request #8277 from lioncash/code
DolphinQt/Config/ARCodeWidget: Avoid unnecessary disk operations
This commit is contained in:
@ -36,13 +36,15 @@ 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();
|
||||
OnSelectionChanged();
|
||||
}
|
||||
|
||||
ARCodeWidget::~ARCodeWidget() = default;
|
||||
|
||||
void ARCodeWidget::CreateWidgets()
|
||||
{
|
||||
m_warning = new CheatWarningWidget(m_game_id, m_restart_required, this);
|
||||
@ -168,11 +170,13 @@ void ARCodeWidget::UpdateList()
|
||||
|
||||
void ARCodeWidget::SaveCodes()
|
||||
{
|
||||
IniFile game_ini_local;
|
||||
game_ini_local.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + m_game_id + ".ini");
|
||||
ActionReplay::SaveCodes(&game_ini_local, m_ar_codes);
|
||||
const auto ini_path =
|
||||
std::string(File::GetUserPath(D_GAMESETTINGS_IDX)).append(m_game_id).append(".ini");
|
||||
|
||||
game_ini_local.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + m_game_id + ".ini");
|
||||
IniFile game_ini_local;
|
||||
game_ini_local.Load(ini_path);
|
||||
ActionReplay::SaveCodes(&game_ini_local, m_ar_codes);
|
||||
game_ini_local.Save(ini_path);
|
||||
}
|
||||
|
||||
void ARCodeWidget::AddCode(ActionReplay::ARCode code)
|
||||
@ -189,40 +193,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 (!user_defined)
|
||||
m_ar_codes.push_back(ar);
|
||||
if (ed.exec() == QDialog::Rejected)
|
||||
return;
|
||||
|
||||
m_ar_codes.push_back(std::move(ar));
|
||||
}
|
||||
|
||||
SaveCodes();
|
||||
UpdateList();
|
||||
|
Reference in New Issue
Block a user