37QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(QAbstractFileIconProvider::IconType type)
const
39 auto theme = QGuiApplicationPrivate::platformTheme();
43 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
44 const QIcon result = getIconThemeIcon(type);
49 auto &cache = *iconTypeCache();
50 auto it = cache.find(type);
51 if (it == cache.end()) {
52 const auto sp = [&]() -> QPlatformTheme::StandardPixmap {
54 case QAbstractFileIconProvider::Computer:
55 return QPlatformTheme::ComputerIcon;
56 case QAbstractFileIconProvider::Desktop:
57 return QPlatformTheme::DesktopIcon;
58 case QAbstractFileIconProvider::Trashcan:
59 return QPlatformTheme::TrashIcon;
60 case QAbstractFileIconProvider::Network:
61 return QPlatformTheme::DriveNetIcon;
62 case QAbstractFileIconProvider::Drive:
63 return QPlatformTheme::DriveHDIcon;
64 case QAbstractFileIconProvider::Folder:
65 return QPlatformTheme::DirIcon;
66 case QAbstractFileIconProvider::File:
70 return QPlatformTheme::FileIcon;
73 const auto sizesHint = theme->themeHint(QPlatformTheme::IconPixmapSizes);
74 auto sizes = sizesHint.value<QList<QSize>>();
76 sizes.append({64, 64});
79 for (
const auto &size : sizes)
80 icon.addPixmap(theme->standardPixmap(sp, size));
81 it = cache.insert(type, icon);
86QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(QAbstractFileIconProvider::IconType type)
const
89 case QAbstractFileIconProvider::Computer:
90 return QIcon::fromTheme(
"computer"_L1);
91 case QAbstractFileIconProvider::Desktop:
92 return QIcon::fromTheme(
"user-desktop"_L1);
93 case QAbstractFileIconProvider::Trashcan:
94 return QIcon::fromTheme(
"user-trash"_L1);
95 case QAbstractFileIconProvider::Network:
96 return QIcon::fromTheme(
"network-workgroup"_L1);
97 case QAbstractFileIconProvider::Drive:
98 return QIcon::fromTheme(
"drive-harddisk"_L1);
99 case QAbstractFileIconProvider::Folder:
100 return QIcon::fromTheme(
"folder"_L1);
101 case QAbstractFileIconProvider::File:
102 return QIcon::fromTheme(
"text-x-generic"_L1);
105 return QIcon::fromTheme(
"text-x-generic"_L1);
116QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(
const QFileInfo &info)
const
118 if (
auto theme = QGuiApplicationPrivate::platformTheme()) {
119 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
120 const QIcon result = getIconThemeIcon(info);
121 if (!result.isNull())
124 return theme->fileIcon(info, toThemeIconOptions(options));
129QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(
const QFileInfo &info)
const
132 return getIconThemeIcon(QAbstractFileIconProvider::Drive);
134 return getIconThemeIcon(QAbstractFileIconProvider::Folder);
135#if QT_CONFIG(mimetype)
136 return QIcon::fromTheme(mimeDatabase.mimeTypeForFile(info).iconName());
138 return QIcon::fromTheme(
"text-x-generic"_L1);
244QString QAbstractFileIconProviderPrivate::getFileType(
const QFileInfo &info)
246 if (QFileSystemEntry::isRootPath(info.absoluteFilePath()))
247 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Drive");
249#if QT_CONFIG(mimetype)
250 const QMimeType mimeType = QMimeDatabase().mimeTypeForFile(info);
251 return mimeType.comment().isEmpty() ? mimeType.name() : mimeType.comment();
253 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File");
259 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File Folder",
"Match Windows Explorer");
261 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Folder",
"All other platforms");
268 if (info.isSymLink())
270 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Alias",
"macOS Finder");
272 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Shortcut",
"All other platforms");
279 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Unknown");