Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qfileiconprovider.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#include "
qfileiconprovider.h
"
5
#include "
qfileiconprovider_p.h
"
6
7
#include <
qapplication.h
>
8
#include <
qdir.h
>
9
#include <
qpixmapcache.h
>
10
#include <private/qfunctions_p.h>
11
#include <private/qguiapplication_p.h>
12
#include <private/qicon_p.h>
13
#include <private/qfilesystementry_p.h>
14
#include <qpa/qplatformintegration.h>
15
#include <qpa/qplatformservices.h>
16
#include <qpa/qplatformtheme.h>
17
18
#if defined(Q_OS_WIN)
19
# include <
qt_windows.h
>
20
# include <commctrl.h>
21
# include <objbase.h>
22
#endif
23
24
QT_BEGIN_NAMESPACE
25
34
QFileIconProviderPrivate::QFileIconProviderPrivate
(
QFileIconProvider
*
q
)
35
:
QAbstractFileIconProviderPrivate
(
q
), homePath(
QDir
::home().
absolutePath
())
36
{
37
}
38
39
QIcon
QFileIconProviderPrivate::getIcon
(
QStyle::StandardPixmap
name
)
const
40
{
41
switch
(
name
) {
42
case
QStyle::SP_FileIcon
:
43
if
(file.
isNull
())
44
file =
QApplication::style
()->standardIcon(
name
);
45
return
file;
46
case
QStyle::SP_FileLinkIcon
:
47
if
(fileLink.
isNull
())
48
fileLink =
QApplication::style
()->standardIcon(
name
);
49
return
fileLink;
50
case
QStyle::SP_DirIcon
:
51
if
(directory.
isNull
())
52
directory =
QApplication::style
()->standardIcon(
name
);
53
return
directory;
54
case
QStyle::SP_DirLinkIcon
:
55
if
(directoryLink.
isNull
())
56
directoryLink =
QApplication::style
()->standardIcon(
name
);
57
return
directoryLink;
58
case
QStyle::SP_DriveHDIcon
:
59
if
(harddisk.
isNull
())
60
harddisk =
QApplication::style
()->standardIcon(
name
);
61
return
harddisk;
62
case
QStyle::SP_DriveFDIcon
:
63
if
(floppy.
isNull
())
64
floppy =
QApplication::style
()->standardIcon(
name
);
65
return
floppy;
66
case
QStyle::SP_DriveCDIcon
:
67
if
(cdrom.
isNull
())
68
cdrom =
QApplication::style
()->standardIcon(
name
);
69
return
cdrom;
70
case
QStyle::SP_DriveNetIcon
:
71
if
(network.
isNull
())
72
network =
QApplication::style
()->standardIcon(
name
);
73
return
network;
74
case
QStyle::SP_ComputerIcon
:
75
if
(computer.
isNull
())
76
computer =
QApplication::style
()->standardIcon(
name
);
77
return
computer;
78
case
QStyle::SP_DesktopIcon
:
79
if
(desktop.
isNull
())
80
desktop =
QApplication::style
()->standardIcon(
name
);
81
return
desktop;
82
case
QStyle::SP_TrashIcon
:
83
if
(trashcan.
isNull
())
84
trashcan =
QApplication::style
()->standardIcon(
name
);
85
return
trashcan;
86
case
QStyle::SP_DirHomeIcon
:
87
if
(home.
isNull
())
88
home =
QApplication::style
()->standardIcon(
name
);
89
return
home;
90
default
:
91
return
QIcon
();
92
}
93
return
QIcon
();
94
}
95
100
QFileIconProvider::QFileIconProvider
()
101
:
QAbstractFileIconProvider
(*new
QFileIconProviderPrivate
(
this
))
102
{
103
}
104
109
QFileIconProvider::~QFileIconProvider
() =
default
;
110
115
QIcon
QFileIconProvider::icon
(
IconType
type
)
const
116
{
117
Q_D(
const
QFileIconProvider
);
118
switch
(
type
) {
119
case
Computer
:
120
return
d
->getIcon(
QStyle::SP_ComputerIcon
);
121
case
Desktop
:
122
return
d
->getIcon(
QStyle::SP_DesktopIcon
);
123
case
Trashcan
:
124
return
d
->getIcon(
QStyle::SP_TrashIcon
);
125
case
Network
:
126
return
d
->getIcon(
QStyle::SP_DriveNetIcon
);
127
case
Drive
:
128
return
d
->getIcon(
QStyle::SP_DriveHDIcon
);
129
case
Folder
:
130
return
d
->getIcon(
QStyle::SP_DirIcon
);
131
case
File
:
132
return
d
->getIcon(
QStyle::SP_FileIcon
);
133
default
:
134
break
;
135
};
136
return
QIcon
();
137
}
138
139
QIcon
QFileIconProviderPrivate::getIcon
(
const
QFileInfo
&fi)
const
140
{
141
return
getPlatformThemeIcon
(fi);
142
}
143
148
QIcon
QFileIconProvider::icon
(
const
QFileInfo
&
info
)
const
149
{
150
Q_D(
const
QFileIconProvider
);
151
152
QIcon
retIcon =
d
->getIcon(
info
);
153
if
(!retIcon.isNull())
154
return
retIcon;
155
156
const
QString
&
path
=
info
.absoluteFilePath();
157
if
(
path
.isEmpty() ||
QFileSystemEntry::isRootPath
(
path
))
158
#if defined (Q_OS_WIN)
159
{
160
UINT
type
= GetDriveType(
reinterpret_cast<
const
wchar_t
*
>
(
path
.utf16()));
161
162
switch
(
type
) {
163
case
DRIVE_REMOVABLE:
164
return
d
->getIcon(
QStyle::SP_DriveFDIcon
);
165
case
DRIVE_FIXED:
166
return
d
->getIcon(
QStyle::SP_DriveHDIcon
);
167
case
DRIVE_REMOTE:
168
return
d
->getIcon(
QStyle::SP_DriveNetIcon
);
169
case
DRIVE_CDROM:
170
return
d
->getIcon(
QStyle::SP_DriveCDIcon
);
171
case
DRIVE_RAMDISK:
172
case
DRIVE_UNKNOWN:
173
case
DRIVE_NO_ROOT_DIR:
174
default
:
175
return
d
->getIcon(
QStyle::SP_DriveHDIcon
);
176
}
177
}
178
#else
179
return
d
->getIcon(
QStyle::SP_DriveHDIcon
);
180
#endif
181
182
if
(
info
.isFile()) {
183
if
(
info
.isSymLink())
184
return
d
->getIcon(
QStyle::SP_FileLinkIcon
);
185
else
186
return
d
->getIcon(
QStyle::SP_FileIcon
);
187
}
188
if
(
info
.isDir()) {
189
if
(
info
.isSymLink()) {
190
return
d
->getIcon(
QStyle::SP_DirLinkIcon
);
191
}
else
{
192
if
(
info
.absoluteFilePath() ==
d
->homePath) {
193
return
d
->getIcon(
QStyle::SP_DirHomeIcon
);
194
}
else
{
195
return
d
->getIcon(
QStyle::SP_DirIcon
);
196
}
197
}
198
}
199
return
QIcon
();
200
}
201
202
QT_END_NAMESPACE
QAbstractFileIconProviderPrivate
Definition
qabstractfileiconprovider_p.h:27
QAbstractFileIconProviderPrivate::getPlatformThemeIcon
QIcon getPlatformThemeIcon(QAbstractFileIconProvider::IconType type) const
Definition
qabstractfileiconprovider.cpp:36
QAbstractFileIconProvider
\inmodule QtGui
Definition
qabstractfileiconprovider.h:17
QAbstractFileIconProvider::IconType
IconType
\value Computer The icon used for the computing device as a whole \value Desktop The icon for the spe...
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Trashcan
@ Trashcan
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Computer
@ Computer
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Desktop
@ Desktop
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Network
@ Network
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Drive
@ Drive
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::Folder
@ Folder
Definition
qabstractfileiconprovider.h:19
QAbstractFileIconProvider::File
@ File
Definition
qabstractfileiconprovider.h:19
QApplication::style
static QStyle * style()
Returns the application's style object.
Definition
qapplication.cpp:902
QDir
\inmodule QtCore
Definition
qdir.h:20
QFileIconProviderPrivate
Definition
qfileiconprovider_p.h:31
QFileIconProviderPrivate::QFileIconProviderPrivate
QFileIconProviderPrivate(QFileIconProvider *q)
Definition
qfileiconprovider.cpp:34
QFileIconProviderPrivate::getIcon
QIcon getIcon(QStyle::StandardPixmap name) const
Definition
qfileiconprovider.cpp:39
QFileIconProvider
\inmodule QtWidgets
Definition
qfileiconprovider.h:19
QFileIconProvider::~QFileIconProvider
~QFileIconProvider()
Destroys the file icon provider.
QFileIconProvider::QFileIconProvider
QFileIconProvider()
Constructs a file icon provider.
Definition
qfileiconprovider.cpp:100
QFileIconProvider::icon
QIcon icon(IconType type) const override
\reimp
Definition
qfileiconprovider.cpp:115
QFileInfo
Definition
qfileinfo.h:23
QFileSystemEntry::isRootPath
static Q_CORE_EXPORT bool isRootPath(const QString &path)
Definition
qfilesystementry.cpp:291
QIcon
The QIcon class provides scalable icons in different modes and states.
Definition
qicon.h:20
QIcon::isNull
bool isNull() const
Returns true if the icon is empty; otherwise returns false.
Definition
qicon.cpp:1019
QString
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition
qstring.h:129
QStyle::StandardPixmap
StandardPixmap
This enum describes the available standard pixmaps.
Definition
qstyle.h:716
QStyle::SP_DirIcon
@ SP_DirIcon
Definition
qstyle.h:755
QStyle::SP_FileIcon
@ SP_FileIcon
Definition
qstyle.h:742
QStyle::SP_DirLinkIcon
@ SP_DirLinkIcon
Definition
qstyle.h:740
QStyle::SP_DriveNetIcon
@ SP_DriveNetIcon
Definition
qstyle.h:737
QStyle::SP_ComputerIcon
@ SP_ComputerIcon
Definition
qstyle.h:732
QStyle::SP_DesktopIcon
@ SP_DesktopIcon
Definition
qstyle.h:730
QStyle::SP_DriveCDIcon
@ SP_DriveCDIcon
Definition
qstyle.h:735
QStyle::SP_TrashIcon
@ SP_TrashIcon
Definition
qstyle.h:731
QStyle::SP_DirHomeIcon
@ SP_DirHomeIcon
Definition
qstyle.h:773
QStyle::SP_DriveHDIcon
@ SP_DriveHDIcon
Definition
qstyle.h:734
QStyle::SP_DriveFDIcon
@ SP_DriveFDIcon
Definition
qstyle.h:733
QStyle::SP_FileLinkIcon
@ SP_FileLinkIcon
Definition
qstyle.h:743
this
#define this
Definition
dialogs.cpp:9
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1590
qapplication.h
qdir.h
qfileiconprovider.h
qfileiconprovider_p.h
type
GLenum type
Definition
qopengles2ext.h:150
name
GLuint name
Definition
qopengles2ext.h:156
q
GLdouble GLdouble GLdouble GLdouble q
Definition
qopenglext.h:259
path
GLsizei const GLchar *const * path
Definition
qopenglext.h:4283
qpixmapcache.h
absolutePath
static QString absolutePath(const QString &path)
Definition
qqmlpreviewfileengine.cpp:30
qt_windows.h
d
double d
Definition
src_corelib_text_qlocale.cpp:9
info
QHostInfo info
[0]
Definition
src_network_kernel_qhostinfo.cpp:14
qtbase
src
widgets
itemviews
qfileiconprovider.cpp
Generated by
1.10.0