diff --git a/Source/Core/DolphinQt2/GameList/GameList.cpp b/Source/Core/DolphinQt2/GameList/GameList.cpp index d59bf0bfc7..95357eb304 100644 --- a/Source/Core/DolphinQt2/GameList/GameList.cpp +++ b/Source/Core/DolphinQt2/GameList/GameList.cpp @@ -20,6 +20,7 @@ #include "Common/FileUtil.h" #include "Core/ConfigManager.h" #include "Core/Core.h" +#include "Core/HW/DVD/DVDInterface.h" #include "DiscIO/Blob.h" #include "DiscIO/Enums.h" @@ -170,6 +171,15 @@ void GameList::ShowContextMenu(const QPoint&) else if (blob_type == DiscIO::BlobType::PLAIN) AddAction(menu, tr("Compress ISO..."), this, &GameList::CompressISO); + QAction* change_disc = menu->addAction(tr("Change &Disc"), this, &GameList::ChangeDisc); + + connect(this, &GameList::EmulationStarted, change_disc, + [change_disc] { change_disc->setEnabled(true); }); + connect(this, &GameList::EmulationStopped, change_disc, + [change_disc] { change_disc->setEnabled(false); }); + + change_disc->setEnabled(Core::IsRunning()); + menu->addSeparator(); } @@ -410,6 +420,11 @@ void GameList::DeleteFile() } } +void GameList::ChangeDisc() +{ + DVDInterface::ChangeDiscAsHost(GetSelectedGame()->GetFilePath().toStdString()); +} + QSharedPointer GameList::GetSelectedGame() const { QAbstractItemView* view; diff --git a/Source/Core/DolphinQt2/GameList/GameList.h b/Source/Core/DolphinQt2/GameList/GameList.h index e01d32f0ad..3121ef9c98 100644 --- a/Source/Core/DolphinQt2/GameList/GameList.h +++ b/Source/Core/DolphinQt2/GameList/GameList.h @@ -46,6 +46,7 @@ private: void UninstallWAD(); void ExportWiiSave(); void CompressISO(); + void ChangeDisc(); void OnHeaderViewChanged(); void MakeListView();