|
|
|
@ -2323,6 +2323,8 @@ void GMainWindow::OnGameListRemoveFile(u64 program_id, GameListRemoveTarget targ
|
|
|
|
|
return tr("Delete All Transferable Shader Caches?");
|
|
|
|
|
case GameListRemoveTarget::CustomConfiguration:
|
|
|
|
|
return tr("Remove Custom Game Configuration?");
|
|
|
|
|
case GameListRemoveTarget::CacheStorage:
|
|
|
|
|
return tr("Remove Cache Storage?");
|
|
|
|
|
default:
|
|
|
|
|
return QString{};
|
|
|
|
|
}
|
|
|
|
@ -2346,6 +2348,9 @@ void GMainWindow::OnGameListRemoveFile(u64 program_id, GameListRemoveTarget targ
|
|
|
|
|
case GameListRemoveTarget::CustomConfiguration:
|
|
|
|
|
RemoveCustomConfiguration(program_id, game_path);
|
|
|
|
|
break;
|
|
|
|
|
case GameListRemoveTarget::CacheStorage:
|
|
|
|
|
RemoveCacheStorage(program_id);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2435,6 +2440,21 @@ void GMainWindow::RemoveCustomConfiguration(u64 program_id, const std::string& g
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GMainWindow::RemoveCacheStorage(u64 program_id) {
|
|
|
|
|
const auto nand_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir);
|
|
|
|
|
auto vfs_nand_dir =
|
|
|
|
|
vfs->OpenDirectory(Common::FS::PathToUTF8String(nand_dir), FileSys::Mode::Read);
|
|
|
|
|
|
|
|
|
|
const auto cache_storage_path = FileSys::SaveDataFactory::GetFullPath(
|
|
|
|
|
*system, vfs_nand_dir, FileSys::SaveDataSpaceId::NandUser,
|
|
|
|
|
FileSys::SaveDataType::CacheStorage, 0 /* program_id */, {}, 0);
|
|
|
|
|
|
|
|
|
|
const auto path = Common::FS::ConcatPathSafe(nand_dir, cache_storage_path);
|
|
|
|
|
|
|
|
|
|
// Not an error if it wasn't cleared.
|
|
|
|
|
Common::FS::RemoveDirRecursively(path);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_path,
|
|
|
|
|
DumpRomFSTarget target) {
|
|
|
|
|
const auto failed = [this] {
|
|
|
|
|