#include "common.h" #include "notifications.h" #include "resource.h" #include #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: { PopupData *pd = (PopupData *)PUGetPluginData(hWnd); if(pd) *pd->bWnd = true; } break; case WM_COMMAND: { 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; } } PUDeletePopUp( hWnd ); return TRUE; case WM_CONTEXTMENU: { PopupData *pd = (PopupData *)PUGetPluginData(hWnd); if(pd) *pd->bWnd = false; } PUDeletePopUp( hWnd ); return TRUE; case UM_FREEPLUGINDATA: { PopupData *pd = (PopupData *)PUGetPluginData(hWnd); if(pd) { free(pd->url); delete pd; } } return TRUE; } return DefWindowProc(hWnd, message, wParam, lParam); } void NotifyMail() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; if(bWndMailPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; #ifndef _UNICODE strncpy(wproto, MODULE, 256); #else MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif 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); SkinPlaySound(temp); } void NotifyBlogComment() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; if(bWndBlogPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; #ifndef _UNICODE strncpy(wproto, MODULE, 256); #else MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif 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); } void NotifyProfileComment() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; if(bWndProfilePopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; #ifndef _UNICODE strncpy(wproto, MODULE, 256); #else MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif 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); } void NotifyFriendRequest() { if (!ServiceExists( MS_POPUP_ADDPOPUPT)) return; if(bWndFriendPopup) return; POPUPDATAT ppd = {0}; TCHAR wproto[256]; #ifndef _UNICODE strncpy(wproto, MODULE, 256); #else MultiByteToWideChar(code_page, 0, MODULE, -1, wproto, 256); #endif 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_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; sd.pszDescription = "Mail"; CallService(MS_SKIN_ADDNEWSOUND, 0, (LPARAM)&sd); mir_snprintf(temp, 512, "%s/BlogComment", MODULE); sd.pszName = temp; sd.pszDescription = "New blog comment"; CallService(MS_SKIN_ADDNEWSOUND, 0, (LPARAM)&sd); mir_snprintf(temp, 512, "%s/ProfileComment", MODULE); sd.pszName = temp; sd.pszDescription = "New profile comment"; CallService(MS_SKIN_ADDNEWSOUND, 0, (LPARAM)&sd); mir_snprintf(temp, 512, "%s/FriendRequest", MODULE); 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); }