summaryrefslogtreecommitdiff
path: root/metacontacts/icons.c
blob: e94eff14f381f3d46baacba1f808974592bc5658 (plain)
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
#include "metacontacts.h"

HICON hIconToggleOn, hIconToggleOff, hIconConvert, hIconAdd, hIconEdit, hIconDefault, hIconRemove;
HANDLE hIcoLibIconsChanged = 0;

int ReloadIcons(WPARAM wParam, LPARAM lParam) {
	hIconToggleOff = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_off");
	hIconToggleOn = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_on");
	hIconConvert = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_convert");
	hIconAdd = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_add");
	hIconEdit = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_edit");
	hIconDefault = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_default");
	hIconRemove = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_remove");

	{
		// fix menu icons
		CLISTMENUITEM menu;
		ZeroMemory(&menu,sizeof(menu));
		menu.cbSize=sizeof(menu);
		menu.flags = CMIM_ICON;

		if(!Meta_IsEnabled()) menu.hIcon=hIconToggleOn;
		else menu.hIcon=hIconToggleOff;

		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu);

		menu.hIcon = hIconConvert;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&menu);
		menu.hIcon = hIconAdd;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&menu);
		menu.hIcon = hIconEdit;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&menu);
		menu.hIcon = hIconDefault;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&menu);
		menu.hIcon = hIconRemove;
		CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&menu);
	}
	return 0;
}

void InitIcons() {
	if(ServiceExists(MS_SKIN2_ADDICON)) {
		SKINICONDESC2 sid = {0};

		sid.cbSize = sizeof(SKINICONDESC2);
		sid.pszSection = "MetaContacts";

#define AddIcon(x,y,z)																				\
		sid.pszDescription = Translate(x);															\
		sid.pszName = y;																			\
		sid.pszDefaultFile = "MetaContacts.dll";													\
		sid.hDefaultIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(z), IMAGE_ICON, 0, 0, 0);	\
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);												\
		sid.iDefaultIndex++;																		

		AddIcon("Toggle Off", "mc_off", IDI_MCMENUOFF);
		AddIcon("Toggle On", "mc_on", IDI_MCMENU);
		AddIcon("Convert to MetaContact", "mc_convert", IDI_MCCONVERT);
		AddIcon("Add to Existing", "mc_add", IDI_MCADD);
		AddIcon("Edit", "mc_edit", IDI_MCEDIT);
		AddIcon("Set to Default", "mc_default", IDI_MCSETDEFAULT);
		AddIcon("Remove", "mc_remove", IDI_MCREMOVE);

#undef	AddIcon

		ReloadIcons(0, 0);

		hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, ReloadIcons);
	} else {
		hIconToggleOff = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCMENUOFF), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconToggleOn = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCMENU), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconConvert = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCCONVERT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconAdd = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCADD), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconEdit = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCEDIT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconDefault = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCSETDEFAULT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
		hIconRemove = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCREMOVE), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
	}

}

void DeinitIcons() {
	if(hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged);
	else {
		DestroyIcon(hIconToggleOff);
		DestroyIcon(hIconToggleOn);
		DestroyIcon(hIconConvert);
		DestroyIcon(hIconAdd);
		DestroyIcon(hIconEdit);
		DestroyIcon(hIconDefault);
		DestroyIcon(hIconRemove);
	}
}