qfileiconprovider.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/itemviews/qfileiconprovider.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6static bool isCacheable(const QFileInfo &fi);-
7-
8class QFileIconEngine : public QPixmapIconEngine-
9{-
10public:-
11 QFileIconEngine(const QFileInfo &info, QFileIconProvider::Options opts)-
12 : QPixmapIconEngine(), m_fileInfo(info), m_fipOpts(opts)-
13 { }
never executed: end of block
0
14-
15 QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override-
16 {-
17 (void)mode;;-
18 (void)state;;-
19 QPixmap pixmap;-
20-
21 if (!size.isValid()
!size.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
22 return
never executed: return pixmap;
pixmap;
never executed: return pixmap;
0
23-
24 const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme();-
25 if (!theme
!themeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
26 return
never executed: return pixmap;
pixmap;
never executed: return pixmap;
0
27-
28 const QString &keyBase = QLatin1String("qt_.") + m_fileInfo.suffix().toUpper();-
29-
30 bool cacheable = isCacheable(m_fileInfo);-
31 if (cacheable
cacheableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
32 QPixmapCache::find(keyBase + QString::number(size.width()), pixmap);-
33 if (!pixmap.isNull()
!pixmap.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
34 return
never executed: return pixmap;
pixmap;
never executed: return pixmap;
0
35 }
never executed: end of block
0
36-
37 QPlatformTheme::IconOptions iconOptions;-
38 if (m_fipOpts & QFileIconProvider::DontUseCustomDirectoryIcons
m_fipOpts & QF...DirectoryIconsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
39 iconOptions |= QPlatformTheme::DontUseCustomDirectoryIcons;
never executed: iconOptions |= QPlatformTheme::DontUseCustomDirectoryIcons;
0
40-
41 pixmap = theme->fileIconPixmap(m_fileInfo, size, iconOptions);-
42 if (!pixmap.isNull()
!pixmap.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
43 if (cacheable
cacheableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
44 QPixmapCache::insert(keyBase + QString::number(size.width()), pixmap);
never executed: QPixmapCache::insert(keyBase + QString::number(size.width()), pixmap);
0
45 }
never executed: end of block
0
46-
47 return
never executed: return pixmap;
pixmap;
never executed: return pixmap;
0
48 }-
49-
50 QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const override-
51 {-
52 (void)mode;;-
53 (void)state;;-
54 static QList<QSize> sizes;-
55 static QPlatformTheme *theme = 0;-
56 if (!theme
!themeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
57 theme = QGuiApplicationPrivate::platformTheme();-
58 if (!theme
!themeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
59 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
60-
61 QList<int> themeSizes = theme->themeHint(QPlatformTheme::IconPixmapSizes).value<QList<int> >();-
62 if (themeSizes.isEmpty()
themeSizes.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
63 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
64-
65 sizes.reserve(themeSizes.count());-
66 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(themeSizes)>::type> _container_((themeSizes)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (int size = *_container_.i; _container_.control; _container_.control = 0)-
67 sizes << QSize(size, size);
never executed: sizes << QSize(size, size);
0
68 }
never executed: end of block
0
69 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
70 }-
71-
72 QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) override-
73 {-
74 const QList<QSize> &sizes = availableSizes(mode, state);-
75 const int numberSizes = sizes.length();-
76 if (numberSizes == 0
numberSizes == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
77 return
never executed: return QSize();
QSize();
never executed: return QSize();
0
78-
79-
80-
81-
82 const int sizeArea = size.width() * size.height();-
83 QSize actualSize = sizes.first();-
84 int actualArea = actualSize.width() * actualSize.height();-
85 for (int i = 1; i < numberSizes
i < numberSizesDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
86 const QSize &s = sizes.at(i);-
87 const int a = s.width() * s.height();-
88 if ((sizeArea <= a
sizeArea <= aDescription
TRUEnever evaluated
FALSEnever evaluated
&& a < actualArea
a < actualAreaDescription
TRUEnever evaluated
FALSEnever evaluated
) || (actualArea < sizeArea
actualArea < sizeAreaDescription
TRUEnever evaluated
FALSEnever evaluated
&& actualArea < a
actualArea < aDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
89 actualSize = s;-
90 actualArea = a;-
91 }
never executed: end of block
0
92 }
never executed: end of block
0
93-
94 if (!actualSize.isNull()
!actualSize.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
&& (actualSize.width() > size.width()
actualSize.wid...> size.width()Description
TRUEnever evaluated
FALSEnever evaluated
|| actualSize.height() > size.height()
actualSize.hei... size.height()Description
TRUEnever evaluated
FALSEnever evaluated
))
0
95 actualSize.scale(size, Qt::KeepAspectRatio);
never executed: actualSize.scale(size, Qt::KeepAspectRatio);
0
96-
97 return
never executed: return actualSize;
actualSize;
never executed: return actualSize;
0
98 }-
99-
100private:-
101 QFileInfo m_fileInfo;-
102 QFileIconProvider::Options m_fipOpts;-
103};-
104QFileIconProviderPrivate::QFileIconProviderPrivate(QFileIconProvider *q) :-
105 q_ptr(q), homePath(QDir::home().absolutePath())-
106{-
107}
never executed: end of block
0
108-
109QIcon QFileIconProviderPrivate::getIcon(QStyle::StandardPixmap name) const-
110{-
111 switch (name) {-
112 case
never executed: case QStyle::SP_FileIcon:
QStyle::SP_FileIcon:
never executed: case QStyle::SP_FileIcon:
0
113 if (file.isNull()
file.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
114 file = QApplication::style()->standardIcon(name);
never executed: file = QApplication::style()->standardIcon(name);
0
115 return
never executed: return file;
file;
never executed: return file;
0
116 case
never executed: case QStyle::SP_FileLinkIcon:
QStyle::SP_FileLinkIcon:
never executed: case QStyle::SP_FileLinkIcon:
0
117 if (fileLink.isNull()
fileLink.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
118 fileLink = QApplication::style()->standardIcon(name);
never executed: fileLink = QApplication::style()->standardIcon(name);
0
119 return
never executed: return fileLink;
fileLink;
never executed: return fileLink;
0
120 case
never executed: case QStyle::SP_DirIcon:
QStyle::SP_DirIcon:
never executed: case QStyle::SP_DirIcon:
0
121 if (directory.isNull()
directory.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
122 directory = QApplication::style()->standardIcon(name);
never executed: directory = QApplication::style()->standardIcon(name);
0
123 return
never executed: return directory;
directory;
never executed: return directory;
0
124 case
never executed: case QStyle::SP_DirLinkIcon:
QStyle::SP_DirLinkIcon:
never executed: case QStyle::SP_DirLinkIcon:
0
125 if (directoryLink.isNull()
directoryLink.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
126 directoryLink = QApplication::style()->standardIcon(name);
never executed: directoryLink = QApplication::style()->standardIcon(name);
0
127 return
never executed: return directoryLink;
directoryLink;
never executed: return directoryLink;
0
128 case
never executed: case QStyle::SP_DriveHDIcon:
QStyle::SP_DriveHDIcon:
never executed: case QStyle::SP_DriveHDIcon:
0
129 if (harddisk.isNull()
harddisk.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
130 harddisk = QApplication::style()->standardIcon(name);
never executed: harddisk = QApplication::style()->standardIcon(name);
0
131 return
never executed: return harddisk;
harddisk;
never executed: return harddisk;
0
132 case
never executed: case QStyle::SP_DriveFDIcon:
QStyle::SP_DriveFDIcon:
never executed: case QStyle::SP_DriveFDIcon:
0
133 if (floppy.isNull()
floppy.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
134 floppy = QApplication::style()->standardIcon(name);
never executed: floppy = QApplication::style()->standardIcon(name);
0
135 return
never executed: return floppy;
floppy;
never executed: return floppy;
0
136 case
never executed: case QStyle::SP_DriveCDIcon:
QStyle::SP_DriveCDIcon:
never executed: case QStyle::SP_DriveCDIcon:
0
137 if (cdrom.isNull()
cdrom.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
138 cdrom = QApplication::style()->standardIcon(name);
never executed: cdrom = QApplication::style()->standardIcon(name);
0
139 return
never executed: return cdrom;
cdrom;
never executed: return cdrom;
0
140 case
never executed: case QStyle::SP_DriveNetIcon:
QStyle::SP_DriveNetIcon:
never executed: case QStyle::SP_DriveNetIcon:
0
141 if (network.isNull()
network.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
142 network = QApplication::style()->standardIcon(name);
never executed: network = QApplication::style()->standardIcon(name);
0
143 return
never executed: return network;
network;
never executed: return network;
0
144 case
never executed: case QStyle::SP_ComputerIcon:
QStyle::SP_ComputerIcon:
never executed: case QStyle::SP_ComputerIcon:
0
145 if (computer.isNull()
computer.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
146 computer = QApplication::style()->standardIcon(name);
never executed: computer = QApplication::style()->standardIcon(name);
0
147 return
never executed: return computer;
computer;
never executed: return computer;
0
148 case
never executed: case QStyle::SP_DesktopIcon:
QStyle::SP_DesktopIcon:
never executed: case QStyle::SP_DesktopIcon:
0
149 if (desktop.isNull()
desktop.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
150 desktop = QApplication::style()->standardIcon(name);
never executed: desktop = QApplication::style()->standardIcon(name);
0
151 return
never executed: return desktop;
desktop;
never executed: return desktop;
0
152 case
never executed: case QStyle::SP_TrashIcon:
QStyle::SP_TrashIcon:
never executed: case QStyle::SP_TrashIcon:
0
153 if (trashcan.isNull()
trashcan.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
154 trashcan = QApplication::style()->standardIcon(name);
never executed: trashcan = QApplication::style()->standardIcon(name);
0
155 return
never executed: return trashcan;
trashcan;
never executed: return trashcan;
0
156 case
never executed: case QStyle::SP_DirHomeIcon:
QStyle::SP_DirHomeIcon:
never executed: case QStyle::SP_DirHomeIcon:
0
157 if (home.isNull()
home.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
158 home = QApplication::style()->standardIcon(name);
never executed: home = QApplication::style()->standardIcon(name);
0
159 return
never executed: return home;
home;
never executed: return home;
0
160 default
never executed: default:
:
never executed: default:
0
161 return
never executed: return QIcon();
QIcon();
never executed: return QIcon();
0
162 }-
163 return
dead code: return QIcon();
QIcon();
dead code: return QIcon();
-
164}-
165-
166-
167-
168-
169-
170QFileIconProvider::QFileIconProvider()-
171 : d_ptr(new QFileIconProviderPrivate(this))-
172{-
173}
never executed: end of block
0
174-
175-
176-
177-
178-
179-
180QFileIconProvider::~QFileIconProvider()-
181{-
182}-
183-
184-
185-
186-
187-
188-
189-
190void QFileIconProvider::setOptions(QFileIconProvider::Options options)-
191{-
192 QFileIconProviderPrivate * const d = d_func();-
193 d->options = options;-
194}
never executed: end of block
0
195QFileIconProvider::Options QFileIconProvider::options() const-
196{-
197 const QFileIconProviderPrivate * const d = d_func();-
198 return
never executed: return d->options;
d->options;
never executed: return d->options;
0
199}-
200-
201-
202-
203-
204-
205QIcon QFileIconProvider::icon(IconType type) const-
206{-
207 const QFileIconProviderPrivate * const d = d_func();-
208 switch (type) {-
209 case
never executed: case Computer:
Computer:
never executed: case Computer:
0
210 return
never executed: return d->getIcon(QStyle::SP_ComputerIcon);
d->getIcon(QStyle::SP_ComputerIcon);
never executed: return d->getIcon(QStyle::SP_ComputerIcon);
0
211 case
never executed: case Desktop:
Desktop:
never executed: case Desktop:
0
212 return
never executed: return d->getIcon(QStyle::SP_DesktopIcon);
d->getIcon(QStyle::SP_DesktopIcon);
never executed: return d->getIcon(QStyle::SP_DesktopIcon);
0
213 case
never executed: case Trashcan:
Trashcan:
never executed: case Trashcan:
0
214 return
never executed: return d->getIcon(QStyle::SP_TrashIcon);
d->getIcon(QStyle::SP_TrashIcon);
never executed: return d->getIcon(QStyle::SP_TrashIcon);
0
215 case
never executed: case Network:
Network:
never executed: case Network:
0
216 return
never executed: return d->getIcon(QStyle::SP_DriveNetIcon);
d->getIcon(QStyle::SP_DriveNetIcon);
never executed: return d->getIcon(QStyle::SP_DriveNetIcon);
0
217 case
never executed: case Drive:
Drive:
never executed: case Drive:
0
218 return
never executed: return d->getIcon(QStyle::SP_DriveHDIcon);
d->getIcon(QStyle::SP_DriveHDIcon);
never executed: return d->getIcon(QStyle::SP_DriveHDIcon);
0
219 case
never executed: case Folder:
Folder:
never executed: case Folder:
0
220 return
never executed: return d->getIcon(QStyle::SP_DirIcon);
d->getIcon(QStyle::SP_DirIcon);
never executed: return d->getIcon(QStyle::SP_DirIcon);
0
221 case
never executed: case File:
File:
never executed: case File:
0
222 return
never executed: return d->getIcon(QStyle::SP_FileIcon);
d->getIcon(QStyle::SP_FileIcon);
never executed: return d->getIcon(QStyle::SP_FileIcon);
0
223 default
never executed: default:
:
never executed: default:
0
224 break;
never executed: break;
0
225 };-
226 return
never executed: return QIcon();
QIcon();
never executed: return QIcon();
0
227}-
228-
229static bool isCacheable(const QFileInfo &fi)-
230{-
231 if (!fi.isFile()
!fi.isFile()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
232 return
never executed: return false;
false;
never executed: return false;
0
233 return
never executed: return !fi.isExecutable() && !fi.isSymLink();
!fi.isExecutable()
!fi.isExecutable()Description
TRUEnever evaluated
FALSEnever evaluated
&& !fi.isSymLink()
!fi.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return !fi.isExecutable() && !fi.isSymLink();
0
234-
235}-
236-
237QIcon QFileIconProviderPrivate::getIcon(const QFileInfo &fi) const-
238{-
239 const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme();-
240 if (!theme
!themeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
241 return
never executed: return QIcon();
QIcon();
never executed: return QIcon();
0
242-
243 QList<int> sizes = theme->themeHint(QPlatformTheme::IconPixmapSizes).value<QList<int> >();-
244 if (sizes.isEmpty()
sizes.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
245 return
never executed: return QIcon();
QIcon();
never executed: return QIcon();
0
246-
247 return
never executed: return QIcon(new QFileIconEngine(fi, options));
QIcon(new QFileIconEngine(fi, options));
never executed: return QIcon(new QFileIconEngine(fi, options));
0
248}-
249-
250-
251-
252-
253-
254QIcon QFileIconProvider::icon(const QFileInfo &info) const-
255{-
256 const QFileIconProviderPrivate * const d = d_func();-
257-
258-
259 const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();-
260 if (desktopEnvironment != ([]() -> QByteArray { enum { Size = sizeof("KDE") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "KDE" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }())
desktopEnviron...eturn ba; }())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
261 QIcon gtkIcon = QGtkStylePrivate::getFilesystemIcon(info);-
262 if (!gtkIcon.isNull()
!gtkIcon.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
263 return
never executed: return gtkIcon;
gtkIcon;
never executed: return gtkIcon;
0
264 }
never executed: end of block
0
265-
266-
267 QIcon retIcon = d->getIcon(info);-
268 if (!retIcon.isNull()
!retIcon.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
269 return
never executed: return retIcon;
retIcon;
never executed: return retIcon;
0
270-
271 if (info.isRoot()
info.isRoot()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
272 return
never executed: return d->getIcon(QStyle::SP_DriveHDIcon);
d->getIcon(QStyle::SP_DriveHDIcon);
never executed: return d->getIcon(QStyle::SP_DriveHDIcon);
0
273-
274-
275 if (info.isFile()
info.isFile()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 if (info.isSymLink()
info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
277 return
never executed: return d->getIcon(QStyle::SP_FileLinkIcon);
d->getIcon(QStyle::SP_FileLinkIcon);
never executed: return d->getIcon(QStyle::SP_FileLinkIcon);
0
278 else-
279 return
never executed: return d->getIcon(QStyle::SP_FileIcon);
d->getIcon(QStyle::SP_FileIcon);
never executed: return d->getIcon(QStyle::SP_FileIcon);
0
280 }-
281 if (info.isDir()
info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
282 if (info.isSymLink()
info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
283 return
never executed: return d->getIcon(QStyle::SP_DirLinkIcon);
d->getIcon(QStyle::SP_DirLinkIcon);
never executed: return d->getIcon(QStyle::SP_DirLinkIcon);
0
284 } else {-
285 if (info.absoluteFilePath() == d->homePath
info.absoluteF...== d->homePathDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
286 return
never executed: return d->getIcon(QStyle::SP_DirHomeIcon);
d->getIcon(QStyle::SP_DirHomeIcon);
never executed: return d->getIcon(QStyle::SP_DirHomeIcon);
0
287 } else {-
288 return
never executed: return d->getIcon(QStyle::SP_DirIcon);
d->getIcon(QStyle::SP_DirIcon);
never executed: return d->getIcon(QStyle::SP_DirIcon);
0
289 }-
290 }-
291 }-
292 return
never executed: return QIcon();
QIcon();
never executed: return QIcon();
0
293}-
294-
295-
296-
297-
298-
299QString QFileIconProvider::type(const QFileInfo &info) const-
300{-
301 if (info.isRoot()
info.isRoot()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
302 return
never executed: return QApplication::translate("QFileDialog", "Drive");
QApplication::translate("QFileDialog", "Drive");
never executed: return QApplication::translate("QFileDialog", "Drive");
0
303 if (info.isFile()
info.isFile()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
304 if (!info.suffix().isEmpty()
!info.suffix().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
305-
306 return
never executed: return QApplication::translate("QFileDialog", "%1 File").arg(info.suffix());
QApplication::translate("QFileDialog", "%1 File").arg(info.suffix());
never executed: return QApplication::translate("QFileDialog", "%1 File").arg(info.suffix());
0
307 }-
308 return
never executed: return QApplication::translate("QFileDialog", "File");
QApplication::translate("QFileDialog", "File");
never executed: return QApplication::translate("QFileDialog", "File");
0
309 }-
310-
311 if (info.isDir()
info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
312-
313-
314-
315 return
never executed: return QApplication::translate("QFileDialog", "Folder", "All other platforms");
QApplication::translate("QFileDialog", "Folder", "All other platforms");
never executed: return QApplication::translate("QFileDialog", "Folder", "All other platforms");
0
316-
317-
318-
319-
320-
321-
322 if (info.isSymLink()
info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
323-
324-
325-
326 return
never executed: return QApplication::translate("QFileDialog", "Shortcut", "All other platforms");
QApplication::translate("QFileDialog", "Shortcut", "All other platforms");
never executed: return QApplication::translate("QFileDialog", "Shortcut", "All other platforms");
0
327-
328-
329-
330-
331-
332-
333 return
never executed: return QApplication::translate("QFileDialog", "Unknown");
QApplication::translate("QFileDialog", "Unknown");
never executed: return QApplication::translate("QFileDialog", "Unknown");
0
334}-
335-
336-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9