mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-30 10:42:47 +01:00
yuzu/game_list_worker: Deduplicate game list entry creation
Avoids duplicating the same code twice verbatim.
This commit is contained in:
parent
f1ecfcb8bc
commit
8c108eaca7
1 changed files with 33 additions and 47 deletions
|
@ -86,6 +86,35 @@ QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager,
|
||||||
out.chop(1);
|
out.chop(1);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<QStandardItem*> MakeGameListEntry(const std::string& path, const std::string& name,
|
||||||
|
const std::vector<u8>& icon, Loader::AppLoader& loader,
|
||||||
|
u64 program_id, const CompatibilityList& compatibility_list,
|
||||||
|
const FileSys::PatchManager& patch) {
|
||||||
|
const auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
|
||||||
|
|
||||||
|
// The game list uses this as compatibility number for untested games
|
||||||
|
QString compatibility{"99"};
|
||||||
|
if (it != compatibility_list.end()) {
|
||||||
|
compatibility = it->second.first;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QStandardItem*> list{
|
||||||
|
new GameListItemPath(
|
||||||
|
FormatGameName(path), icon, QString::fromStdString(name),
|
||||||
|
QString::fromStdString(Loader::GetFileTypeString(loader.GetFileType())), program_id),
|
||||||
|
new GameListItemCompat(compatibility),
|
||||||
|
new GameListItem(QString::fromStdString(Loader::GetFileTypeString(loader.GetFileType()))),
|
||||||
|
new GameListItemSize(FileUtil::GetSize(path)),
|
||||||
|
};
|
||||||
|
|
||||||
|
if (UISettings::values.show_add_ons) {
|
||||||
|
list.insert(
|
||||||
|
2, new GameListItem(FormatPatchNameVersions(patch, loader, loader.IsRomFSUpdatable())));
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
} // Anonymous namespace
|
} // Anonymous namespace
|
||||||
|
|
||||||
GameListWorker::GameListWorker(FileSys::VirtualFilesystem vfs, QString dir_path, bool deep_scan,
|
GameListWorker::GameListWorker(FileSys::VirtualFilesystem vfs, QString dir_path, bool deep_scan,
|
||||||
|
@ -116,29 +145,8 @@ void GameListWorker::AddInstalledTitlesToGameList() {
|
||||||
if (control != nullptr)
|
if (control != nullptr)
|
||||||
GetMetadataFromControlNCA(patch, *control, icon, name);
|
GetMetadataFromControlNCA(patch, *control, icon, name);
|
||||||
|
|
||||||
auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
|
emit EntryReady(MakeGameListEntry(file->GetFullPath(), name, icon, *loader, program_id,
|
||||||
|
compatibility_list, patch));
|
||||||
// The game list uses this as compatibility number for untested games
|
|
||||||
QString compatibility("99");
|
|
||||||
if (it != compatibility_list.end())
|
|
||||||
compatibility = it->second.first;
|
|
||||||
|
|
||||||
QList<QStandardItem*> list{
|
|
||||||
new GameListItemPath(
|
|
||||||
FormatGameName(file->GetFullPath()), icon, QString::fromStdString(name),
|
|
||||||
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),
|
|
||||||
program_id),
|
|
||||||
new GameListItemCompat(compatibility),
|
|
||||||
new GameListItem(
|
|
||||||
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),
|
|
||||||
new GameListItemSize(file->GetSize()),
|
|
||||||
};
|
|
||||||
|
|
||||||
if (UISettings::values.show_add_ons) {
|
|
||||||
list.insert(2, new GameListItem(FormatPatchNameVersions(patch, *loader)));
|
|
||||||
}
|
|
||||||
|
|
||||||
emit EntryReady(list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto control_data = cache->ListEntriesFilter(FileSys::TitleType::Application,
|
const auto control_data = cache->ListEntriesFilter(FileSys::TitleType::Application,
|
||||||
|
@ -215,30 +223,8 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
|
emit EntryReady(MakeGameListEntry(physical_name, name, icon, *loader, program_id,
|
||||||
|
compatibility_list, patch));
|
||||||
// The game list uses this as compatibility number for untested games
|
|
||||||
QString compatibility("99");
|
|
||||||
if (it != compatibility_list.end())
|
|
||||||
compatibility = it->second.first;
|
|
||||||
|
|
||||||
QList<QStandardItem*> list{
|
|
||||||
new GameListItemPath(
|
|
||||||
FormatGameName(physical_name), icon, QString::fromStdString(name),
|
|
||||||
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),
|
|
||||||
program_id),
|
|
||||||
new GameListItemCompat(compatibility),
|
|
||||||
new GameListItem(
|
|
||||||
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),
|
|
||||||
new GameListItemSize(FileUtil::GetSize(physical_name)),
|
|
||||||
};
|
|
||||||
|
|
||||||
if (UISettings::values.show_add_ons) {
|
|
||||||
list.insert(2, new GameListItem(FormatPatchNameVersions(
|
|
||||||
patch, *loader, loader->IsRomFSUpdatable())));
|
|
||||||
}
|
|
||||||
|
|
||||||
emit EntryReady(std::move(list));
|
|
||||||
} else if (is_dir && recursion > 0) {
|
} else if (is_dir && recursion > 0) {
|
||||||
watch_list.append(QString::fromStdString(physical_name));
|
watch_list.append(QString::fromStdString(physical_name));
|
||||||
AddFstEntriesToGameList(physical_name, recursion - 1);
|
AddFstEntriesToGameList(physical_name, recursion - 1);
|
||||||
|
|
Loading…
Reference in a new issue