1 //===========================================
2 //  Lumina-DE source code
3 //  Copyright (c) 2013-2017, Ken Moore
4 //  Available under the 3-clause BSD license
5 //  See the LICENSE file for full details
6 //===========================================
7 // These structures/classes are for conforming to the FreeDesktop standards
8 // REFERENCE:
9 //    (DATABASE) https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/
10 //    (APPLICATIONS) https://www.freedesktop.org/wiki/Specifications/mime-apps-spec/
11 // Mime Application Version Compliance: 1.0.1 (11/14/14) (Skips random *.desktop parsing: ~80% compliant)
12 //===========================================
13 #ifndef _LUMINA_LIBRARY_XDG_MIME_CLASS_H
14 #define _LUMINA_LIBRARY_XDG_MIME_CLASS_H
15 
16 #include <QFile>
17 #include <QDir>
18 #include <QFileInfo>
19 #include <QStringList>
20 #include <QString>
21 #include <QList>
22 #include <QDateTime>
23 #include <QTextStream>
24 #include <QRegExp>
25 #include <QDebug>
26 
27 class XDGMime{
28 public:
29 	// PRIMARY FUNCTIONS
30 	static QString fromFileName(QString filename); //Convert a filename into a mimetype
31 	static QStringList listFromFileName(QString filename); //Convert a filename into a list of mimetypes (arranged in descending priority)
32 	static QString toIconName(QString mime); //Mime type to icon name
33 	//Find the file extension for a particular mime-type
34 	static QStringList toFileExtensions(QString mime);
35 
36 	// LESSER-USED FUNCTIONS
37 	//List all the mime-type directories
38 	static QStringList systemMimeDirs();
39 	//Find the mime-type of a particular file extension
40 	static QString findAppMimeForFile(QString filename, bool multiple = false);
41 	// Simplification function for finding all info regarding current mime defaults
42 	static QStringList listFileMimeDefaults();
43 	//Find the localized comment string for a particular mime-type
44 	static QString findMimeComment(QString mime);
45 	//Find the default application for a mime-type
46 	static QString findDefaultAppForMime(QString mime);
47 	//Fine the available applications for a mime-type
48 	static QStringList findAvailableAppsForMime(QString mime);
49 	//Set the default application for a mime-type
50 	static void setDefaultAppForMime(QString mime, QString app);
51 	//List all the registered audio/video file extensions
52 	static QStringList findAVFileExtensions();
53 	//Load all the "globs2" mime database files
54 	static QStringList loadMimeFileGlobs2();
55 
56 };
57 #endif
58