┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information
diff options
context:
space:
mode:
authorIsmael Asensio <[email protected]>2020-06-06 18:40:03 +0200
committerIsmael Asensio <[email protected]>2020-06-06 18:40:03 +0200
commitf7a3318fa51dc340e8615009c43ba3a53d9c7012 (patch)
tree2116a033fd75c6ad1c7baab03e417536945ce7c8 /src/panels/information
parentf987a1c404663f8f8964596548294dc1ae31f377 (diff)
Detect animated format using mimeType instead of file path
This allows to extend the functionality to non-local files and avoids a warning on such files (`QFSFileEngine::open: No file name specified`)
Diffstat (limited to 'src/panels/information')
-rw-r--r--src/panels/information/informationpanelcontent.cpp2
-rw-r--r--src/panels/information/pixmapviewer.cpp7
-rw-r--r--src/panels/information/pixmapviewer.h4
3 files changed, 7 insertions, 6 deletions
diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp
index a0c872560..9db7f8bb7 100644
--- a/src/panels/information/informationpanelcontent.cpp
+++ b/src/panels/information/informationpanelcontent.cpp
@@ -236,7 +236,7 @@ void InformationPanelContent::refreshPreview()
refreshPixmapView();
const QString mimeType = m_item.mimetype();
- const bool isAnimatedImage = m_preview->isAnimatedImage(itemUrl.toLocalFile());
+ const bool isAnimatedImage = m_preview->isAnimatedMimeType(mimeType);
m_isVideo = !isAnimatedImage && mimeType.startsWith(QLatin1String("video/"));
bool usePhonon = m_isVideo || mimeType.startsWith(QLatin1String("audio/"));
diff --git a/src/panels/information/pixmapviewer.cpp b/src/panels/information/pixmapviewer.cpp
index 2601e82ae..39fedb1a1 100644
--- a/src/panels/information/pixmapviewer.cpp
+++ b/src/panels/information/pixmapviewer.cpp
@@ -186,8 +186,9 @@ void PixmapViewer::stopAnimatedImage()
}
}
-bool PixmapViewer::isAnimatedImage(const QString &fileName)
+bool PixmapViewer::isAnimatedMimeType(const QString &mimeType)
{
- const QByteArray imageFormat = QImageReader::imageFormat(fileName);
- return !imageFormat.isEmpty() && QMovie::supportedFormats().contains(imageFormat);
+ const QList<QByteArray> imageFormats = QImageReader::imageFormatsForMimeType(mimeType.toUtf8());
+ return std::any_of(imageFormats.begin(), imageFormats.end(),
+ [](const QByteArray &format){ return QMovie::supportedFormats().contains(format); });
}
diff --git a/src/panels/information/pixmapviewer.h b/src/panels/information/pixmapviewer.h
index 37071045f..c231b590d 100644
--- a/src/panels/information/pixmapviewer.h
+++ b/src/panels/information/pixmapviewer.h
@@ -80,9 +80,9 @@ public:
void stopAnimatedImage();
/**
- * Checks if \a fileName contains an animated image supported by QMovie.
+ * Checks if \a mimeType has a format supported by QMovie.
*/
- static bool isAnimatedImage(const QString &fileName);
+ static bool isAnimatedMimeType(const QString &mimeType);
protected:
void paintEvent(QPaintEvent* event) override;