diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-11 04:06:41 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-11 04:06:41 +0000 |
commit | 5defa31f80b79a977dbdf1c9c95874106d8491ac (patch) | |
tree | 0c3fb9c7286982b7ef2101b2cfc94d86d73fec83 | |
parent | 03d3438ca1a604d12ad786743a987eacfcb18632 (diff) |
fix srmm icon click to only show menu when zap button is pressed
added missing files
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@274 4f64403b-2f21-0410-a795-97e2b3489a10
-rw-r--r-- | MySpace/icon1.ico | bin | 0 -> 1406 bytes | |||
-rw-r--r-- | MySpace/srmm_icon.cpp | 78 | ||||
-rw-r--r-- | MySpace/srmm_icon.h | 7 |
3 files changed, 85 insertions, 0 deletions
diff --git a/MySpace/icon1.ico b/MySpace/icon1.ico Binary files differnew file mode 100644 index 0000000..12de5a7 --- /dev/null +++ b/MySpace/icon1.ico diff --git a/MySpace/srmm_icon.cpp b/MySpace/srmm_icon.cpp new file mode 100644 index 0000000..23251e0 --- /dev/null +++ b/MySpace/srmm_icon.cpp @@ -0,0 +1,78 @@ +#include "common.h"
+#include "srmm_icon.h"
+#include "resource.h"
+#include "notifications.h"
+#include "server_con.h"
+
+#include <ctime>
+
+int WindowEvent(WPARAM wParam, LPARAM lParam) {
+ MessageWindowEventData *wd = (MessageWindowEventData *)lParam;
+ if(wd->uType != MSG_WINDOW_EVT_OPEN) return 0;
+
+ HANDLE hContact = wd->hContact, hTemp;
+ if(ServiceExists(MS_MC_GETMOSTONLINECONTACT) && (hTemp = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0)) != 0)
+ hContact = hTemp;
+
+ bool hide = false;
+ if(!CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)MODULE))
+ hide = true;
+
+ StatusIconData sid = {0};
+ sid.cbSize = sizeof(sid);
+ sid.szModule = MODULE;
+ sid.flags = (hide ? MBF_HIDDEN : 0);
+ CallService(MS_MSG_MODIFYICON, (WPARAM)wd->hContact, (LPARAM)&sid);
+
+ return 0;
+}
+
+int IconPressed(WPARAM wParam, LPARAM lParam) {
+ StatusIconClickData *cd = (StatusIconClickData *)lParam;
+ if(strcmp(cd->szModule, MODULE) != 0) return 0;
+
+ HANDLE hContact = (HANDLE)wParam, hTemp;
+ if(ServiceExists(MS_MC_GETMOSTONLINECONTACT) && (hTemp = (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM)hContact, 0)) != 0)
+ hContact = hTemp;
+
+ if(!CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)MODULE))
+ return 0;
+
+ HMENU hMenu = CreatePopupMenu();
+ for(int i = 0; zap_array[i]; i++) {
+ AppendMenuA(hMenu,MF_STRING,i+1, Translate(zap_array[i]));
+ }
+ BOOL cmd = TrackPopupMenu(hMenu, TPM_NONOTIFY | TPM_RETURNCMD, cd->clickLocation.x, cd->clickLocation.y, 0, (HWND)CallService(MS_CLUI_GETHWND, 0, 0), 0);
+ DestroyMenu(hMenu);
+
+ if(cmd) {
+ int zap_num = cmd - 1;
+ NotifyZapSend(hContact, zap_num);
+ }
+ return 0;
+}
+
+HICON hZapIcon = 0;
+HANDLE hEventIconPressed = 0, hEventWindow = 0;
+void InitSRMMIcon() {
+ // add icon to srmm status icons
+ if(ServiceExists(MS_MSG_ADDICON)) {
+ hZapIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ZAPS));
+ StatusIconData sid = {0};
+ sid.cbSize = sizeof(sid);
+ sid.szModule = MODULE;
+ sid.hIcon = hZapIcon;
+ sid.szTooltip = Translate("Send ZAP");
+ CallService(MS_MSG_ADDICON, 0, (LPARAM)&sid);
+
+ // hook the window events so that we can can change the status of the icon
+ hEventWindow = HookEvent(ME_MSG_WINDOWEVENT, WindowEvent);
+ hEventIconPressed = HookEvent(ME_MSG_ICONPRESSED, IconPressed);
+ }
+}
+
+void DeinitSRMMIcon() {
+ if(hZapIcon) DestroyIcon(hZapIcon);
+ if(hEventIconPressed) UnhookEvent(hEventIconPressed);
+ if(hEventWindow) UnhookEvent(hEventWindow);
+}
diff --git a/MySpace/srmm_icon.h b/MySpace/srmm_icon.h new file mode 100644 index 0000000..29114d7 --- /dev/null +++ b/MySpace/srmm_icon.h @@ -0,0 +1,7 @@ +#ifndef _SRMM_ICON_INC
+#define _SRMM_ICON_INC
+
+void InitSRMMIcon();
+void DeinitSRMMIcon();
+
+#endif
|