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
|
#include "metacontacts.h"
typedef struct {
char* szDescr;
char* szName;
int defIconID;
} IconStruct;
static IconStruct iconList[] = {
{ "Toggle Off", "mc_off", IDI_MCMENUOFF },
{ "Toggle On", "mc_on", IDI_MCMENU },
{ "Convert to MetaContact", "mc_convert", IDI_MCCONVERT },
{ "Add to Existing", "mc_add", IDI_MCADD },
{ "Edit", "mc_edit", IDI_MCEDIT },
{ "Set to Default", "mc_default", IDI_MCSETDEFAULT },
{ "Remove", "mc_remove", IDI_MCREMOVE },
};
HICON LoadIconEx(IconIndex i)
{
return Skin_GetIcon(iconList[i].szName);
}
void ReleaseIconEx(HICON hIcon)
{
Skin_ReleaseIcon(hIcon);
}
int ReloadIcons(WPARAM wParam, LPARAM lParam)
{
// fix menu icons
CLISTMENUITEM menu = {0};
menu.cbSize = sizeof(menu);
menu.flags = CMIM_ICON;
menu.hIcon = LoadIconEx(Meta_IsEnabled() ? I_MENUOFF : I_MENU);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
menu.hIcon = LoadIconEx(I_CONVERT);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
menu.hIcon = LoadIconEx(I_ADD);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
menu.hIcon = LoadIconEx(I_EDIT);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
menu.hIcon = LoadIconEx(I_SETDEFAULT);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
menu.hIcon = LoadIconEx(I_REMOVE);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&menu);
ReleaseIconEx(menu.hIcon);
return 0;
}
void InitIcons(void)
{
TCHAR path[MAX_PATH];
GetModuleFileName(hInstance, path, SIZEOF(path));
SKINICONDESC sid = {0};
sid.cbSize = sizeof(SKINICONDESC);
sid.pszSection = META_PROTO;
sid.pszDefaultFile = path;
for (int i=0; i < SIZEOF(iconList); ++i) {
sid.pszDescription = iconList[i].szDescr;
sid.pszName = iconList[i].szName;
sid.iDefaultIndex = -iconList[i].defIconID;
Skin_AddIcon(&sid);
}
HookEvent(ME_SKIN2_ICONSCHANGED, ReloadIcons);
ReloadIcons(0, 0);
}
|