summaryrefslogtreecommitdiff
path: root/message_notify/popups.cpp
diff options
context:
space:
mode:
authorsje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-07-10 06:07:39 +0000
committersje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2007-07-10 06:07:39 +0000
commitdef15f7b4ab039525ea2a9028c18b497128f8c0d (patch)
tree4b0b31ade0c42e8181357bda0e40a7775c29d358 /message_notify/popups.cpp
parent27291d65ae67151975d557424883d58afa920d4e (diff)
use new YAPP popup class API
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@267 4f64403b-2f21-0410-a795-97e2b3489a10
Diffstat (limited to 'message_notify/popups.cpp')
-rw-r--r--message_notify/popups.cpp102
1 files changed, 59 insertions, 43 deletions
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 <tchar.h>
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() {