diff --git a/autotests/embeddedimagedatatest.cpp b/autotests/embeddedimagedatatest.cpp --- a/autotests/embeddedimagedatatest.cpp +++ b/autotests/embeddedimagedatatest.cpp @@ -23,6 +23,7 @@ #include "embeddedimagedata.h" #include "indexerextractortestsconfig.h" +#include #include using namespace KFileMetaData; @@ -34,29 +35,43 @@ void EmbeddedImageDataTest::test() { + QMimeDatabase mimeDb; + QString testAudioFile; + EmbeddedImageData imageData; QMap images; QByteArray originalFrontCoverImage; QFile testFile(testFilePath("test.jpg")); testFile.open(QIODevice::ReadOnly); originalFrontCoverImage = testFile.readAll(); - EmbeddedImageData imageData; - images = imageData.imageData(testFilePath("test.opus")); + testAudioFile = testFilePath("test.opus"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); - images = imageData.imageData(testFilePath("test.ogg")); + testAudioFile = testFilePath("test.ogg"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); - images = imageData.imageData(testFilePath("test.flac")); + testAudioFile = testFilePath("test.flac"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); - images = imageData.imageData(testFilePath("test.mp3")); + testAudioFile = testFilePath("test.mp3"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); - images = imageData.imageData(testFilePath("test.m4a")); + testAudioFile = testFilePath("test.m4a"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); - images = imageData.imageData(testFilePath("test.mpc")); + testAudioFile = testFilePath("test.mpc"); + QVERIFY(imageData.mimeTypes().contains(mimeDb.mimeTypeForFile(testAudioFile).name())); + images = imageData.imageData(testAudioFile); QCOMPARE(images.value(EmbeddedImageData::FrontCover), originalFrontCoverImage); } diff --git a/src/embeddedimagedata.h b/src/embeddedimagedata.h --- a/src/embeddedimagedata.h +++ b/src/embeddedimagedata.h @@ -55,6 +55,13 @@ */ QMap imageData(const QString &fileUrl, const EmbeddedImageData::ImageTypes types = FrontCover) const; + /** + * Provides a list of mimetypes which are supported for reading + * of embedded images in e.g. audio files. + * @since 5.52 + */ + QStringList mimeTypes() const; + private: class Private; std::unique_ptr d; diff --git a/src/embeddedimagedata.cpp b/src/embeddedimagedata.cpp --- a/src/embeddedimagedata.cpp +++ b/src/embeddedimagedata.cpp @@ -45,7 +45,21 @@ public: QMimeDatabase mMimeDatabase; QByteArray getFrontCover(const QString &fileUrl, const QString &mimeType) const; + static const QStringList mMimetypes; +}; +const QStringList EmbeddedImageData::Private::mMimetypes = +{ + QStringLiteral("audio/flac"), + QStringLiteral("audio/mp4"), + QStringLiteral("audio/mpeg"), + QStringLiteral("audio/mpeg3"), + QStringLiteral("audio/ogg"), + QStringLiteral("audio/opus"), + QStringLiteral("audio/x-mpeg"), + QStringLiteral("audio/x-musepack"), + QStringLiteral("audio/x-opus+ogg"), + QStringLiteral("audio/x-vorbis+ogg"), }; EmbeddedImageData::EmbeddedImageData() @@ -56,6 +70,11 @@ EmbeddedImageData::~EmbeddedImageData() = default; +QStringList EmbeddedImageData::mimeTypes() const +{ + return d->mMimetypes; +} + QMap EmbeddedImageData::imageData(const QString &fileUrl, const EmbeddedImageData::ImageTypes types) const