diff options
| author | Ismael Asensio <[email protected]> | 2020-06-06 18:40:03 +0200 |
|---|---|---|
| committer | Ismael Asensio <[email protected]> | 2020-06-06 18:40:03 +0200 |
| commit | f7a3318fa51dc340e8615009c43ba3a53d9c7012 (patch) | |
| tree | 2116a033fd75c6ad1c7baab03e417536945ce7c8 /src/panels/information | |
| parent | f987a1c404663f8f8964596548294dc1ae31f377 (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.cpp | 2 | ||||
| -rw-r--r-- | src/panels/information/pixmapviewer.cpp | 7 | ||||
| -rw-r--r-- | src/panels/information/pixmapviewer.h | 4 |
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; |
