summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp
diff options
context:
space:
mode:
authorDentomologist <dentomologist@gmail.com>2025-08-24 11:12:12 -0700
committerDentomologist <dentomologist@gmail.com>2025-08-25 12:31:38 -0700
commit44f6743a5b6277bb9fc524fec8118632871d13ab (patch)
tree28b4536b73e7e88ca9a376d6f13665b32dee5b9a /Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp
parent2b7faeb920da31edb11f01c9a0473f86e4023100 (diff)
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.
Diffstat (limited to 'Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Config/GeckoCodeWidget.cpp27
1 files changed, 27 insertions, 0 deletions
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 <QFontDatabase>
#include <QFormLayout>
#include <QHBoxLayout>
+#ifdef USE_RETRO_ACHIEVEMENTS
+#include <QIcon>
+#endif // USE_RETRO_ACHIEVEMENTS
#include <QLabel>
#include <QListWidget>
#include <QMenu>
#include <QPushButton>
+#ifdef USE_RETRO_ACHIEVEMENTS
+#include <QStyle>
+#endif // USE_RETRO_ACHIEVEMENTS
#include <QTextEdit>
#include <QVBoxLayout>
#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<int>(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);
}