mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-28 01:49:33 -06:00
Add RetroAchievements development menu
When the menu exists, it replaces the Achievements action in the Tools menu.
This commit is contained in:
@ -64,6 +64,7 @@
|
||||
#include "DolphinQt/QtUtils/DolphinFileDialog.h"
|
||||
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
||||
#include "DolphinQt/QtUtils/ParallelProgressDialog.h"
|
||||
#include "DolphinQt/QtUtils/QueueOnObject.h"
|
||||
#include "DolphinQt/QtUtils/SetWindowDecorations.h"
|
||||
#include "DolphinQt/Settings.h"
|
||||
#include "DolphinQt/Updater.h"
|
||||
@ -71,6 +72,10 @@
|
||||
#include "UICommon/AutoUpdate.h"
|
||||
#include "UICommon/GameFile.h"
|
||||
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
#include <rcheevos/include/rc_client_raintegration.h>
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
QPointer<MenuBar> MenuBar::s_menu_bar;
|
||||
|
||||
QString MenuBar::GetSignatureSelector() const
|
||||
@ -284,8 +289,14 @@ void MenuBar::AddToolsMenu()
|
||||
tools_menu->addSeparator();
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
tools_menu->addAction(tr("Achievements"), this, [this] { emit ShowAchievementsWindow(); });
|
||||
|
||||
m_achievements_action =
|
||||
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_achievements_dev_menu->menuAction()->setVisible(false);
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
tools_menu->addSeparator();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
@ -1123,6 +1134,38 @@ void MenuBar::UpdateToolsMenu(const Core::State state)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
void MenuBar::UpdateAchievementDevelopmentMenu()
|
||||
{
|
||||
auto* dev_menu = AchievementManager::GetInstance().GetDevelopmentMenu();
|
||||
if (dev_menu)
|
||||
{
|
||||
m_achievements_dev_menu->menuAction()->setVisible(true);
|
||||
m_achievements_dev_menu->clear();
|
||||
for (u32 i = 0; i < dev_menu->num_items; i++)
|
||||
{
|
||||
const auto& menu_item = dev_menu->items[i];
|
||||
if (menu_item.label == nullptr)
|
||||
{
|
||||
m_achievements_dev_menu->addSeparator();
|
||||
continue;
|
||||
}
|
||||
auto* ra_dev_menu_item = m_achievements_dev_menu->addAction(
|
||||
QString::fromStdString(menu_item.label), this,
|
||||
[menu_item]() { AchievementManager::GetInstance().ActivateDevMenuItem(menu_item.id); });
|
||||
ra_dev_menu_item->setEnabled(menu_item.enabled);
|
||||
// Recommended hardcode by RAIntegration.dll developer Jamiras
|
||||
ra_dev_menu_item->setCheckable(i < 2);
|
||||
ra_dev_menu_item->setChecked(menu_item.checked);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_achievements_dev_menu->menuAction()->setVisible(false);
|
||||
}
|
||||
}
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
void MenuBar::InstallWAD()
|
||||
{
|
||||
QString wad_file = DolphinFileDialog::getOpenFileName(this, tr("Select Title to Install to NAND"),
|
||||
|
Reference in New Issue
Block a user