summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-07-11 04:06:41 +0000
committersje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-07-11 04:06:41 +0000
commit5defa31f80b79a977dbdf1c9c95874106d8491ac (patch)
tree0c3fb9c7286982b7ef2101b2cfc94d86d73fec83
parent03d3438ca1a604d12ad786743a987eacfcb18632 (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.icobin0 -> 1406 bytes
-rw-r--r--MySpace/srmm_icon.cpp78
-rw-r--r--MySpace/srmm_icon.h7
3 files changed, 85 insertions, 0 deletions
diff --git a/MySpace/icon1.ico b/MySpace/icon1.ico
new file mode 100644
index 0000000..12de5a7
--- /dev/null
+++ b/MySpace/icon1.ico
Binary files differ
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