File indexing completed on 2024-05-26 05:02:14

0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2018 Andreas Krutzler <andreas.krutzler@gmx.net>
0003 
0004 #pragma once
0005 
0006 #include <kmtpfile.h>
0007 
0008 /**
0009  * @brief Converts a LIBMTP_filetype_t to a mime-type
0010  */
0011 static QString getMimetype(LIBMTP_filetype_t filetype)
0012 {
0013     switch (filetype) {
0014     case LIBMTP_FILETYPE_FOLDER:
0015         return QStringLiteral("inode/directory");
0016     case LIBMTP_FILETYPE_WAV:
0017         return QStringLiteral("audio/wav");
0018     case LIBMTP_FILETYPE_MP3:
0019         return QStringLiteral("audio/x-mp3");
0020     case LIBMTP_FILETYPE_WMA:
0021         return QStringLiteral("audio/x-ms-wma");
0022     case LIBMTP_FILETYPE_OGG:
0023         return QStringLiteral("audio/x-vorbis+ogg");
0024     case LIBMTP_FILETYPE_AUDIBLE:
0025         return {};
0026     case LIBMTP_FILETYPE_MP4:
0027         return QStringLiteral("video/mp4");
0028     case LIBMTP_FILETYPE_UNDEF_AUDIO:
0029         return {};
0030     case LIBMTP_FILETYPE_WMV:
0031         return QStringLiteral("video/x-ms-wmv");
0032     case LIBMTP_FILETYPE_AVI:
0033         return QStringLiteral("video/x-msvideo");
0034     case LIBMTP_FILETYPE_MPEG:
0035         return QStringLiteral("video/mpeg");
0036     case LIBMTP_FILETYPE_ASF:
0037         return QStringLiteral("video/x-ms-asf");
0038     case LIBMTP_FILETYPE_QT:
0039         return QStringLiteral("video/quicktime");
0040     case LIBMTP_FILETYPE_UNDEF_VIDEO:
0041         return {};
0042     case LIBMTP_FILETYPE_JPEG:
0043         return QStringLiteral("image/jpeg");
0044     case LIBMTP_FILETYPE_JFIF:
0045         return {};
0046     case LIBMTP_FILETYPE_TIFF:
0047         return QStringLiteral("image/tiff");
0048     case LIBMTP_FILETYPE_BMP:
0049         return QStringLiteral("image/bmp");
0050     case LIBMTP_FILETYPE_GIF:
0051         return QStringLiteral("image/gif");
0052     case LIBMTP_FILETYPE_PICT:
0053         return QStringLiteral("image/x-pict");
0054     case LIBMTP_FILETYPE_PNG:
0055         return QStringLiteral("image/png");
0056     case LIBMTP_FILETYPE_VCALENDAR1:
0057         return QStringLiteral("text/x-vcalendar");
0058     case LIBMTP_FILETYPE_VCALENDAR2:
0059         return QStringLiteral("text/x-vcalendar");
0060     case LIBMTP_FILETYPE_VCARD2:
0061         return QStringLiteral("text/x-vcard");
0062     case LIBMTP_FILETYPE_VCARD3:
0063         return QStringLiteral("text/x-vcard");
0064     case LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT:
0065         return QStringLiteral("image/x-wmf");
0066     case LIBMTP_FILETYPE_WINEXEC:
0067         return QStringLiteral("application/x-ms-dos-executable");
0068     case LIBMTP_FILETYPE_TEXT:
0069         return QStringLiteral("text/plain");
0070     case LIBMTP_FILETYPE_HTML:
0071         return QStringLiteral("text/html");
0072     case LIBMTP_FILETYPE_FIRMWARE:
0073         return {};
0074     case LIBMTP_FILETYPE_AAC:
0075         return QStringLiteral("audio/aac");
0076     case LIBMTP_FILETYPE_MEDIACARD:
0077         return {};
0078     case LIBMTP_FILETYPE_FLAC:
0079         return QStringLiteral("audio/flac");
0080     case LIBMTP_FILETYPE_MP2:
0081         return QStringLiteral("video/mpeg");
0082     case LIBMTP_FILETYPE_M4A:
0083         return QStringLiteral("audio/mp4");
0084     case LIBMTP_FILETYPE_DOC:
0085         return QStringLiteral("application/msword");
0086     case LIBMTP_FILETYPE_XML:
0087         return QStringLiteral("text/xml");
0088     case LIBMTP_FILETYPE_XLS:
0089         return QStringLiteral("application/vnd.ms-excel");
0090     case LIBMTP_FILETYPE_PPT:
0091         return QStringLiteral("application/vnd.ms-powerpoint");
0092     case LIBMTP_FILETYPE_MHT:
0093         return {};
0094     case LIBMTP_FILETYPE_JP2:
0095         return QStringLiteral("image/jpeg2000");
0096     case LIBMTP_FILETYPE_JPX:
0097         return QStringLiteral("application/x-jbuilder-project");
0098     case LIBMTP_FILETYPE_ALBUM:
0099     case LIBMTP_FILETYPE_PLAYLIST:
0100     case LIBMTP_FILETYPE_UNKNOWN:
0101         return {};
0102     }
0103     return {};
0104 }
0105 
0106 static inline KMTPFile createKMTPFile(const std::unique_ptr<LIBMTP_file_t> &file)
0107 {
0108     Q_ASSERT(file);
0109     return KMTPFile(file->item_id, file->parent_id, file->storage_id, file->filename, file->filesize, file->modificationdate, getMimetype(file->filetype));
0110 }