From 44f6743a5b6277bb9fc524fec8118632871d13ab Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Sun, 24 Aug 2025 11:12:12 -0700 Subject: CodeWidgets: Show code approval in Hardcore mode When Hardcore mode is enabled, show an icon for each code in ARCodeWidget and GeckoCodeWidget indicating whether it's an approved code or not. --- Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp') diff --git a/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp b/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp index ddb6d656ff..aad8086853 100644 --- a/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp @@ -10,16 +10,23 @@ #include #include #include +#ifdef USE_RETRO_ACHIEVEMENTS +#include +#endif // USE_RETRO_ACHIEVEMENTS #include #include #include #include +#ifdef USE_RETRO_ACHIEVEMENTS +#include +#endif // USE_RETRO_ACHIEVEMENTS #include #include #include "Common/FileUtil.h" #include "Common/IniFile.h" +#include "Core/AchievementManager.h" #include "Core/ConfigManager.h" #include "Core/GeckoCode.h" #include "Core/GeckoCodeConfig.h" @@ -31,6 +38,9 @@ #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" #include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" +#ifdef USE_RETRO_ACHIEVEMENTS +#include "DolphinQt/Settings.h" +#endif // USE_RETRO_ACHIEVEMENTS GeckoCodeWidget::GeckoCodeWidget(std::string game_id, std::string gametdb_id, u16 game_revision, bool restart_required) @@ -158,6 +168,8 @@ void GeckoCodeWidget::ConnectWidgets() #ifdef USE_RETRO_ACHIEVEMENTS connect(m_hc_warning, &HardcoreWarningWidget::OpenAchievementSettings, this, &GeckoCodeWidget::OpenAchievementSettings); + connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, + &GeckoCodeWidget::UpdateList); #endif // USE_RETRO_ACHIEVEMENTS } @@ -356,6 +368,21 @@ void GeckoCodeWidget::UpdateList() item->setCheckState(code.enabled ? Qt::Checked : Qt::Unchecked); item->setData(Qt::UserRole, static_cast(i)); +#ifdef USE_RETRO_ACHIEVEMENTS + const AchievementManager& achievement_manager = AchievementManager::GetInstance(); + + if (achievement_manager.IsHardcoreModeActive()) + { + const QIcon approved_icon = style()->standardIcon(QStyle::SP_DialogYesButton); + const QIcon warning_icon = style()->standardIcon(QStyle::SP_MessageBoxWarning); + + if (achievement_manager.IsApprovedGeckoCode(code, m_game_id, m_game_revision)) + item->setIcon(approved_icon); + else + item->setIcon(warning_icon); + } +#endif // USE_RETRO_ACHIEVEMENTS + m_code_list->addItem(item); } -- cgit v1.2.3