From def15f7b4ab039525ea2a9028c18b497128f8c0d Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 10 Jul 2007 06:07:39 +0000 Subject: use new YAPP popup class API git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@267 4f64403b-2f21-0410-a795-97e2b3489a10 --- message_notify/popups.cpp | 102 +++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 43 deletions(-) (limited to 'message_notify/popups.cpp') diff --git a/message_notify/popups.cpp b/message_notify/popups.cpp index 83a40b9..8a652ba 100644 --- a/message_notify/popups.cpp +++ b/message_notify/popups.cpp @@ -5,7 +5,7 @@ #include HICON hPopupIcon; -bool unicode_enabled; +bool unicode_enabled, classes_enabled; void __stdcall sttOpenSRMMWindowProc( ULONG dwParam ) { @@ -88,7 +88,7 @@ LRESULT CALLBACK NullWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM } void __stdcall sttPopupProc( ULONG param ){ -//DWORD sttPopupProc(LPVOID param) { +//unsigned __stdcall sttPopupProc(void *param) { POPUPDATAEX* ppd = ( POPUPDATAEX* )param; if ( ServiceExists(MS_POPUP_ADDPOPUPEX) ) @@ -103,7 +103,7 @@ void __stdcall sttPopupProc( ULONG param ){ } void __stdcall sttPopupProcW( ULONG param ) { -//DWORD sttPopupProcW(LPVOID param) { +//unsigned __stdcall sttPopupProcW(void *param) { POPUPDATAW* ppd = ( POPUPDATAW* )param; if ( ServiceExists(MS_POPUP_ADDPOPUPW) ) @@ -135,33 +135,35 @@ void ShowPopup( HANDLE hContact, const char* line1, const char* line2, int flags return; } - POPUPDATAEX* ppd = ( POPUPDATAEX* )malloc( sizeof( POPUPDATAEX )); - memset((void *)ppd, 0, sizeof(POPUPDATAEX)); - - ppd->lchContact = hContact; + if(classes_enabled) { + POPUPDATACLASS d = {sizeof(d), "messagenotify"}; + d.pszTitle = (char *)line1; + d.pszText = (char *)line2; + d.PluginData = (void *)hContact; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + POPUPDATAEX* ppd = ( POPUPDATAEX* )malloc( sizeof( POPUPDATAEX )); + memset((void *)ppd, 0, sizeof(POPUPDATAEX)); - HANDLE hMeta = 0; - if((hMeta = (HANDLE)CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0)) != 0) - ppd->lchContact = hMeta; + ppd->lchContact = hContact; - ppd->lchIcon = hPopupIcon; + HANDLE hMeta = 0; + if((hMeta = (HANDLE)CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0)) != 0) + ppd->lchContact = hMeta; - if(line1) strncpy( ppd->lpzContactName, line1, MAX_CONTACTNAME ); - if(line2) strncpy( ppd->lpzText, line2, MAX_SECONDLINE ); + ppd->lchIcon = hPopupIcon; - if(options.set_colours) { - ppd->colorBack = options.bkCol; - ppd->colorText = options.textCol; - } - ppd->iSeconds = options.timeout; + if(line1) strncpy( ppd->lpzContactName, line1, MAX_CONTACTNAME ); + if(line2) strncpy( ppd->lpzText, line2, MAX_SECONDLINE ); - ppd->PluginWindowProc = ( WNDPROC )NullWindowProc; - ppd->PluginData = NULL; + ppd->PluginWindowProc = ( WNDPROC )NullWindowProc; + ppd->PluginData = NULL; - ppd->PluginData = (void *)hContact; + ppd->PluginData = (void *)hContact; - QueueUserAPC( sttPopupProc , mainThread, ( ULONG )ppd ); - //CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sttPopupProc, (LPVOID)ppd, 0, 0)); + QueueUserAPC( sttPopupProc , mainThread, ( ULONG )ppd ); + //CloseHandle((void *)_beginthreadex(0, 0, sttPopupProc, (LPVOID)ppd, 0, 0)); + } } void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, int flags ) @@ -185,33 +187,35 @@ void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, in return; } - POPUPDATAW* ppd = ( POPUPDATAW* )malloc( sizeof( POPUPDATAW )); - memset((void *)ppd, 0, sizeof(POPUPDATAW)); - - ppd->lchContact = hContact; + if(classes_enabled) { + POPUPDATACLASS d = {sizeof(d), "messagenotify"}; + d.pwszTitle = (wchar_t *)line1; + d.pwszText = (wchar_t *)line2; + d.PluginData = (void *)hContact; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&d); + } else { + POPUPDATAW* ppd = ( POPUPDATAW* )malloc( sizeof( POPUPDATAW )); + memset((void *)ppd, 0, sizeof(POPUPDATAW)); - HANDLE hMeta = 0; - if((hMeta = (HANDLE)CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0)) != 0) - ppd->lchContact = hMeta; + ppd->lchContact = hContact; - ppd->lchIcon = hPopupIcon; + HANDLE hMeta = 0; + if((hMeta = (HANDLE)CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0)) != 0) + ppd->lchContact = hMeta; - if(line1) _tcsncpy( ppd->lpwzContactName, line1, MAX_CONTACTNAME ); - if(line2) _tcsncpy( ppd->lpwzText, line2, MAX_SECONDLINE ); + ppd->lchIcon = hPopupIcon; - if(options.set_colours) { - ppd->colorBack = options.bkCol; - ppd->colorText = options.textCol; - } - ppd->iSeconds = options.timeout; + if(line1) _tcsncpy( ppd->lpwzContactName, line1, MAX_CONTACTNAME ); + if(line2) _tcsncpy( ppd->lpwzText, line2, MAX_SECONDLINE ); - ppd->PluginWindowProc = ( WNDPROC )NullWindowProc; - ppd->PluginData = NULL; + ppd->PluginWindowProc = ( WNDPROC )NullWindowProc; + ppd->PluginData = NULL; - ppd->PluginData = (void *)hContact; + ppd->PluginData = (void *)hContact; - QueueUserAPC( sttPopupProcW , mainThread, ( ULONG )ppd ); - //CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE)sttPopupProcW, (LPVOID)ppd, 0, 0)); + QueueUserAPC( sttPopupProcW , mainThread, ( ULONG )ppd ); + //CloseHandle((void *)_beginthreadex(0, 0, sttPopupProcW, (LPVOID)ppd, 0, 0)); + } } void ShowWarning(char *msg) { @@ -245,6 +249,18 @@ bool IsUnicodePopupsEnabled() { void InitUtils() { hPopupIcon = LoadSkinnedIcon(SKINICON_EVENT_MESSAGE); unicode_enabled = ServiceExists(MS_POPUP_ADDPOPUPW) ? true : false; + classes_enabled = ServiceExists(MS_POPUP_ADDPOPUPCLASS) ? true : false; + if(classes_enabled) { + POPUPCLASS test = {0}; + test.cbSize = sizeof(test); + test.flags = PCF_TCHAR; + test.hIcon = hPopupIcon; + test.iSeconds = -1; + test.ptszDescription = TranslateT("Message Notify"); + test.pszName = "messagenotify"; + test.PluginWindowProc = NullWindowProc; + CallService(MS_POPUP_REGISTERCLASS, 0, (WPARAM)&test); + } } void DeinitUtils() { -- cgit v1.2.3