[qt] clarify orphaned profiles by showing GOOD uuids (#2850)

Shows what profile UUIDs are actually good so the user knows which one
to copy their saves to.

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2850
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
crueter 2025-10-27 11:25:42 +01:00
parent c713d44c88
commit 903faacaab
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
3 changed files with 24 additions and 3 deletions

View file

@ -488,7 +488,7 @@ void ProfileManager::ResetUserSaveFile()
ParseUserSaveFile(); ParseUserSaveFile();
} }
std::vector<std::string> ProfileManager::FindOrphanedProfiles() std::vector<std::string> ProfileManager::FindGoodProfiles()
{ {
std::vector<std::string> good_uuids; std::vector<std::string> good_uuids;
@ -512,6 +512,13 @@ std::vector<std::string> ProfileManager::FindOrphanedProfiles()
// used for acnh, etc // used for acnh, etc
good_uuids.emplace_back("00000000000000000000000000000000"); good_uuids.emplace_back("00000000000000000000000000000000");
return good_uuids;
}
std::vector<std::string> ProfileManager::FindOrphanedProfiles()
{
std::vector<std::string> good_uuids = FindGoodProfiles();
// TODO: fetch save_id programmatically // TODO: fetch save_id programmatically
const auto path = Common::FS::GetEdenPath(Common::FS::EdenPath::NANDDir) const auto path = Common::FS::GetEdenPath(Common::FS::EdenPath::NANDDir)
/ "user/save/0000000000000000"; / "user/save/0000000000000000";

View file

@ -105,6 +105,7 @@ public:
void ResetUserSaveFile(); void ResetUserSaveFile();
std::vector<std::string> FindGoodProfiles();
std::vector<std::string> FindOrphanedProfiles(); std::vector<std::string> FindOrphanedProfiles();
private: private:

View file

@ -330,6 +330,7 @@ void FixProfiles()
// TODO: better solution // TODO: better solution
system->GetProfileManager().ResetUserSaveFile(); system->GetProfileManager().ResetUserSaveFile();
std::vector<std::string> orphaned = system->GetProfileManager().FindOrphanedProfiles(); std::vector<std::string> orphaned = system->GetProfileManager().FindOrphanedProfiles();
std::vector<std::string> good = system->GetProfileManager().FindGoodProfiles();
// no orphaned dirs--all good :) // no orphaned dirs--all good :)
if (orphaned.empty()) if (orphaned.empty())
@ -346,15 +347,27 @@ void FixProfiles()
qorphaned = qorphaned % QStringLiteral("\n") % QString::fromStdString(s); qorphaned = qorphaned % QStringLiteral("\n") % QString::fromStdString(s);
} }
QString qgood;
// max. of 8 good profiles is fair, I think
// 33 = 32 (UUID) + 1 (\n)
qgood.reserve(8 * 33);
for (const std::string& s : good) {
qgood = qgood % QStringLiteral("\n") % QString::fromStdString(s);
}
QtCommon::Frontend::Critical( QtCommon::Frontend::Critical(
tr("Orphaned Profiles Detected!"), tr("Orphaned Profiles Detected!"),
tr("UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!\n" tr("UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!\n"
"Eden has detected the following save directories with no attached profile:\n" "Eden has detected the following save directories with no attached profile:\n"
"%1\n\n" "%1\n\n"
"The following profiles are valid:\n"
"%2\n\n"
"Click \"OK\" to open your save folder and fix up your profiles.\n" "Click \"OK\" to open your save folder and fix up your profiles.\n"
"Hint: copy the contents of the largest or last-modified folder elsewhere, " "Hint: copy the contents of the largest or last-modified folder elsewhere, "
"delete all orphaned profiles, and move your copied contents to the good profile.") "delete all orphaned profiles, and move your copied contents to the good profile.")
.arg(qorphaned)); .arg(qorphaned, qgood));
QtCommon::Game::OpenSaveFolder(); QtCommon::Game::OpenSaveFolder();
} }