1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
use windows_sys::Win32::UI::Shell;
/// A stock icon.
#[derive(Debug)]
#[repr(transparent)]
pub struct StockIcon(i32);
impl StockIcon {
/// Document of a type with no associated application.
pub const DOCNOASSOC: Self = Self(Shell::SIID_DOCNOASSOC);
/// Document of a type with an associated application.
pub const DOCASSOC: Self = Self(Shell::SIID_DOCASSOC);
/// Generic application with no custom icon.
pub const APPLICATION: Self = Self(Shell::SIID_APPLICATION);
/// Folder (generic, unspecified state).
pub const FOLDER: Self = Self(Shell::SIID_FOLDER);
/// Folder (open).
pub const FOLDEROPEN: Self = Self(Shell::SIID_FOLDEROPEN);
/// 5.25-inch disk drive.
pub const DRIVE525: Self = Self(Shell::SIID_DRIVE525);
/// 3.5-inch disk drive.
pub const DRIVE35: Self = Self(Shell::SIID_DRIVE35);
/// Removable drive.
pub const DRIVEREMOVE: Self = Self(Shell::SIID_DRIVEREMOVE);
/// Fixed drive (hard disk).
pub const DRIVEFIXED: Self = Self(Shell::SIID_DRIVEFIXED);
/// Network drive (connected).
pub const DRIVENET: Self = Self(Shell::SIID_DRIVENET);
/// Network drive (disconnected).
pub const DRIVENETDISABLED: Self = Self(Shell::SIID_DRIVENETDISABLED);
/// CD drive.
pub const DRIVECD: Self = Self(Shell::SIID_DRIVECD);
/// RAM disk drive.
pub const DRIVERAM: Self = Self(Shell::SIID_DRIVERAM);
/// The entire network.
pub const WORLD: Self = Self(Shell::SIID_WORLD);
/// A computer on the network.
pub const SERVER: Self = Self(Shell::SIID_SERVER);
/// A local printer or print destination.
pub const PRINTER: Self = Self(Shell::SIID_PRINTER);
/// The Network virtual folder (FOLDERID_NetworkFolder/CSIDL_NETWORK).
pub const MYNETWORK: Self = Self(Shell::SIID_MYNETWORK);
/// The Search feature.
pub const FIND: Self = Self(Shell::SIID_FIND);
/// The Help and Support feature.
pub const HELP: Self = Self(Shell::SIID_HELP);
/// Overlay for a shared item.
pub const SHARE: Self = Self(Shell::SIID_SHARE);
/// Overlay for a shortcut.
pub const LINK: Self = Self(Shell::SIID_LINK);
/// Overlay for items that are expected to be slow to access.
pub const SLOWFILE: Self = Self(Shell::SIID_SLOWFILE);
/// The Recycle Bin (empty).
pub const RECYCLER: Self = Self(Shell::SIID_RECYCLER);
/// The Recycle Bin (not empty).
pub const RECYCLERFULL: Self = Self(Shell::SIID_RECYCLERFULL);
/// Audio CD media.
pub const MEDIACDAUDIO: Self = Self(Shell::SIID_MEDIACDAUDIO);
/// Security lock.
pub const LOCK: Self = Self(Shell::SIID_LOCK);
/// A virtual folder that contains the results of a search.
pub const AUTOLIST: Self = Self(Shell::SIID_AUTOLIST);
/// A network printer.
pub const PRINTERNET: Self = Self(Shell::SIID_PRINTERNET);
/// A server shared on a network.
pub const SERVERSHARE: Self = Self(Shell::SIID_SERVERSHARE);
/// A local fax printer.
pub const PRINTERFAX: Self = Self(Shell::SIID_PRINTERFAX);
/// A network fax printer.
pub const PRINTERFAXNET: Self = Self(Shell::SIID_PRINTERFAXNET);
/// A file that receives the output of a Print to file operation.
pub const PRINTERFILE: Self = Self(Shell::SIID_PRINTERFILE);
/// A category that results from a Stack by command to organize the contents
/// of a folder.
pub const STACK: Self = Self(Shell::SIID_STACK);
/// Super Video CD (SVCD) media.
pub const MEDIASVCD: Self = Self(Shell::SIID_MEDIASVCD);
/// A folder that contains only subfolders as child items.
pub const STUFFEDFOLDER: Self = Self(Shell::SIID_STUFFEDFOLDER);
/// Unknown drive type.
pub const DRIVEUNKNOWN: Self = Self(Shell::SIID_DRIVEUNKNOWN);
/// DVD drive.
pub const DRIVEDVD: Self = Self(Shell::SIID_DRIVEDVD);
/// DVD media.
pub const MEDIADVD: Self = Self(Shell::SIID_MEDIADVD);
/// DVD-RAM media.
pub const MEDIADVDRAM: Self = Self(Shell::SIID_MEDIADVDRAM);
/// DVD-RW media.
pub const MEDIADVDRW: Self = Self(Shell::SIID_MEDIADVDRW);
/// DVD-R media.
pub const MEDIADVDR: Self = Self(Shell::SIID_MEDIADVDR);
/// DVD-ROM media.
pub const MEDIADVDROM: Self = Self(Shell::SIID_MEDIADVDROM);
/// CD+ (enhanced audio CD) media.
pub const MEDIACDAUDIOPLUS: Self = Self(Shell::SIID_MEDIACDAUDIOPLUS);
/// CD-RW media.
pub const MEDIACDRW: Self = Self(Shell::SIID_MEDIACDRW);
/// CD-R media.
pub const MEDIACDR: Self = Self(Shell::SIID_MEDIACDR);
/// A writable CD in the process of being burned.
pub const MEDIACDBURN: Self = Self(Shell::SIID_MEDIACDBURN);
/// Blank writable CD media.
pub const MEDIABLANKCD: Self = Self(Shell::SIID_MEDIABLANKCD);
/// CD-ROM media.
pub const MEDIACDROM: Self = Self(Shell::SIID_MEDIACDROM);
/// An audio file.
pub const AUDIOFILES: Self = Self(Shell::SIID_AUDIOFILES);
/// An image file.
pub const IMAGEFILES: Self = Self(Shell::SIID_IMAGEFILES);
/// A video file.
pub const VIDEOFILES: Self = Self(Shell::SIID_VIDEOFILES);
/// A mixed file.
pub const MIXEDFILES: Self = Self(Shell::SIID_MIXEDFILES);
/// Folder back.
pub const FOLDERBACK: Self = Self(Shell::SIID_FOLDERBACK);
/// Folder front.
pub const FOLDERFRONT: Self = Self(Shell::SIID_FOLDERFRONT);
/// Security shield. Use for UAC prompts only.
pub const SHIELD: Self = Self(Shell::SIID_SHIELD);
/// Warning.
pub const WARNING: Self = Self(Shell::SIID_WARNING);
/// Informational.
pub const INFO: Self = Self(Shell::SIID_INFO);
/// Error.
pub const ERROR: Self = Self(Shell::SIID_ERROR);
/// Key.
pub const KEY: Self = Self(Shell::SIID_KEY);
/// Software.
pub const SOFTWARE: Self = Self(Shell::SIID_SOFTWARE);
/// A UI item, such as a button, that issues a rename command.
pub const RENAME: Self = Self(Shell::SIID_RENAME);
/// A UI item, such as a button, that issues a delete command.
pub const DELETE: Self = Self(Shell::SIID_DELETE);
/// Audio DVD media.
pub const MEDIAAUDIODVD: Self = Self(Shell::SIID_MEDIAAUDIODVD);
/// Movie DVD media.
pub const MEDIAMOVIEDVD: Self = Self(Shell::SIID_MEDIAMOVIEDVD);
/// Enhanced CD media.
pub const MEDIAENHANCEDCD: Self = Self(Shell::SIID_MEDIAENHANCEDCD);
/// Enhanced DVD media.
pub const MEDIAENHANCEDDVD: Self = Self(Shell::SIID_MEDIAENHANCEDDVD);
/// High definition DVD media in the HD DVD format.
pub const MEDIAHDDVD: Self = Self(Shell::SIID_MEDIAHDDVD);
/// High definition DVD media in the Blu-ray Discâ„¢ format.
pub const MEDIABLURAY: Self = Self(Shell::SIID_MEDIABLURAY);
/// Video CD (VCD) media.
pub const MEDIAVCD: Self = Self(Shell::SIID_MEDIAVCD);
/// DVD+R media.
pub const MEDIADVDPLUSR: Self = Self(Shell::SIID_MEDIADVDPLUSR);
/// DVD+RW media.
pub const MEDIADVDPLUSRW: Self = Self(Shell::SIID_MEDIADVDPLUSRW);
/// A desktop computer.
pub const DESKTOPPC: Self = Self(Shell::SIID_DESKTOPPC);
/// A mobile computer (laptop).
pub const MOBILEPC: Self = Self(Shell::SIID_MOBILEPC);
/// The User Accounts Control Panel item.
pub const USERS: Self = Self(Shell::SIID_USERS);
/// Smart media.
pub const MEDIASMARTMEDIA: Self = Self(Shell::SIID_MEDIASMARTMEDIA);
/// CompactFlash media.
pub const MEDIACOMPACTFLASH: Self = Self(Shell::SIID_MEDIACOMPACTFLASH);
/// A cell phone.
pub const DEVICECELLPHONE: Self = Self(Shell::SIID_DEVICECELLPHONE);
/// A digital camera.
pub const DEVICECAMERA: Self = Self(Shell::SIID_DEVICECAMERA);
/// A digital video camera.
pub const DEVICEVIDEOCAMERA: Self = Self(Shell::SIID_DEVICEVIDEOCAMERA);
/// An audio player.
pub const DEVICEAUDIOPLAYER: Self = Self(Shell::SIID_DEVICEAUDIOPLAYER);
/// Connect to network.
pub const NETWORKCONNECT: Self = Self(Shell::SIID_NETWORKCONNECT);
/// The Network and Internet Control Panel item.
pub const INTERNET: Self = Self(Shell::SIID_INTERNET);
/// A compressed file with a .zip file name extension.
pub const ZIPFILE: Self = Self(Shell::SIID_ZIPFILE);
/// The Additional Options Control Panel item.
pub const SETTINGS: Self = Self(Shell::SIID_SETTINGS);
/// Windows Vista with Service Pack 1 (SP1) and later. High definition DVD
/// drive (any type - HD DVD-ROM, HD DVD-R, HD-DVD-RAM) that uses the HD DVD
/// format.
pub const DRIVEHDDVD: Self = Self(Shell::SIID_DRIVEHDDVD);
/// Windows Vista with SP1 and later. High definition DVD drive (any type -
/// BD-ROM, BD-R, BD-RE) that uses the Blu-ray Disc format.
pub const DRIVEBD: Self = Self(Shell::SIID_DRIVEBD);
/// Windows Vista with SP1 and later. High definition DVD-ROM media in the
/// HD DVD-ROM format.
pub const MEDIAHDDVDROM: Self = Self(Shell::SIID_MEDIAHDDVDROM);
/// Windows Vista with SP1 and later. High definition DVD-R media in the HD
/// DVD-R format.
pub const MEDIAHDDVDR: Self = Self(Shell::SIID_MEDIAHDDVDR);
/// Windows Vista with SP1 and later. High definition DVD-RAM media in the
/// HD DVD-RAM format.
pub const MEDIAHDDVDRAM: Self = Self(Shell::SIID_MEDIAHDDVDRAM);
/// Windows Vista with SP1 and later. High definition DVD-ROM media in the
/// Blu-ray Disc BD-ROM format.
pub const MEDIABDROM: Self = Self(Shell::SIID_MEDIABDROM);
/// Windows Vista with SP1 and later. High definition write-once media in
/// the Blu-ray Disc BD-R format.
pub const MEDIABDR: Self = Self(Shell::SIID_MEDIABDR);
/// Windows Vista with SP1 and later. High definition read/write media in
/// the Blu-ray Disc BD-RE format.
pub const MEDIABDRE: Self = Self(Shell::SIID_MEDIABDRE);
/// Windows Vista with SP1 and later. A cluster disk array.
pub const CLUSTEREDDRIVE: Self = Self(Shell::SIID_CLUSTEREDDRIVE);
/// Get the underlying icon identifier.
pub(crate) fn as_id(&self) -> i32 {
self.0
}
}