]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Detect animated format using mimeType instead of file path
authorIsmael Asensio <isma.af@gmail.com>
Sat, 6 Jun 2020 16:40:03 +0000 (18:40 +0200)
committerIsmael Asensio <isma.af@gmail.com>
Sat, 6 Jun 2020 16:40:03 +0000 (18:40 +0200)
This allows to extend the functionality to non-local files and avoids a warning
on such files (`QFSFileEngine::open: No file name specified`)

src/panels/information/informationpanelcontent.cpp
src/panels/information/pixmapviewer.cpp
src/panels/information/pixmapviewer.h

index a0c872560558ad1da824080fd5848d17a6744bd3..9db7f8bb719d7438774c5547cc7608da307b78ec 100644 (file)
@@ -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/"));
 
index 2601e82ae50aba1915ada813f6f4453d3adbbc4f..39fedb1a1f6b8a4c9c209e8f7f364ce11f9ef3c8 100644 (file)
@@ -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); });
 }
index 37071045fb167359e734357cb82f1f9f384190eb..c231b590dbe81c579e0e9ef56f8197e87df5dca6 100644 (file)
@@ -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;