From 9d31056c8b2c89a132db4bc3c6769d283a4d7d87 Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 10 Jul 2007 06:06:02 +0000 Subject: fix sound registration use new YAPP popup class API git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@264 4f64403b-2f21-0410-a795-97e2b3489a10 --- MySpace/notifications.cpp | 289 ++++++++++++++++++++++++---------------------- 1 file changed, 149 insertions(+), 140 deletions(-) (limited to 'MySpace/notifications.cpp') diff --git a/MySpace/notifications.cpp b/MySpace/notifications.cpp index d0e46c0..25b732b 100644 --- a/MySpace/notifications.cpp +++ b/MySpace/notifications.cpp @@ -2,32 +2,59 @@ #include "notifications.h" #include "resource.h" -HWND hWndMailPopup = 0, hWndBlogPopup = 0; +#include -LRESULT CALLBACK MailPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) +#define URL_MAIL "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox" +#define URL_BLOG "http://blog.myspace.com/index.cfm?fuseaction=blog" +#define URL_PROFILE "http://comment.myspace.com/index.cfm?fuseaction=user.viewComments&friendID=%d" +#define URL_FRIEND "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests" + +bool bWndMailPopup = false, bWndBlogPopup = false, bWndProfilePopup = false, bWndFriendPopup = false; +typedef struct { + char *url; + bool *bWnd; +} PopupData; + +char popup_class_name[128]; + +LRESULT CALLBACK NotifyPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case UM_INITPOPUP: - hWndMailPopup = hWnd; + { + PopupData *pd = (PopupData *)PUGetPluginData(hWnd); + if(pd) *pd->bWnd = true; + } break; case WM_COMMAND: - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)"http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox"); + { + PopupData *pd = (PopupData *)PUGetPluginData(hWnd); + if(pd) { + CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)pd->url); //"http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox" + *pd->bWnd = false; + } + } - hWndMailPopup = 0; PUDeletePopUp( hWnd ); return TRUE; case WM_CONTEXTMENU: - - hWndMailPopup = 0; + { + PopupData *pd = (PopupData *)PUGetPluginData(hWnd); + if(pd) *pd->bWnd = false; + } PUDeletePopUp( hWnd ); return TRUE; + case UM_FREEPLUGINDATA: { - HICON hIcon = (HICON)PUGetPluginData(hWnd); - DestroyIcon(hIcon); + PopupData *pd = (PopupData *)PUGetPluginData(hWnd); + if(pd) { + free(pd->url); + delete pd; + } } return TRUE; } @@ -38,7 +65,7 @@ LRESULT CALLBACK MailPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LP void NotifyMail() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; - if(hWndMailPopup) return; + if(bWndMailPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; @@ -48,14 +75,26 @@ void NotifyMail() { MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif - _tcsncpy(ppd.lptzContactName, wproto, 256); - _tcscpy(ppd.lptzText, TranslateT("You have unread mail")); - ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); - ppd.PluginWindowProc = ( WNDPROC )MailPopupWindowProc; - ppd.PluginData = ppd.lchIcon; - ppd.iSeconds = -1; - - PUAddPopUpT(&ppd); + PopupData *pd = new PopupData; + pd->url = strdup(URL_MAIL); + pd->bWnd = &bWndMailPopup; + + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { + POPUPDATACLASS d = {sizeof(d), popup_class_name}; + d.pwszTitle = (wchar_t *)wproto; + d.pwszText = (wchar_t *)TranslateT("You have unread mail"); + d.PluginData = (void *)pd; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + _tcsncpy(ppd.lptzContactName, wproto, 256); + _tcscpy(ppd.lptzText, TranslateT("You have unread mail")); + ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); + ppd.PluginWindowProc = ( WNDPROC )NotifyPopupWindowProc; + ppd.PluginData = (void *)pd; + ppd.iSeconds = -1; + + PUAddPopUpT(&ppd); + } char temp[512]; mir_snprintf(temp, 512, "%s/Mail", MODULE); @@ -63,39 +102,10 @@ void NotifyMail() { } -LRESULT CALLBACK BlogCommentPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - switch( message ) { - case UM_INITPOPUP: - hWndBlogPopup = hWnd; - break; - case WM_COMMAND: - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)"http://blog.myspace.com/index.cfm?fuseaction=blog"); - - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case WM_CONTEXTMENU: - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case UM_FREEPLUGINDATA: - { - HICON hIcon = (HICON)PUGetPluginData(hWnd); - DestroyIcon(hIcon); - } - return TRUE; - } - - return DefWindowProc(hWnd, message, wParam, lParam); -} - void NotifyBlogComment() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; - if(hWndBlogPopup) return; + if(bWndBlogPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; @@ -105,57 +115,36 @@ void NotifyBlogComment() { MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif - _tcsncpy(ppd.lptzContactName, wproto, 256); - _tcscpy(ppd.lptzText, TranslateT("You have unread blog comments")); - ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); - ppd.PluginWindowProc = ( WNDPROC )BlogCommentPopupWindowProc; - ppd.PluginData = ppd.lchIcon; - ppd.iSeconds = -1; - - PUAddPopUpT(&ppd); + PopupData *pd = new PopupData; + pd->url = strdup(URL_BLOG); + pd->bWnd = &bWndBlogPopup; + + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { + POPUPDATACLASS d = {sizeof(d), popup_class_name}; + d.pwszTitle = (wchar_t *)wproto; + d.pwszText = (wchar_t *)TranslateT("You have unread blog comments"); + d.PluginData = (void *)pd; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + _tcsncpy(ppd.lptzContactName, wproto, 256); + _tcscpy(ppd.lptzText, TranslateT("You have unread blog comments")); + ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); + ppd.PluginWindowProc = ( WNDPROC )NotifyPopupWindowProc; + ppd.PluginData = (void *)pd; + ppd.iSeconds = -1; + + PUAddPopUpT(&ppd); + } char temp[512]; mir_snprintf(temp, 512, "%s/BlogComment", MODULE); SkinPlaySound(temp); } -LRESULT CALLBACK ProfileCommentPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - switch( message ) { - case UM_INITPOPUP: - hWndBlogPopup = hWnd; - break; - case WM_COMMAND: - { - char url[1024]; - mir_snprintf(url, 1024, "http://comment.myspace.com/index.cfm?fuseaction=user.viewComments&friendID=%d", DBGetContactSettingDword(0, MODULE, "UID", 0)); - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)url); - } - - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case WM_CONTEXTMENU: - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case UM_FREEPLUGINDATA: - { - HICON hIcon = (HICON)PUGetPluginData(hWnd); - DestroyIcon(hIcon); - } - return TRUE; - } - - return DefWindowProc(hWnd, message, wParam, lParam); -} - void NotifyProfileComment() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; - if(hWndBlogPopup) return; + if(bWndProfilePopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; @@ -165,53 +154,37 @@ void NotifyProfileComment() { MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif - _tcsncpy(ppd.lptzContactName, wproto, 256); - _tcscpy(ppd.lptzText, TranslateT("You have unread profile comments")); - ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); - ppd.PluginWindowProc = ( WNDPROC )ProfileCommentPopupWindowProc; - ppd.PluginData = ppd.lchIcon; - ppd.iSeconds = -1; - - PUAddPopUpT(&ppd); + PopupData *pd = new PopupData; + char url[1024]; + mir_snprintf(url, 1024, URL_PROFILE, DBGetContactSettingDword(0, MODULE, "UID", 0)); + pd->url = strdup(url); + pd->bWnd = &bWndProfilePopup; + + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { + POPUPDATACLASS d = {sizeof(d), popup_class_name}; + d.pwszTitle = (wchar_t *)wproto; + d.pwszText = (wchar_t *)TranslateT("You have unread profile comments"); + d.PluginData = (void *)pd; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + _tcsncpy(ppd.lptzContactName, wproto, 256); + _tcscpy(ppd.lptzText, TranslateT("You have unread profile comments")); + ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); + ppd.PluginWindowProc = ( WNDPROC )NotifyPopupWindowProc; + ppd.PluginData = (void *)pd; + ppd.iSeconds = -1; + + PUAddPopUpT(&ppd); + } char temp[512]; mir_snprintf(temp, 512, "%s/ProfileComment", MODULE); SkinPlaySound(temp); } -LRESULT CALLBACK FriendRequestPopupWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) -{ - switch( message ) { - case UM_INITPOPUP: - hWndBlogPopup = hWnd; - break; - case WM_COMMAND: - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)"http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests"); - - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case WM_CONTEXTMENU: - hWndBlogPopup = 0; - PUDeletePopUp( hWnd ); - return TRUE; - - case UM_FREEPLUGINDATA: - { - HICON hIcon = (HICON)PUGetPluginData(hWnd); - DestroyIcon(hIcon); - } - return TRUE; - } - - return DefWindowProc(hWnd, message, wParam, lParam); -} - void NotifyFriendRequest() { - if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; - if(hWndBlogPopup) return; + if(bWndFriendPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; @@ -221,26 +194,39 @@ void NotifyFriendRequest() { MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif - _tcsncpy(ppd.lptzContactName, wproto, 256); - _tcscpy(ppd.lptzText, TranslateT("You have new friend requests")); - ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); - ppd.PluginWindowProc = ( WNDPROC )FriendRequestPopupWindowProc; - ppd.PluginData = ppd.lchIcon; - ppd.iSeconds = -1; - - PUAddPopUpT(&ppd); + PopupData *pd = new PopupData; + pd->url = strdup(URL_FRIEND); + pd->bWnd = &bWndFriendPopup; + + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { + POPUPDATACLASS d = {sizeof(d), popup_class_name}; + d.pwszTitle = (wchar_t *)wproto; + d.pwszText = (wchar_t *)TranslateT("You have new friend requests"); + d.PluginData = (void *)pd; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + _tcsncpy(ppd.lptzContactName, wproto, 256); + _tcscpy(ppd.lptzText, TranslateT("You have new friend requests")); + ppd.lchIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); + ppd.PluginWindowProc = ( WNDPROC )NotifyPopupWindowProc; + ppd.PluginData = (void *)pd; + ppd.iSeconds = -1; + + PUAddPopUpT(&ppd); + } char temp[512]; mir_snprintf(temp, 512, "%s/FriendRequest", MODULE); SkinPlaySound(temp); } +HICON hProtoIcon; void InitNotifications() { SKINSOUNDDESCEX sd = {0}; sd.cbSize = sizeof(sd); - char temp[512]; - mir_snprintf(temp, 512, "%s Notifications", MODULE); - sd.pszSection = temp; + char temp_sec[512], temp[512]; + mir_snprintf(temp_sec, 512, "%s Notifications", MODULE); + sd.pszSection = temp_sec; mir_snprintf(temp, 512, "%s/Mail", MODULE); sd.pszName = temp; @@ -261,8 +247,31 @@ void InitNotifications() { sd.pszName = temp; sd.pszDescription = "New friend request"; CallService(MS_SKIN_ADDNEWSOUND, 0, (LPARAM)&sd); + + hProtoIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, 0); + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { + TCHAR tmod[128]; +#ifdef _UNICODE + MultiByteToWideChar(code_page, 0, MODULE, -1, tmod, 128); +#else + strncpy(tmod, MODULE, 128); +#endif + + mir_snprintf(popup_class_name, 128, "%s/Notify", MODULE); + + POPUPCLASS test = {0}; + test.cbSize = sizeof(test); + test.flags = PCF_TCHAR; + test.hIcon = hProtoIcon; + test.iSeconds = -1; + test.ptszDescription = tmod; + test.pszName = popup_class_name; + test.PluginWindowProc = NotifyPopupWindowProc; + CallService(MS_POPUP_REGISTERCLASS, 0, (WPARAM)&test); + } } void DeinitNotifications() { + DestroyIcon(hProtoIcon); } -- cgit v1.2.3