From 4e1b05db0379ee0bb6bdd146e575b6bdd5e42cf5 Mon Sep 17 00:00:00 2001 From: sje Date: Sat, 11 Nov 2006 13:26:01 +0000 Subject: added option to enable/disable message text in popup, made options page a little bigger git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@40 4f64403b-2f21-0410-a795-97e2b3489a10 --- message_notify/messagenotify.cpp | 26 +++++++++++++++--------- message_notify/options.cpp | 5 +++++ message_notify/options.h | 1 + message_notify/popups.cpp | 26 ++++-------------------- message_notify/resource.h | 2 ++ message_notify/resource.rc | 43 ++++++++++++++++++++-------------------- 6 files changed, 51 insertions(+), 52 deletions(-) (limited to 'message_notify') diff --git a/message_notify/messagenotify.cpp b/message_notify/messagenotify.cpp index 69595b2..ccf1b47 100644 --- a/message_notify/messagenotify.cpp +++ b/message_notify/messagenotify.cpp @@ -26,7 +26,7 @@ DWORD focusTimerId = 0; PLUGININFO pluginInfo={ sizeof(PLUGININFO), "Message Notify", - PLUGIN_MAKE_VERSION(0,1,1,1), + PLUGIN_MAKE_VERSION(0,1,2,0), "Show a popup when a message is received", "Scott Ellis", "mail@scottellis.com.au", @@ -195,15 +195,20 @@ unsigned int __stdcall sttCheckWindowProc( VOID *dwParam ) { MultiByteToWideChar(code_page, 0, (char *) cd->blob, -1, msg, size); ShowPopupW(cd->hContact, swzContactDisplayName, msg); free(msg); + } else { // no message + ShowPopupW(cd->hContact, swzContactDisplayName, 0); } if(!unicode_system) free(swzContactDisplayName); } else { char *szCDN = (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)cd->hContact, 0); if(szCDN && szCDN[0]) { - char msg[MAX_SECONDLINE]; - strncpy(msg, (char *)cd->blob, MAX_SECONDLINE - 1); - msg[MAX_SECONDLINE - 1] = 0; - ShowPopup(cd->hContact, szCDN, (char *)msg); + if(cd->blobsize) { + char msg[MAX_SECONDLINE]; + strncpy(msg, (char *)cd->blob, MAX_SECONDLINE - 1); + msg[MAX_SECONDLINE - 1] = 0; + ShowPopup(cd->hContact, szCDN, (char *)msg); + } else + ShowPopup(cd->hContact, szCDN, 0); } } } @@ -239,12 +244,15 @@ int OnDatabaseEventPreAdd(WPARAM wParam, LPARAM lParam) { return 0; // just to be safe - // copy blob data CheckWindowData *cd = new CheckWindowData; cd->hContact = (HANDLE)wParam; - cd->blobsize = dbei->cbBlob; - cd->blob = new BYTE[cd->blobsize]; - memcpy(cd->blob, dbei->pBlob, cd->blobsize); + if(options.show_msg) { + // copy blob data + cd->blobsize = dbei->cbBlob; + cd->blob = new BYTE[cd->blobsize]; + memcpy(cd->blob, dbei->pBlob, cd->blobsize); + } else + cd->blobsize = 0; // spawn a thread to deal with the copied data CloseHandle((HANDLE)_beginthreadex(0, 0, sttCheckWindowProc, (VOID *)cd, 0, 0)); diff --git a/message_notify/options.cpp b/message_notify/options.cpp index 9460843..8b7a40c 100644 --- a/message_notify/options.cpp +++ b/message_notify/options.cpp @@ -67,6 +67,7 @@ static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l }; } CheckDlgButton(hwndDlg, IDC_CHK_CLOSE, options.close_win ? TRUE : FALSE); + CheckDlgButton(hwndDlg, IDC_CHK_MSG, options.show_msg ? TRUE : FALSE); if(options.timeout == -1) { CheckDlgButton(hwndDlg, IDC_CHK_SETTIMEOUT, FALSE); SetDlgItemInt(hwndDlg, IDC_ED_TIMEOUT, 0, FALSE); @@ -134,6 +135,7 @@ static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l } SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 ); return TRUE; + case IDC_CHK_MSG: case IDC_CHK_CLOSE: case IDC_CHK_TABS: SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 ); @@ -165,6 +167,7 @@ static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l else options.notify_when = NOTIFY_ALWAYS; options.close_win = IsDlgButtonChecked(hwndDlg, IDC_CHK_CLOSE) ? true : false; + options.show_msg = IsDlgButtonChecked(hwndDlg, IDC_CHK_MSG) ? true : false; if(IsDlgButtonChecked(hwndDlg, IDC_CHK_SETTIMEOUT)) { BOOL trans; @@ -224,6 +227,7 @@ void LoadOptions() { options.textCol = (COLORREF)DBGetContactSettingDword(0, MODULE, "TextColour", (DWORD)0x000000); options.consider_tabs = (DBGetContactSettingByte(0, MODULE, "ConsiderTabs", 1) == 1); options.close_win = (DBGetContactSettingByte(0, MODULE, "CloseWin", 0) == 1); + options.show_msg = (DBGetContactSettingByte(0, MODULE, "ShowMsg", 1) == 1); char buff[128]; for(int i = 0; i < 9; i++) { @@ -240,6 +244,7 @@ void SaveOptions() { DBWriteContactSettingDword(0, MODULE, "TextColour", (DWORD)options.textCol); DBWriteContactSettingByte(0, MODULE, "ConsiderTabs", options.consider_tabs ? 1 : 0); DBWriteContactSettingByte(0, MODULE, "CloseWin", options.close_win ? 1 : 0); + DBWriteContactSettingByte(0, MODULE, "ShowMsg", options.show_msg ? 1 : 0); char buff[128]; for(int i = 0; i < 9; i++) { sprintf(buff, "DisableStatus%d", i); diff --git a/message_notify/options.h b/message_notify/options.h index 75f1c88..5449b48 100644 --- a/message_notify/options.h +++ b/message_notify/options.h @@ -25,6 +25,7 @@ typedef struct Options_tag { bool consider_tabs; bool close_win; bool disable_status[9]; + bool show_msg; } Options; extern Options options; diff --git a/message_notify/popups.cpp b/message_notify/popups.cpp index 1a40583..83a40b9 100644 --- a/message_notify/popups.cpp +++ b/message_notify/popups.cpp @@ -146,17 +146,8 @@ void ShowPopup( HANDLE hContact, const char* line1, const char* line2, int flags ppd->lchIcon = hPopupIcon; - if(line1 && line2) { - strncpy( ppd->lpzContactName, line1, MAX_CONTACTNAME ); - strncpy( ppd->lpzText, line2, MAX_SECONDLINE ); - } else { - if(line1) { - strncpy( ppd->lpzText, line1, MAX_SECONDLINE ); - } else { - if(line2) - strncpy( ppd->lpzText, line2, MAX_SECONDLINE ); - } - } + if(line1) strncpy( ppd->lpzContactName, line1, MAX_CONTACTNAME ); + if(line2) strncpy( ppd->lpzText, line2, MAX_SECONDLINE ); if(options.set_colours) { ppd->colorBack = options.bkCol; @@ -205,17 +196,8 @@ void ShowPopupW( HANDLE hContact, const wchar_t* line1, const wchar_t* line2, in ppd->lchIcon = hPopupIcon; - if(line1 && line2) { - _tcsncpy( ppd->lpwzContactName, line1, MAX_CONTACTNAME ); - _tcsncpy( ppd->lpwzText, line2, MAX_SECONDLINE ); - } else { - if(line1) { - _tcsncpy( ppd->lpwzText, line1, MAX_SECONDLINE ); - } else { - if(line2) - _tcsncpy( ppd->lpwzText, line2, MAX_SECONDLINE ); - } - } + if(line1) _tcsncpy( ppd->lpwzContactName, line1, MAX_CONTACTNAME ); + if(line2) _tcsncpy( ppd->lpwzText, line2, MAX_SECONDLINE ); if(options.set_colours) { ppd->colorBack = options.bkCol; diff --git a/message_notify/resource.h b/message_notify/resource.h index d8de870..a20fa09 100644 --- a/message_notify/resource.h +++ b/message_notify/resource.h @@ -14,6 +14,8 @@ #define IDC_CP_TXT 1008 #define IDC_CHK_TABS 1009 #define IDC_CHK_CLOSE 1010 +#define IDC_CHK_CLOSE2 1011 +#define IDC_CHK_MSG 1011 #define IDC_LIST1 1012 #define IDC_LST_STATUS 1012 diff --git a/message_notify/resource.rc b/message_notify/resource.rc index 44b0fe0..78d0f9e 100644 --- a/message_notify/resource.rc +++ b/message_notify/resource.rc @@ -52,30 +52,31 @@ END // Dialog // -IDD_OPTIONS DIALOGEX 0, 0, 250, 196 +IDD_OPTIONS DIALOGEX 0, 0, 269, 210 STYLE DS_SETFONT | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "Notification Options",IDC_STATIC,7,7,144,83 - CONTROL "Notify if window not open",IDC_RAD_CLOSED,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,20,136,10 + GROUPBOX "Notification Options",IDC_STATIC,7,7,142,95 + CONTROL "Notify if window not open",IDC_RAD_CLOSED,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,20,132,10 CONTROL "Notify if window isn't 'foreground'",IDC_RAD_NFORE, - "Button",BS_AUTORADIOBUTTON,10,34,136,10 - CONTROL "Notify always",IDC_RAD_ALWAYS,"Button",BS_AUTORADIOBUTTON,10,59,136,10 - GROUPBOX "Timeout",IDC_STATIC,7,96,236,40 + "Button",BS_AUTORADIOBUTTON,13,34,132,10 + CONTROL "Notify always",IDC_RAD_ALWAYS,"Button",BS_AUTORADIOBUTTON,13,59,132,10 + GROUPBOX "Timeout",IDC_STATIC,7,109,255,40 CONTROL "Set timeout (otherwise, infinite)",IDC_CHK_SETTIMEOUT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,104,205,10 - RTEXT "Timeout (seconds, 0 == default):",IDC_STATIC,19,119,137,8 - EDITTEXT IDC_ED_TIMEOUT,168,117,29,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER - GROUPBOX "Colours",IDC_STATIC,7,140,236,49 - CONTROL "Set popup colours",IDC_CHK_SETCOLOURS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,161,95,10 - RTEXT "Background:",IDC_STATIC,122,154,63,8 - RTEXT "Text:",IDC_STATIC,122,173,63,8 - CONTROL "Custom1",IDC_CP_BK,"ColourPicker",WS_TABSTOP,193,151,41,12 - CONTROL "Custom1",IDC_CP_TXT,"ColourPicker",WS_TABSTOP,193,171,41,12 - CONTROL "Consider tabs",IDC_CHK_TABS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,46,112,10 - CONTROL "Close window on right click",IDC_CHK_CLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,74,136,10 - GROUPBOX "Disable when",IDC_STATIC,157,7,86,83 - CONTROL "",IDC_LST_STATUS,"SysListView32",LVS_REPORT | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_TABSTOP,161,19,79,64,WS_EX_CLIENTEDGE + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,117,205,10 + RTEXT "Timeout (seconds, 0 == default):",IDC_STATIC,19,132,137,8 + EDITTEXT IDC_ED_TIMEOUT,168,130,29,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER + GROUPBOX "Colours",IDC_STATIC,7,154,255,49 + CONTROL "Set popup colours",IDC_CHK_SETCOLOURS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,174,95,10 + RTEXT "Background:",IDC_STATIC,122,167,63,8 + RTEXT "Text:",IDC_STATIC,122,186,63,8 + CONTROL "Custom1",IDC_CP_BK,"ColourPicker",WS_TABSTOP,193,164,41,12 + CONTROL "Custom1",IDC_CP_TXT,"ColourPicker",WS_TABSTOP,193,184,41,12 + CONTROL "Consider tabs",IDC_CHK_TABS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,46,112,10 + CONTROL "Close window on right click",IDC_CHK_CLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,74,132,10 + GROUPBOX "Disable when",IDC_STATIC,155,7,107,94 + CONTROL "",IDC_LST_STATUS,"SysListView32",LVS_REPORT | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_TABSTOP,159,17,99,80,WS_EX_CLIENTEDGE + CONTROL "Include message text",IDC_CHK_MSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,87,132,10 END @@ -90,9 +91,9 @@ BEGIN IDD_OPTIONS, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 243 + RIGHTMARGIN, 262 TOPMARGIN, 7 - BOTTOMMARGIN, 189 + BOTTOMMARGIN, 203 END END #endif // APSTUDIO_INVOKED -- cgit v1.2.3