From: Mike Gelfand Date: Thu, 1 Jan 2015 02:28:18 +0000 (+0000) Subject: Use QMimeDatabase to get icon names when compiling against Qt 5+ X-Git-Tag: 2.90~275 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=511d89ca5e6d780e6c04f191207e0f594898f9d8;p=transmission Use QMimeDatabase to get icon names when compiling against Qt 5+ --- diff --git a/qt/utils.cc b/qt/utils.cc index f0667603a..b4f663def 100644 --- a/qt/utils.cc +++ b/qt/utils.cc @@ -25,6 +25,11 @@ #include #include +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) +#include +#include +#endif + #include #include // tr_formatter @@ -106,10 +111,14 @@ namespace } // namespace #endif +#include QIcon Utils::guessMimeIcon (const QString& filename) { + static const QIcon fallback = qApp->style ()->standardIcon (QStyle::SP_FileIcon); + #ifdef _WIN32 + QIcon icon; if (!filename.isEmpty ()) @@ -121,20 +130,24 @@ Utils::guessMimeIcon (const QString& filename) addAssociatedFileIcon (fileInfo, SHGFI_LARGEICON, icon); } - if (icon.isNull ()) - icon = qApp->style ()->standardIcon (QStyle::SP_FileIcon); + if (!icon.isNull ()) + return icon; + +#elif QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + + QMimeDatabase mimeDb; + QMimeType mimeType = mimeDb.mimeTypeForFile (filename, QMimeDatabase::MatchExtension); + if (mimeType.isValid ()) + return QIcon::fromTheme (mimeType.iconName (), QIcon::fromTheme (mimeType.genericIconName (), fallback)); - return icon; #else + enum { DISK, DOCUMENT, PICTURE, VIDEO, ARCHIVE, AUDIO, APP, TYPE_COUNT }; - static QIcon fallback; static QIcon fileIcons[TYPE_COUNT]; static QSet suffixes[TYPE_COUNT]; if (fileIcons[0].isNull ()) { - fallback = qApp->style()->standardIcon (QStyle::SP_FileIcon); - suffixes[DISK] << QString::fromLatin1("iso"); fileIcons[DISK]= QIcon::fromTheme (QString::fromLatin1("media-optical"), fallback); @@ -183,8 +196,9 @@ Utils::guessMimeIcon (const QString& filename) if (suffixes[i].contains (suffix)) return fileIcons[i]; - return fallback; #endif + + return fallback; } bool