Merge pull request #13892 from JosJuice/retroachievements-hookableevent
AchievementManager: Use HookableEvent instead of std::function callbacks
This commit is contained in:
@@ -30,12 +30,16 @@ AchievementsWindow::AchievementsWindow(QWidget* parent) : QDialog(parent)
|
||||
|
||||
CreateMainLayout();
|
||||
ConnectWidgets();
|
||||
AchievementManager::GetInstance().SetUpdateCallback(
|
||||
|
||||
m_event_hook = AchievementManager::UpdateEvent::Register(
|
||||
[this](AchievementManager::UpdatedItems updated_items) {
|
||||
QueueOnObject(this, [this, updated_items = std::move(updated_items)] {
|
||||
AchievementsWindow::UpdateData(std::move(updated_items));
|
||||
});
|
||||
});
|
||||
},
|
||||
"AchievementsWindow");
|
||||
UpdateData(AchievementManager::UpdatedItems{.all = true});
|
||||
|
||||
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
|
||||
[this] { m_settings_widget->UpdateData(RC_OK); });
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
#include <QDialog>
|
||||
|
||||
#include "Common/HookableEvent.h"
|
||||
#include "Core/AchievementManager.h"
|
||||
|
||||
class AchievementHeaderWidget;
|
||||
@@ -35,6 +36,8 @@ private:
|
||||
AchievementProgressWidget* m_progress_widget;
|
||||
AchievementLeaderboardWidget* m_leaderboard_widget;
|
||||
QDialogButtonBox* m_button_box;
|
||||
|
||||
Common::EventHook m_event_hook;
|
||||
};
|
||||
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
@@ -294,8 +294,8 @@ void MenuBar::AddToolsMenu()
|
||||
tools_menu->addAction(tr("Achievements"), this, [this] { emit ShowAchievementsWindow(); });
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
m_achievements_dev_menu = tools_menu->addMenu(tr("RetroAchievements Development"));
|
||||
AchievementManager::GetInstance().SetDevMenuUpdateCallback(
|
||||
[this] { QueueOnObject(this, [this] { this->UpdateAchievementDevelopmentMenu(); }); });
|
||||
m_raintegration_event_hook = AchievementManager::DevMenuUpdateEvent::Register(
|
||||
[this] { QueueOnObject(this, [this] { UpdateAchievementDevelopmentMenu(); }); }, "MenuBar");
|
||||
m_achievements_dev_menu->menuAction()->setVisible(false);
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
tools_menu->addSeparator();
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
#include <QPointer>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
#include "Common/HookableEvent.h"
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
class QMenu;
|
||||
class ParallelProgressDialog;
|
||||
@@ -299,4 +302,8 @@ private:
|
||||
QAction* m_jit_register_cache_off;
|
||||
|
||||
bool m_game_selected = false;
|
||||
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
Common::EventHook m_raintegration_event_hook;
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user