38QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(QAbstractFileIconProvider::IconType type)
const
40 auto theme = QGuiApplicationPrivate::platformTheme();
44 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
45 const QIcon result = getIconThemeIcon(type);
50 auto &cache = *iconTypeCache();
51 auto it = cache.find(type);
52 if (it == cache.end()) {
53 const auto sp = [&]() -> QPlatformTheme::StandardPixmap {
55 case QAbstractFileIconProvider::Computer:
56 return QPlatformTheme::ComputerIcon;
57 case QAbstractFileIconProvider::Desktop:
58 return QPlatformTheme::DesktopIcon;
59 case QAbstractFileIconProvider::Trashcan:
60 return QPlatformTheme::TrashIcon;
61 case QAbstractFileIconProvider::Network:
62 return QPlatformTheme::DriveNetIcon;
63 case QAbstractFileIconProvider::Drive:
64 return QPlatformTheme::DriveHDIcon;
65 case QAbstractFileIconProvider::Folder:
66 return QPlatformTheme::DirIcon;
67 case QAbstractFileIconProvider::File:
71 return QPlatformTheme::FileIcon;
74 const auto sizesHint = theme->themeHint(QPlatformTheme::IconPixmapSizes);
75 auto sizes = sizesHint.value<QList<QSize>>();
77 sizes.append({64, 64});
80 for (
const auto &size : std::as_const(sizes))
81 icon.addPixmap(theme->standardPixmap(sp, size));
82 it = cache.insert(type, icon);
87QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(QAbstractFileIconProvider::IconType type)
const
90 case QAbstractFileIconProvider::Computer:
91 return QIcon::fromTheme(
"computer"_L1);
92 case QAbstractFileIconProvider::Desktop:
93 return QIcon::fromTheme(
"user-desktop"_L1);
94 case QAbstractFileIconProvider::Trashcan:
95 return QIcon::fromTheme(
"user-trash"_L1);
96 case QAbstractFileIconProvider::Network:
97 return QIcon::fromTheme(
"network-workgroup"_L1);
98 case QAbstractFileIconProvider::Drive:
99 return QIcon::fromTheme(
"drive-harddisk"_L1);
100 case QAbstractFileIconProvider::Folder:
101 return QIcon::fromTheme(
"folder"_L1);
102 case QAbstractFileIconProvider::File:
103 return QIcon::fromTheme(
"text-x-generic"_L1);
106 return QIcon::fromTheme(
"text-x-generic"_L1);
117QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(
const QFileInfo &info)
const
119 if (
auto theme = QGuiApplicationPrivate::platformTheme()) {
120 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
121 const QIcon result = getIconThemeIcon(info);
122 if (!result.isNull())
125 return theme->fileIcon(info, toThemeIconOptions(options));
130QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(
const QFileInfo &info)
const
133 return getIconThemeIcon(QAbstractFileIconProvider::Drive);
135 return getIconThemeIcon(QAbstractFileIconProvider::Folder);
136#if QT_CONFIG(mimetype)
137 return QIcon::fromTheme(mimeDatabase.mimeTypeForFile(info).iconName());
139 return QIcon::fromTheme(
"text-x-generic"_L1);
245QString QAbstractFileIconProviderPrivate::getFileType(
const QFileInfo &info)
247 if (QFileSystemEntry::isRootPath(info.absoluteFilePath()))
248 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Drive");
250#if QT_CONFIG(mimetype)
251 const QMimeType mimeType = QMimeDatabase().mimeTypeForFile(info);
252 return mimeType.comment().isEmpty() ? mimeType.name() : mimeType.comment();
254 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File");
260 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File Folder",
"Match Windows Explorer");
262 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Folder",
"All other platforms");
269 if (info.isSymLink())
271 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Alias",
"macOS Finder");
273 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Shortcut",
"All other platforms");
280 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Unknown");