diff options
Diffstat (limited to 'lumina-fm/MimeIconProvider.h')
-rw-r--r-- | lumina-fm/MimeIconProvider.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lumina-fm/MimeIconProvider.h b/lumina-fm/MimeIconProvider.h new file mode 100644 index 00000000..7f330820 --- /dev/null +++ b/lumina-fm/MimeIconProvider.h @@ -0,0 +1,54 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2014, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the Icon provider for files based on mime types +//=========================================== +#ifndef _LUMINA_FILE_MANAGER_ICON_PROVIDER_H +#define _LUMINA_FILE_MANAGER_ICON_PROVIDER_H + +#include <QFileIconProvider> +#include <QIcon> +#include <QString> +#include <QFileInfo> + +#include <LuminaXDG.h> + +class MimeIconProvider : public QFileIconProvider{ + +public: + MimeIconProvider() : QFileIconProvider(){ + } + ~MimeIconProvider(){} + + QIcon icon(const QFileInfo &info) const{ + if(info.isDir()){ + return LXDG::findIcon("folder",""); + }else if(info.isFile()){ + if(info.suffix()=="png" || info.suffix()=="jpg"){ + return QIcon(info.absoluteFilePath()); + }else{ + return LXDG::findMimeIcon(info.suffix()); + } + }else{ + return LXDG::findIcon("unknown",""); + } + } + + QString type(const QFileInfo &info) const{ + if(info.isDir()){ + return QObject::tr("Directory"); + }else if(info.completeBaseName().isEmpty() || info.suffix().isEmpty() ){ + return QObject::tr("Unknown"); //hidden file without an extension + }else if(info.suffix()=="desktop"){ + return QObject::tr("Application"); + }else{ + return info.suffix().toUpper(); + } + } + +}; + +#endif
\ No newline at end of file |