36QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(QAbstractFileIconProvider::IconType type)
const
38 auto theme = QGuiApplicationPrivate::platformTheme();
42 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
43 const QIcon result = getIconThemeIcon(type);
48 auto &cache = *iconTypeCache();
49 auto it = cache.find(type);
50 if (it == cache.end()) {
51 const auto sp = [&]() -> QPlatformTheme::StandardPixmap {
53 case QAbstractFileIconProvider::Computer:
54 return QPlatformTheme::ComputerIcon;
55 case QAbstractFileIconProvider::Desktop:
56 return QPlatformTheme::DesktopIcon;
57 case QAbstractFileIconProvider::Trashcan:
58 return QPlatformTheme::TrashIcon;
59 case QAbstractFileIconProvider::Network:
60 return QPlatformTheme::DriveNetIcon;
61 case QAbstractFileIconProvider::Drive:
62 return QPlatformTheme::DriveHDIcon;
63 case QAbstractFileIconProvider::Folder:
64 return QPlatformTheme::DirIcon;
65 case QAbstractFileIconProvider::File:
69 return QPlatformTheme::FileIcon;
72 const auto sizesHint = theme->themeHint(QPlatformTheme::IconPixmapSizes);
73 auto sizes = sizesHint.value<QList<QSize>>();
75 sizes.append({64, 64});
78 for (
const auto &size : sizes)
79 icon.addPixmap(theme->standardPixmap(sp, size));
80 it = cache.insert(type, icon);
85QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(QAbstractFileIconProvider::IconType type)
const
88 case QAbstractFileIconProvider::Computer:
89 return QIcon::fromTheme(
"computer"_L1);
90 case QAbstractFileIconProvider::Desktop:
91 return QIcon::fromTheme(
"user-desktop"_L1);
92 case QAbstractFileIconProvider::Trashcan:
93 return QIcon::fromTheme(
"user-trash"_L1);
94 case QAbstractFileIconProvider::Network:
95 return QIcon::fromTheme(
"network-workgroup"_L1);
96 case QAbstractFileIconProvider::Drive:
97 return QIcon::fromTheme(
"drive-harddisk"_L1);
98 case QAbstractFileIconProvider::Folder:
99 return QIcon::fromTheme(
"folder"_L1);
100 case QAbstractFileIconProvider::File:
101 return QIcon::fromTheme(
"text-x-generic"_L1);
104 return QIcon::fromTheme(
"text-x-generic"_L1);
115QIcon QAbstractFileIconProviderPrivate::getPlatformThemeIcon(
const QFileInfo &info)
const
117 if (
auto theme = QGuiApplicationPrivate::platformTheme()) {
118 if (theme->themeHint(QPlatformTheme::PreferFileIconFromTheme).toBool()) {
119 const QIcon result = getIconThemeIcon(info);
120 if (!result.isNull())
123 return theme->fileIcon(info, toThemeIconOptions(options));
128QIcon QAbstractFileIconProviderPrivate::getIconThemeIcon(
const QFileInfo &info)
const
131 return getIconThemeIcon(QAbstractFileIconProvider::Drive);
133 return getIconThemeIcon(QAbstractFileIconProvider::Folder);
134#if QT_CONFIG(mimetype)
135 return QIcon::fromTheme(mimeDatabase.mimeTypeForFile(info).iconName());
137 return QIcon::fromTheme(
"text-x-generic"_L1);
243QString QAbstractFileIconProviderPrivate::getFileType(
const QFileInfo &info)
245 if (QFileSystemEntry::isRootPath(info.absoluteFilePath()))
246 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Drive");
248#if QT_CONFIG(mimetype)
249 const QMimeType mimeType = QMimeDatabase().mimeTypeForFile(info);
250 return mimeType.comment().isEmpty() ? mimeType.name() : mimeType.comment();
252 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File");
258 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"File Folder",
"Match Windows Explorer");
260 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Folder",
"All other platforms");
267 if (info.isSymLink())
269 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Alias",
"macOS Finder");
271 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Shortcut",
"All other platforms");
278 return QGuiApplication::translate(
"QAbstractFileIconProvider",
"Unknown");