Enable non-png thumbnails also for Qt interface.

This commit is contained in:
zoltanvb 2025-04-02 22:43:25 +02:00
parent d1a53e7d05
commit fb9aad1a3e
3 changed files with 38 additions and 13 deletions

View File

@ -168,9 +168,23 @@ bool PlaylistModel::isSupportedImage(const QString path) const
return false; return false;
} }
QString PlaylistModel::getSanitizedThumbnailName(QString label) const QString PlaylistModel::getSanitizedThumbnailName(QString dir, QString label) const
{ {
return label.replace(m_fileSanitizerRegex, "_") + ".png"; QDir tnDir(dir);
QString tnName = label.replace(m_fileSanitizerRegex, "_");
if (tnDir.exists(tnName + ".png"))
return dir + tnName + ".png";
if (tnDir.exists(tnName + ".jpg"))
return dir + tnName + ".jpg";
if (tnDir.exists(tnName + ".jpeg"))
return dir + tnName + ".jpeg";
if (tnDir.exists(tnName + ".bmp"))
return dir + tnName + ".bmp";
if (tnDir.exists(tnName + ".tga"))
return dir + tnName + ".tga";
return dir + tnName + ".png";
} }
QString PlaylistModel::getThumbnailPath(const QHash<QString, QString> &hash, QString type) const QString PlaylistModel::getThumbnailPath(const QHash<QString, QString> &hash, QString type) const
@ -179,11 +193,12 @@ QString PlaylistModel::getThumbnailPath(const QHash<QString, QString> &hash, QSt
if (isSupportedImage(hash["path"])) if (isSupportedImage(hash["path"]))
return hash["path"]; return hash["path"];
return getPlaylistThumbnailsDir(hash.value("db_name")) return getSanitizedThumbnailName(
getPlaylistThumbnailsDir(hash.value("db_name"))
+ QStringLiteral("/") + QStringLiteral("/")
+ type + type
+ QStringLiteral("/") + QStringLiteral("/"),
+ getSanitizedThumbnailName(hash["label_noext"]); hash["label_noext"]);
} }
QString PlaylistModel::getCurrentTypeThumbnailPath(const QModelIndex &index) const QString PlaylistModel::getCurrentTypeThumbnailPath(const QModelIndex &index) const

View File

@ -2250,8 +2250,8 @@ QString MainWindow::changeThumbnail(const QImage &image, QString type)
QString dirString = m_playlistModel->getPlaylistThumbnailsDir( QString dirString = m_playlistModel->getPlaylistThumbnailsDir(
hash["db_name"]) hash["db_name"])
+ QStringLiteral("/") + type; + QStringLiteral("/") + type;
QString thumbPath = dirString + QStringLiteral("/") QString thumbPath = m_playlistModel->getSanitizedThumbnailName(
+ m_playlistModel->getSanitizedThumbnailName( dirString + QStringLiteral("/"),
hash["label_noext"]); hash["label_noext"]);
QByteArray dirArray = QDir::toNativeSeparators(dirString).toUtf8(); QByteArray dirArray = QDir::toNativeSeparators(dirString).toUtf8();
const char *dirData = dirArray.constData(); const char *dirData = dirArray.constData();
@ -3618,13 +3618,23 @@ void MainWindow::onCurrentItemChanged(const QHash<QString, QString> &hash)
{ {
QString thumbnailsDir = m_playlistModel->getPlaylistThumbnailsDir( QString thumbnailsDir = m_playlistModel->getPlaylistThumbnailsDir(
hash["db_name"]); hash["db_name"]);
QString thumbnailName = m_playlistModel->getSanitizedThumbnailName( QString thumbnailName1 = m_playlistModel->getSanitizedThumbnailName(
thumbnailsDir + QStringLiteral("/") + THUMBNAIL_BOXART + QStringLiteral("/"),
hash["label_noext"]);
QString thumbnailName2 = m_playlistModel->getSanitizedThumbnailName(
thumbnailsDir + QStringLiteral("/") + THUMBNAIL_TITLE + QStringLiteral("/"),
hash["label_noext"]);
QString thumbnailName3 = m_playlistModel->getSanitizedThumbnailName(
thumbnailsDir + QStringLiteral("/") + THUMBNAIL_SCREENSHOT + QStringLiteral("/"),
hash["label_noext"]);
QString thumbnailName4 = m_playlistModel->getSanitizedThumbnailName(
thumbnailsDir + QStringLiteral("/") + THUMBNAIL_LOGO + QStringLiteral("/"),
hash["label_noext"]); hash["label_noext"]);
m_thumbnailPixmap = new QPixmap(thumbnailsDir + QStringLiteral("/") + THUMBNAIL_BOXART + QStringLiteral("/") + thumbnailName); m_thumbnailPixmap = new QPixmap(thumbnailName1);
m_thumbnailPixmap2 = new QPixmap(thumbnailsDir + QStringLiteral("/") + THUMBNAIL_TITLE + QStringLiteral("/") + thumbnailName); m_thumbnailPixmap2 = new QPixmap(thumbnailName2);
m_thumbnailPixmap3 = new QPixmap(thumbnailsDir + QStringLiteral("/") + THUMBNAIL_SCREENSHOT + QStringLiteral("/") + thumbnailName); m_thumbnailPixmap3 = new QPixmap(thumbnailName3);
m_thumbnailPixmap4 = new QPixmap(thumbnailsDir + QStringLiteral("/") + THUMBNAIL_LOGO + QStringLiteral("/") + thumbnailName); m_thumbnailPixmap4 = new QPixmap(thumbnailName4);
if ( m_currentBrowser == BROWSER_TYPE_PLAYLISTS if ( m_currentBrowser == BROWSER_TYPE_PLAYLISTS
&& !currentPlaylistIsSpecial()) && !currentPlaylistIsSpecial())

View File

@ -155,7 +155,7 @@ public:
void setThumbnailCacheLimit(int limit); void setThumbnailCacheLimit(int limit);
bool isSupportedImage(const QString path) const; bool isSupportedImage(const QString path) const;
QString getPlaylistThumbnailsDir(const QString playlistName) const; QString getPlaylistThumbnailsDir(const QString playlistName) const;
QString getSanitizedThumbnailName(QString label) const; QString getSanitizedThumbnailName(QString dir, QString label) const;
signals: signals:
void imageLoaded(const QImage image, const QModelIndex &index, const QString &path); void imageLoaded(const QImage image, const QModelIndex &index, const QString &path);