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/ARCodeWidget.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 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 d2aba6ed92..e1a00c68a9 100644 --- a/Source/Core/DolphinQt/Config/ARCodeWidget.cpp +++ b/Source/Core/DolphinQt/Config/ARCodeWidget.cpp @@ -8,14 +8,21 @@ #include #include +#ifdef USE_RETRO_ACHIEVEMENTS +#include +#endif // USE_RETRO_ACHIEVEMENTS #include #include #include +#ifdef USE_RETRO_ACHIEVEMENTS +#include +#endif // USE_RETRO_ACHIEVEMENTS #include #include "Common/FileUtil.h" #include "Common/IniFile.h" +#include "Core/AchievementManager.h" #include "Core/ActionReplay.h" #include "Core/ConfigManager.h" @@ -23,6 +30,9 @@ #include "DolphinQt/Config/CheatWarningWidget.h" #include "DolphinQt/Config/HardcoreWarningWidget.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" +#ifdef USE_RETRO_ACHIEVEMENTS +#include "DolphinQt/Settings.h" +#endif // USE_RETRO_ACHIEVEMENTS ARCodeWidget::ARCodeWidget(std::string game_id, u16 game_revision, bool restart_required) : m_game_id(std::move(game_id)), m_game_revision(game_revision), @@ -90,6 +100,7 @@ void ARCodeWidget::ConnectWidgets() #ifdef USE_RETRO_ACHIEVEMENTS connect(m_hc_warning, &HardcoreWarningWidget::OpenAchievementSettings, this, &ARCodeWidget::OpenAchievementSettings); + connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, &ARCodeWidget::UpdateList); #endif // USE_RETRO_ACHIEVEMENTS connect(m_code_list, &QListWidget::itemChanged, this, &ARCodeWidget::OnItemChanged); @@ -199,6 +210,21 @@ void ARCodeWidget::UpdateList() item->setCheckState(ar.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.IsApprovedARCode(ar, 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