mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-10-22 07:59:44 +00:00
The callback mechanism AchievementManager had until now only supported one caller registering a callback, and it didn't have any synchronization. This isn't a problem for DolphinQt, but the PR to add Android support for RetroAchievements exposes these problems. Let's replace it with HookableEvent, which can handle all of this.
43 lines
1 KiB
C++
43 lines
1 KiB
C++
// Copyright 2023 Dolphin Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#ifdef USE_RETRO_ACHIEVEMENTS
|
|
#include <QDialog>
|
|
|
|
#include "Common/HookableEvent.h"
|
|
#include "Core/AchievementManager.h"
|
|
|
|
class AchievementHeaderWidget;
|
|
class AchievementLeaderboardWidget;
|
|
class AchievementSettingsWidget;
|
|
class AchievementProgressWidget;
|
|
class QDialogButtonBox;
|
|
class QTabWidget;
|
|
class UpdateCallback;
|
|
|
|
class AchievementsWindow : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit AchievementsWindow(QWidget* parent);
|
|
void UpdateData(AchievementManager::UpdatedItems updated_items);
|
|
void ForceSettingsTab();
|
|
|
|
private:
|
|
void CreateMainLayout();
|
|
void showEvent(QShowEvent* event) override;
|
|
void ConnectWidgets();
|
|
|
|
AchievementHeaderWidget* m_header_widget;
|
|
QTabWidget* m_tab_widget;
|
|
AchievementSettingsWidget* m_settings_widget;
|
|
AchievementProgressWidget* m_progress_widget;
|
|
AchievementLeaderboardWidget* m_leaderboard_widget;
|
|
QDialogButtonBox* m_button_box;
|
|
|
|
Common::EventHook m_event_hook;
|
|
};
|
|
|
|
#endif // USE_RETRO_ACHIEVEMENTS
|