diff options
Diffstat (limited to 'metacontacts')
-rw-r--r-- | metacontacts/addto.c | 3 | ||||
-rw-r--r-- | metacontacts/edit.c | 4 | ||||
-rw-r--r-- | metacontacts/icons.c | 179 | ||||
-rw-r--r-- | metacontacts/meta_menu.c | 3 | ||||
-rw-r--r-- | metacontacts/meta_services.c | 29 | ||||
-rw-r--r-- | metacontacts/metacontacts.h | 10 | ||||
-rw-r--r-- | metacontacts/version.h | 2 |
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
|