mirror of https://github.com/PCSX2/pcsx2.git
Qt: Check both English and non-English name for cover paths
This commit is contained in:
parent
f04efead96
commit
fecee19e1a
|
@ -180,11 +180,11 @@ void GameListModel::loadOrGenerateCover(const GameList::Entry* ge)
|
||||||
// while there's outstanding jobs, the old jobs won't proceed (at the wrong size), or get added into the grid.
|
// while there's outstanding jobs, the old jobs won't proceed (at the wrong size), or get added into the grid.
|
||||||
const u32 counter = m_cover_scale_counter.load(std::memory_order_acquire);
|
const u32 counter = m_cover_scale_counter.load(std::memory_order_acquire);
|
||||||
|
|
||||||
QFuture<QPixmap> future = QtConcurrent::run([this, path = ge->path, title = ge->GetTitle(m_prefer_english_titles), serial = ge->serial, counter]() -> QPixmap {
|
QFuture<QPixmap> future = QtConcurrent::run([this, entry = *ge, counter]() -> QPixmap {
|
||||||
QPixmap image;
|
QPixmap image;
|
||||||
if (m_cover_scale_counter.load(std::memory_order_acquire) == counter)
|
if (m_cover_scale_counter.load(std::memory_order_acquire) == counter)
|
||||||
{
|
{
|
||||||
const std::string cover_path(GameList::GetCoverImagePath(path, serial, title));
|
const std::string cover_path(GameList::GetCoverImagePathForEntry(&entry));
|
||||||
if (!cover_path.empty())
|
if (!cover_path.empty())
|
||||||
{
|
{
|
||||||
const float dpr = qApp->devicePixelRatio();
|
const float dpr = qApp->devicePixelRatio();
|
||||||
|
@ -197,6 +197,8 @@ void GameListModel::loadOrGenerateCover(const GameList::Entry* ge)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string& title = entry.GetTitle(m_prefer_english_titles);
|
||||||
|
|
||||||
if (image.isNull())
|
if (image.isNull())
|
||||||
image = createPlaceholderImage(m_placeholder_pixmap, getCoverArtWidth(), getCoverArtHeight(), m_cover_scale, title);
|
image = createPlaceholderImage(m_placeholder_pixmap, getCoverArtWidth(), getCoverArtHeight(), m_cover_scale, title);
|
||||||
|
|
||||||
|
|
|
@ -1157,11 +1157,6 @@ std::string GameList::FormatTimespan(std::time_t timespan, bool long_format)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GameList::GetCoverImagePathForEntry(const Entry* entry)
|
std::string GameList::GetCoverImagePathForEntry(const Entry* entry)
|
||||||
{
|
|
||||||
return GetCoverImagePath(entry->path, entry->serial, entry->title);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string GameList::GetCoverImagePath(const std::string& path, const std::string& serial, const std::string& title)
|
|
||||||
{
|
{
|
||||||
static const char* extensions[] = {".jpg", ".jpeg", ".png", ".webp"};
|
static const char* extensions[] = {".jpg", ".jpeg", ".png", ".webp"};
|
||||||
|
|
||||||
|
@ -1172,17 +1167,17 @@ std::string GameList::GetCoverImagePath(const std::string& path, const std::stri
|
||||||
{
|
{
|
||||||
|
|
||||||
// Prioritize lookup by serial (Most specific)
|
// Prioritize lookup by serial (Most specific)
|
||||||
if (!serial.empty())
|
if (!entry->serial.empty())
|
||||||
{
|
{
|
||||||
const std::string cover_filename(serial + extension);
|
const std::string cover_filename(entry->serial + extension);
|
||||||
cover_path = Path::Combine(EmuFolders::Covers, cover_filename);
|
cover_path = Path::Combine(EmuFolders::Covers, cover_filename);
|
||||||
if (FileSystem::FileExists(cover_path.c_str()))
|
if (FileSystem::FileExists(cover_path.c_str()))
|
||||||
return cover_path;
|
return cover_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try file title (for modded games or specific like above)
|
// Try file title (for modded games or specific like above)
|
||||||
const std::string_view file_title(Path::GetFileTitle(path));
|
const std::string_view file_title(Path::GetFileTitle(entry->path));
|
||||||
if (!file_title.empty() && title != file_title)
|
if (!file_title.empty() && entry->title != file_title)
|
||||||
{
|
{
|
||||||
std::string cover_filename(file_title);
|
std::string cover_filename(file_title);
|
||||||
cover_filename += extension;
|
cover_filename += extension;
|
||||||
|
@ -1193,9 +1188,18 @@ std::string GameList::GetCoverImagePath(const std::string& path, const std::stri
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last resort, check the game title
|
// Last resort, check the game title
|
||||||
if (!title.empty())
|
if (!entry->title.empty())
|
||||||
{
|
{
|
||||||
std::string cover_filename(title + extension);
|
std::string cover_filename(entry->title + extension);
|
||||||
|
Path::SanitizeFileName(&cover_filename);
|
||||||
|
cover_path = Path::Combine(EmuFolders::Covers, cover_filename);
|
||||||
|
if (FileSystem::FileExists(cover_path.c_str()))
|
||||||
|
return cover_path;
|
||||||
|
}
|
||||||
|
// EN title too
|
||||||
|
if (!entry->title_en.empty())
|
||||||
|
{
|
||||||
|
std::string cover_filename(entry->title_en + extension);
|
||||||
Path::SanitizeFileName(&cover_filename);
|
Path::SanitizeFileName(&cover_filename);
|
||||||
cover_path = Path::Combine(EmuFolders::Covers, cover_filename);
|
cover_path = Path::Combine(EmuFolders::Covers, cover_filename);
|
||||||
if (FileSystem::FileExists(cover_path.c_str()))
|
if (FileSystem::FileExists(cover_path.c_str()))
|
||||||
|
|
|
@ -161,7 +161,6 @@ namespace GameList
|
||||||
std::string FormatTimespan(std::time_t timespan, bool long_format = false);
|
std::string FormatTimespan(std::time_t timespan, bool long_format = false);
|
||||||
|
|
||||||
std::string GetCoverImagePathForEntry(const Entry* entry);
|
std::string GetCoverImagePathForEntry(const Entry* entry);
|
||||||
std::string GetCoverImagePath(const std::string& path, const std::string& code, const std::string& title);
|
|
||||||
std::string GetNewCoverImagePathForEntry(const Entry* entry, const char* new_filename, bool use_serial = false);
|
std::string GetNewCoverImagePathForEntry(const Entry* entry, const char* new_filename, bool use_serial = false);
|
||||||
|
|
||||||
/// Downloads covers using the specified URL templates. By default, covers are saved by title, but this can be changed with
|
/// Downloads covers using the specified URL templates. By default, covers are saved by title, but this can be changed with
|
||||||
|
|
Loading…
Reference in New Issue