summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-01-29 22:51:41 +0000
committersje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-01-29 22:51:41 +0000
commit53448c838a6f71da0726d0bca14bec5e1c2b0d24 (patch)
tree18423d028e4d36ab77cc5bed8d89a7ff7c2a4219
parent783ba1f8e28e5ce0bb50e0b90a6e390095c2053a (diff)
applied and modified GDI resource patch by Borkra
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@89 4f64403b-2f21-0410-a795-97e2b3489a10
-rw-r--r--metacontacts/addto.c3
-rw-r--r--metacontacts/edit.c4
-rw-r--r--metacontacts/icons.c179
-rw-r--r--metacontacts/meta_menu.c3
-rw-r--r--metacontacts/meta_services.c29
-rw-r--r--metacontacts/metacontacts.h10
-rw-r--r--metacontacts/version.h2
7 files changed, 125 insertions, 105 deletions
diff --git a/metacontacts/addto.c b/metacontacts/addto.c
index 751a6c2..ef40eaa 100644
--- a/metacontacts/addto.c
+++ b/metacontacts/addto.c
@@ -189,7 +189,7 @@ BOOL CALLBACK Meta_SelectDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
SetWindowLong(hwndDlg, GWL_USERDATA, lParam); // user data is contact handle
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIconAdd);
+ SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_ADD));
//SendMessage(GetDlgItem(hwndDlg,IDC_METALIST),LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_FULLROWSELECT);
// Initialize the graphical part
@@ -291,6 +291,7 @@ BOOL CALLBACK Meta_SelectDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
case WM_DESTROY:
{ // Free all allocated memory and return the focus to the CList
HWND clist = GetParent(hwndDlg);
+ ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
EndDialog(hwndDlg,TRUE);
SetFocus(clist);
return TRUE;
diff --git a/metacontacts/edit.c b/metacontacts/edit.c
index e43580b..37cd8a1 100644
--- a/metacontacts/edit.c
+++ b/metacontacts/edit.c
@@ -292,7 +292,7 @@ BOOL CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
TranslateDialogDefault( hwndDlg );
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIconEdit);
+ SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_EDIT));
// Disable the 'Apply' button.
EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),FALSE);
@@ -573,7 +573,9 @@ BOOL CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
case WM_CLOSE:
DestroyWindow(hwndDlg);
return TRUE;
+
case WM_DESTROY:
+ ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
EndDialog(hwndDlg, IDCANCEL);
break;
}
diff --git a/metacontacts/icons.c b/metacontacts/icons.c
index e94eff1..20d0f9b 100644
--- a/metacontacts/icons.c
+++ b/metacontacts/icons.c
@@ -1,92 +1,109 @@
#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");
+HANDLE hIcoLibIconsChanged = NULL;
+
+
+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)
+{
+ HICON hIcon;
+
+ if (hIcoLibIconsChanged)
+ hIcon = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)iconList[(int)i].szName);
+ else
+ hIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(iconList[(int)i].defIconID),
+ IMAGE_ICON, 0, 0, 0);
+
+ return hIcon;
+}
+
+
+void ReleaseIconEx(HICON hIcon)
+{
+ if (hIcoLibIconsChanged)
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hIcon, 0);
+ else
+ DestroyIcon(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);
- {
- // 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 InitIcons(void)
+{
+ SKINICONDESC sid = {0};
+ char path[MAX_PATH];
+ int i;
+
+ sid.cbSize = sizeof(SKINICONDESC);
+ sid.pszSection = META_PROTO;
+ sid.pszDefaultFile = path;
+ GetModuleFileName(hInstance, path, sizeof(path));
+
+ for (i = 0; i < sizeof(iconList) / sizeof(IconStruct); ++i)
+ {
+ sid.pszDescription = Translate(iconList[i].szDescr);
+ sid.pszName = iconList[i].szName;
+ sid.iDefaultIndex = -iconList[i].defIconID;
+ CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
}
+ hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, ReloadIcons);
+
+ ReloadIcons(0, 0);
}
-void DeinitIcons() {
- if(hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged);
- else {
- DestroyIcon(hIconToggleOff);
- DestroyIcon(hIconToggleOn);
- DestroyIcon(hIconConvert);
- DestroyIcon(hIconAdd);
- DestroyIcon(hIconEdit);
- DestroyIcon(hIconDefault);
- DestroyIcon(hIconRemove);
- }
+void DeinitIcons(void)
+{
+ if (hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged);
}
diff --git a/metacontacts/meta_menu.c b/metacontacts/meta_menu.c
index 8700b03..790df9f 100644
--- a/metacontacts/meta_menu.c
+++ b/metacontacts/meta_menu.c
@@ -481,6 +481,8 @@ int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
free(proto);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
+ DestroyIcon(mi.hIcon);
+ //CallService(MS_SKIN2_RELEASEICON, (WPARAM)mi.hIcon, 0);
} else {
mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
@@ -534,3 +536,4 @@ int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
return 0;
}
+
diff --git a/metacontacts/meta_services.c b/metacontacts/meta_services.c
index d051937..db365de 100644
--- a/metacontacts/meta_services.c
+++ b/metacontacts/meta_services.c
@@ -102,6 +102,10 @@ int Meta_GetCaps(WPARAM wParam,LPARAM lParam)
//ret = PF4_FORCEAUTH;
ret = PF4_SUPPORTTYPING | PF4_AVATARS;
break;
+ case PFLAGNUM_5:
+ ret = PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND
+ | PF2_HEAVYDND | PF2_FREECHAT | PF2_OUTTOLUNCH | PF2_ONTHEPHONE;
+ break;
case PFLAG_UNIQUEIDTEXT:
ret = (int) Translate("Meta ID");
break;
@@ -441,6 +445,7 @@ int MetaFilter_RecvMessage(WPARAM wParam,LPARAM lParam)
_snprintf(toolTip, sizeof(toolTip), Translate("Message from %s"), contactName);
cle.pszTooltip = toolTip;
CallService(MS_CLIST_ADDEVENT, 0, (LPARAM) & cle);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)cle.hIcon, 0);
}
if(options.metahistory) {
@@ -1204,7 +1209,7 @@ int Meta_ClistMessageEventClicked(WPARAM wParam, LPARAM lParam) {
*/
int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
{
- CLISTMENUITEM menu;
+ CLISTMENUITEM menu = {0};
char buffer[512], buffer2[512], buffer3[512];
int i;
@@ -1260,14 +1265,9 @@ int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
// (BUT, the me_clist_extra_list_rebuild is send FIRST...so, we ignore this one...)
hHooks[15] = 0;//(HANDLE)HookEvent(ME_SKIN_ICONSCHANGED, Meta_LoadIcons);
- InitIcons();
-
- ZeroMemory(&menu,sizeof(menu));
menu.cbSize=sizeof(menu);
menu.flags = CMIM_ALL;
- menu.hIcon=hIconToggleOff;
-
// main menu item
menu.pszName = (char *)Translate("Toggle MetaContacts Off");
menu.pszService="MetaContacts/OnOff";
@@ -1277,28 +1277,23 @@ int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
// contact menu items
menu.position = -200010;
menu.pszName = (char *)Translate("Convert to MetaContact");
- menu.hIcon=hIconConvert;
menu.pszService="MetaContacts/Convert";
hMenuConvert = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu);
menu.position = -200009;
menu.pszName = (char *)Translate("Add to existing MetaContact...");
- menu.hIcon=hIconAdd;
menu.pszService="MetaContacts/AddTo";
hMenuAdd = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu);
menu.position = -200010;
menu.pszName = (char *)Translate("Edit MetaContact...");
- menu.hIcon=hIconEdit;
menu.pszService="MetaContacts/Edit";
hMenuEdit = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu);
menu.position = -200009;
menu.pszName = (char *)Translate("Set as MetaContact default");
- menu.hIcon=hIconDefault;
menu.pszService="MetaContacts/Default";
hMenuDefault = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu);
menu.position = -200008;
menu.pszName = (char *)Translate("Delete MetaContact");
- menu.hIcon=hIconRemove;
menu.pszService="MetaContacts/Delete";
hMenuDelete = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu);
//menu.pszName = (char *)Translate("Force Default");
@@ -1341,16 +1336,15 @@ int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
Meta_HideLinkedContacts();
+ InitIcons();
+
if(!Meta_IsEnabled())
{
-
// modify main menu item
- menu.flags = CMIM_NAME | CMIM_ICON;
- menu.hIcon=hIconToggleOn;
+ menu.flags = CMIM_NAME;
menu.pszName = (char *)Translate("Toggle MetaContacts On");
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu);
-
Meta_HideMetaContacts(TRUE);
} else {
Meta_SuppressStatus(options.suppress_status);
@@ -1829,17 +1823,18 @@ int Meta_OnOff(WPARAM wParam, LPARAM lParam) {
DBWriteContactSettingByte(0, META_PROTO, "Enabled", 0);
// modify main menu item
menu.flags = CMIM_NAME | CMIM_ICON;
- menu.hIcon=hIconToggleOn;
+ menu.hIcon = LoadIconEx(I_MENU);
menu.pszName = (char *)Translate("Toggle MetaContacts On");
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu);
} else {
DBWriteContactSettingByte(0, META_PROTO, "Enabled", 1);
// modify main menu item
menu.flags = CMIM_NAME | CMIM_ICON;
- menu.hIcon=hIconToggleOff;
+ menu.hIcon = LoadIconEx(I_MENUOFF);
menu.pszName = (char *)Translate("Toggle MetaContacts Off");
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu);
}
+ ReleaseIconEx(menu.hIcon);
return 0;
}
diff --git a/metacontacts/metacontacts.h b/metacontacts/metacontacts.h
index f424eff..0e5bfd9 100644
--- a/metacontacts/metacontacts.h
+++ b/metacontacts/metacontacts.h
@@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "resource.h"
#include "m_metacontacts.h"
-#include "IcoLib.h"
+#include "m_IcoLib.h"
#include "../../include/newpluginapi.h"
#include "../../include/m_clist.h"
@@ -234,10 +234,12 @@ int MyDBWriteContactSetting(HANDLE hContact, const char *szModule, const char *s
int MyDBGetContactSetting(HANDLE hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv);
// IcoLib support
-extern HICON hIconToggleOn, hIconToggleOff, hIconConvert, hIconAdd, hIconEdit, hIconDefault, hIconRemove;
+void InitIcons(void);
+void DeinitIcons(void);
-void InitIcons();
-void DeinitIcons();
+typedef enum {I_MENUOFF, I_MENU, I_CONVERT, I_ADD, I_EDIT, I_SETDEFAULT, I_REMOVE} IconIndex;
+HICON LoadIconEx(IconIndex i);
+void ReleaseIconEx(HICON hIcon);
extern HANDLE hEventDefaultChanged, hEventForceSend, hEventUnforceSend, hSubcontactsChanged;
diff --git a/metacontacts/version.h b/metacontacts/version.h
index bc63713..431f85e 100644
--- a/metacontacts/version.h
+++ b/metacontacts/version.h
@@ -5,7 +5,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 12
#define __RELEASE_NUM 2
-#define __BUILD_NUM 4
+#define __BUILD_NUM 5
#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
#define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM