diff --git a/src/platformtheme/kdeplatformtheme.h b/src/platformtheme/kdeplatformtheme.h --- a/src/platformtheme/kdeplatformtheme.h +++ b/src/platformtheme/kdeplatformtheme.h @@ -43,6 +43,16 @@ ~KdePlatformTheme(); QVariant themeHint(ThemeHint hint) const Q_DECL_OVERRIDE; +#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) + QIcon fileIcon(const QFileInfo &fileInfo, + QPlatformTheme::IconOptions iconOptions) const override; +#else + QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, + QPlatformTheme::IconOptions iconOptions) const override; + // this will be the implementation + QIcon fileIcon(const QFileInfo &fileInfo, + QPlatformTheme::IconOptions iconOptions) const; +#endif const QPalette *palette(Palette type = SystemPalette) const Q_DECL_OVERRIDE; const QFont *font(Font type) const Q_DECL_OVERRIDE; QIconEngine *createIconEngine(const QString &iconName) const Q_DECL_OVERRIDE; diff --git a/src/platformtheme/kdeplatformtheme.cpp b/src/platformtheme/kdeplatformtheme.cpp --- a/src/platformtheme/kdeplatformtheme.cpp +++ b/src/platformtheme/kdeplatformtheme.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #if QT_VERSION >= QT_VERSION_CHECK(5,7,0) #include "qdbusmenubar_p.h" @@ -109,6 +110,22 @@ } } +QIcon KdePlatformTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions) const +{ + if (iconOptions.testFlag(DontUseCustomDirectoryIcons) && fileInfo.isDir()) { + return QIcon::fromTheme(QLatin1String("inode-directory")); + } + + return QIcon::fromTheme(KIO::iconNameForUrl(QUrl::fromLocalFile(fileInfo.absoluteFilePath()))); +} + +#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0) +QPixmap KdePlatformTheme::fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, QPlatformTheme::IconOptions iconOptions) const +{ + return fileIcon(fileInfo, iconOptions).pixmap(size.toSize(), QIcon::Normal); +} +#endif + const QPalette *KdePlatformTheme::palette(Palette type) const { QPalette *palette = m_hints->palette(type);