File indexing completed on 2024-10-06 07:36:07
0001 // SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com> 0002 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL 0003 0004 #include "filetype.h" 0005 #include <QImageReader> 0006 #include <QMovie> 0007 0008 static QStringList byteArrayListToStringList(const QByteArrayList &byteArrayList) 0009 { 0010 QStringList stringList; 0011 for (const QByteArray &byteArray : byteArrayList) { 0012 stringList.append(QString::fromLocal8Bit(byteArray)); 0013 } 0014 return stringList; 0015 } 0016 0017 class FileTypePrivate 0018 { 0019 Q_DECLARE_PUBLIC(FileType) 0020 Q_DISABLE_COPY(FileTypePrivate) 0021 public: 0022 FileTypePrivate(FileType *qq); 0023 FileType *const q_ptr; 0024 QMimeDatabase mimetypeDatabase; 0025 QStringList supportedImageFormats = byteArrayListToStringList(QImageReader::supportedImageFormats()); 0026 QStringList supportedAnimatedImageFormats = byteArrayListToStringList(QMovie::supportedFormats()); 0027 }; 0028 0029 FileTypePrivate::FileTypePrivate(FileType *qq) 0030 : q_ptr(qq) 0031 { 0032 } 0033 0034 FileType::FileType(QObject *parent) 0035 : QObject(parent) 0036 , d_ptr(new FileTypePrivate(this)) 0037 { 0038 } 0039 0040 FileType::~FileType() noexcept 0041 { 0042 } 0043 0044 QMimeType FileType::mimeTypeForName(const QString &nameOrAlias) const 0045 { 0046 Q_D(const FileType); 0047 return d->mimetypeDatabase.mimeTypeForName(nameOrAlias); 0048 } 0049 0050 QMimeType FileType::mimeTypeForFile(const QString &fileName, MatchMode mode) const 0051 { 0052 Q_D(const FileType); 0053 return d->mimetypeDatabase.mimeTypeForFile(fileName, static_cast<QMimeDatabase::MatchMode>(mode)); 0054 } 0055 0056 QMimeType FileType::mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode) const 0057 { 0058 Q_D(const FileType); 0059 return d->mimetypeDatabase.mimeTypeForFile(fileInfo, static_cast<QMimeDatabase::MatchMode>(mode)); 0060 } 0061 0062 QList<QMimeType> FileType::mimeTypesForFileName(const QString &fileName) const 0063 { 0064 Q_D(const FileType); 0065 return d->mimetypeDatabase.mimeTypesForFileName(fileName); 0066 } 0067 0068 QMimeType FileType::mimeTypeForData(const QByteArray &data) const 0069 { 0070 Q_D(const FileType); 0071 return d->mimetypeDatabase.mimeTypeForData(data); 0072 } 0073 0074 QMimeType FileType::mimeTypeForData(QIODevice *device) const 0075 { 0076 Q_D(const FileType); 0077 return d->mimetypeDatabase.mimeTypeForData(device); 0078 } 0079 0080 QMimeType FileType::mimeTypeForUrl(const QUrl &url) const 0081 { 0082 Q_D(const FileType); 0083 return d->mimetypeDatabase.mimeTypeForUrl(url); 0084 } 0085 0086 QMimeType FileType::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const 0087 { 0088 Q_D(const FileType); 0089 return d->mimetypeDatabase.mimeTypeForFileNameAndData(fileName, device); 0090 } 0091 0092 QMimeType FileType::mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const 0093 { 0094 Q_D(const FileType); 0095 return d->mimetypeDatabase.mimeTypeForFileNameAndData(fileName, data); 0096 } 0097 0098 QString FileType::suffixForFileName(const QString &fileName) const 0099 { 0100 Q_D(const FileType); 0101 return d->mimetypeDatabase.suffixForFileName(fileName); 0102 } 0103 0104 QStringList FileType::supportedImageFormats() const 0105 { 0106 Q_D(const FileType); 0107 return d->supportedImageFormats; 0108 } 0109 0110 QStringList FileType::supportedAnimatedImageFormats() const 0111 { 0112 Q_D(const FileType); 0113 return d->supportedAnimatedImageFormats; 0114 } 0115 0116 #include "moc_filetype.cpp"