From 6e2816e51120453d87a0be98ab810aab1d37cd8b Mon Sep 17 00:00:00 2001 From: nishinji Date: Fri, 8 Sep 2023 23:52:21 +0900 Subject: [PATCH] gui/pkg_install_dialog: Allow license files to be automatically selected if it is already exist --- vita3k/gui/src/pkg_install_dialog.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/vita3k/gui/src/pkg_install_dialog.cpp b/vita3k/gui/src/pkg_install_dialog.cpp index 83d877855b..f24be3846c 100644 --- a/vita3k/gui/src/pkg_install_dialog.cpp +++ b/vita3k/gui/src/pkg_install_dialog.cpp @@ -49,9 +49,24 @@ void draw_pkg_install_dialog(GuiState &gui, EmuEnvState &emuenv) { if (draw_file_dialog) { result = host::dialog::filesystem::open_file(pkg_path, { { "PlayStation Store Downloaded Package", { "pkg" } } }); draw_file_dialog = false; - if (result == host::dialog::filesystem::Result::SUCCESS) + if (result == host::dialog::filesystem::Result::SUCCESS) { + fs::ifstream infile(pkg_path.string(), std::ios::binary); + PkgHeader pkg_header{}; + infile.read(reinterpret_cast(&pkg_header), sizeof(PkgHeader)); + infile.seekg(sizeof(PkgHeader)); + std::string title_id_str(pkg_header.content_id); + std::string title_id = title_id_str.substr(7, 9); + const auto work_path{ fs::path(emuenv.pref_path) / fmt::format("ux0/license/{}/{}.rif", title_id, pkg_header.content_id) }; + if (fs::exists(work_path)) { + LOG_INFO("Found license file: {}", work_path.string()); + fs::ifstream binfile(work_path.wstring(), std::ios::in | std::ios::binary | std::ios::ate); + zRIF = rif2zrif(binfile); + ImGui::OpenPopup("install"); + gui::state = "install"; + } else { ImGui::OpenPopup("install"); - else if (result == host::dialog::filesystem::Result::CANCEL) { + } + } else if (result == host::dialog::filesystem::Result::CANCEL) { gui.file_menu.pkg_install_dialog = false; draw_file_dialog = true; } else {