1 // SysIconUtils.h
2
3 #ifndef __SYS_ICON_UTILS_H
4 #define __SYS_ICON_UTILS_H
5
6 #include "../../../Common/MyString.h"
7
8 struct CExtIconPair
9 {
10 UString Ext;
11 int IconIndex;
12 // UString TypeName;
13
14 // int Compare(const CExtIconPair &a) const { return MyStringCompareNoCase(Ext, a.Ext); }
15 };
16
17 struct CAttribIconPair
18 {
19 DWORD Attrib;
20 int IconIndex;
21 // UString TypeName;
22
23 // int Compare(const CAttribIconPair &a) const { return Ext.Compare(a.Ext); }
24 };
25
26 class CExtToIconMap
27 {
28 public:
29 CRecordVector<CAttribIconPair> _attribMap;
30 CObjectVector<CExtIconPair> _extMap;
31 int SplitIconIndex;
32 int SplitIconIndex_Defined;
33
CExtToIconMap()34 CExtToIconMap(): SplitIconIndex_Defined(false) {}
35
Clear()36 void Clear()
37 {
38 SplitIconIndex_Defined = false;
39 _extMap.Clear();
40 _attribMap.Clear();
41 }
42 int GetIconIndex(DWORD attrib, const wchar_t *fileName /* , UString *typeName */);
43 // int GetIconIndex(DWORD attrib, const UString &fileName);
44 };
45
46 DWORD_PTR GetRealIconIndex(CFSTR path, DWORD attrib, int &iconIndex);
47 int GetIconIndexForCSIDL(int csidl);
48
GetSysImageList(bool smallIcons)49 inline HIMAGELIST GetSysImageList(bool smallIcons)
50 {
51 SHFILEINFO shellInfo;
52 return (HIMAGELIST)SHGetFileInfo(TEXT(""),
53 FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY,
54 &shellInfo, sizeof(shellInfo),
55 SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX | (smallIcons ? SHGFI_SMALLICON : SHGFI_ICON));
56 }
57
58 #endif
59