From 9d482ed81c2a6a3361a5a9b2d0efbfc4b6b815c5 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 15 Mar 2013 21:47:10 +0000 Subject: - POPUPDATAT_V2 replaced with POPUPDATAT in all possible cases; - fix: wrong popup initialization code; - code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@4057 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/src/typingnotify.cpp | 655 ++++++++++++++++++----------------- 1 file changed, 339 insertions(+), 316 deletions(-) (limited to 'plugins/TabSRMM/src/typingnotify.cpp') diff --git a/plugins/TabSRMM/src/typingnotify.cpp b/plugins/TabSRMM/src/typingnotify.cpp index 4ce0796936..d42c2cac8c 100644 --- a/plugins/TabSRMM/src/typingnotify.cpp +++ b/plugins/TabSRMM/src/typingnotify.cpp @@ -2,11 +2,49 @@ HANDLE hTypingNotify; +static HANDLE hDisableMenu = NULL; +static HANDLE hPopUpsList = NULL; + +static BYTE OnePopUp; +static BYTE ShowMenu; +static BYTE StartDisabled; +static BYTE StopDisabled; +static BYTE Disabled; +static BYTE ColorMode; +static BYTE TimeoutMode; +static BYTE TimeoutMode2; +static int Timeout; +static int Timeout2; +static int newTimeout; +static int newTimeout2; +static BYTE newTimeoutMode; +static BYTE newTimeoutMode2; +static BYTE newColorMode; +static TCHAR szStart[128]; +static TCHAR szStop[128]; + +static HANDLE hntfStarted = 0; +static HANDLE hntfStopped = 0; + +struct +{ + int res; + char desc[10]; + COLORREF color; +} +static colorPicker[4] = +{ + { IDC_TYPEON_BG, "ON_BG", RGB(255,255,255)}, + { IDC_TYPEON_TX, "ON_TX", RGB(0,0,0)}, + { IDC_TYPEOFF_BG, "OFF_BG", RGB(255,255,255)}, + { IDC_TYPEOFF_TX, "OFF_TX", RGB(0,0,0)} +}; + static INT_PTR EnableDisableMenuCommand(WPARAM wParam,LPARAM lParam) { - Disabled = !(Disabled); + Disabled = !Disabled; - if (PopupService) { + if (PluginConfig.g_PopupAvail) { CLISTMENUITEM mi = { sizeof(mi) }; mi.flags = CMIM_ICON | CMIM_NAME; @@ -55,161 +93,156 @@ static int CALLBACK PopupDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM return DefWindowProc(hWnd, message, wParam, lParam); } -int TN_TypingMessage(WPARAM wParam, LPARAM lParam) +void TN_TypingMessage(HANDLE hContact, int iMode) { - POPUPDATAT_V2 ppd = { 0 }; - TCHAR *szContactName = NULL; - HWND hPopUpWnd = NULL; - int notyping; - // hidden & ignored contacts check - if (M->GetByte((HANDLE)wParam, "CList", "Hidden", 0) || (M->GetDword((HANDLE)wParam, "Ignore", "Mask1",0) & 1)) // 9 - online notification - return 0; + if (M->GetByte(hContact, "CList", "Hidden", 0) || (M->GetDword(hContact, "Ignore", "Mask1",0) & 1)) // 9 - online notification + return; - szContactName = (TCHAR*) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, wParam, GSMDF_TCHAR); + if (!PluginConfig.g_PopupAvail || Disabled) + return; - if (PopupService && !Disabled) { - if (OnePopUp) { - hPopUpWnd = WindowList_Find(hPopUpsList, (HANDLE) wParam); - while (hPopUpWnd) { - PUDeletePopUp(hPopUpWnd); - hPopUpWnd = WindowList_Find(hPopUpsList, (HANDLE) wParam); - } - } + TCHAR *szContactName = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, WPARAM(hContact), GSMDF_TCHAR); - switch (lParam) { - case PROTOTYPE_CONTACTTYPING_OFF: - if (StopDisabled) - return 0; - lstrcpyn(ppd.lptzContactName, szContactName, MAX_CONTACTNAME); - lstrcpyn(ppd.lptzText, szStop, MAX_SECONDLINE); - ppd.hNotification = hntfStopped; - notyping = 1; - break; - default: - if (StartDisabled) - return 0; - lstrcpyn(ppd.lptzContactName, szContactName, MAX_CONTACTNAME); - lstrcpyn(ppd.lptzText, szStart, MAX_SECONDLINE); - ppd.hNotification = hntfStarted; - notyping = 0; - break; + if (OnePopUp) { + HWND hPopUpWnd = WindowList_Find(hPopUpsList, hContact); + while (hPopUpWnd) { + PUDeletePopUp(hPopUpWnd); + hPopUpWnd = WindowList_Find(hPopUpsList, hContact); } + } - switch (ColorMode) { - case COLOR_OWN: - ppd.colorBack = colorPicker[2* notyping ].color; - ppd.colorText = colorPicker[2* notyping + 1].color; - break; - case COLOR_WINDOWS: - ppd.colorBack = GetSysColor(COLOR_BTNFACE); - ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); - break; - case COLOR_POPUP: - default: - ppd.colorBack = ppd.colorText = 0; - break; - } + int notyping; + POPUPDATAT_V2 ppd = { 0 }; - if (notyping) - switch (TimeoutMode2) { - case TIMEOUT_CUSTOM: - ppd.iSeconds = Timeout2; - break; - case TIMEOUT_PERMANENT: - ppd.iSeconds = -1; - break; - case TIMEOUT_POPUP: - default: - ppd.iSeconds = 0; - break; - } - else - switch (TimeoutMode) { - case TIMEOUT_CUSTOM: - ppd.iSeconds = Timeout; - break; - case TIMEOUT_PROTO: - ppd.iSeconds = (DWORD) lParam; - break; - case TIMEOUT_PERMANENT: - ppd.iSeconds = -1; - break; - case TIMEOUT_POPUP: - default: - ppd.iSeconds = 0; - break; - } + if (iMode == PROTOTYPE_CONTACTTYPING_OFF) { + if (StopDisabled) + return; + lstrcpyn(ppd.lptzContactName, szContactName, MAX_CONTACTNAME); + lstrcpyn(ppd.lptzText, szStop, MAX_SECONDLINE); + ppd.hNotification = hntfStopped; + notyping = 1; + } + else { + if (StartDisabled) + return; + lstrcpyn(ppd.lptzContactName, szContactName, MAX_CONTACTNAME); + lstrcpyn(ppd.lptzText, szStart, MAX_SECONDLINE); + ppd.hNotification = hntfStarted; + notyping = 0; + } - ppd.lchIcon = PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]; - ppd.lchContact = (HANDLE) wParam; - ppd.PluginWindowProc = (WNDPROC) PopupDlgProc; - ppd.PluginData = NULL; + switch (ColorMode) { + case COLOR_OWN: + ppd.colorBack = colorPicker[2* notyping ].color; + ppd.colorText = colorPicker[2* notyping + 1].color; + break; + case COLOR_WINDOWS: + ppd.colorBack = GetSysColor(COLOR_BTNFACE); + ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + break; + case COLOR_POPUP: + default: + ppd.colorBack = ppd.colorText = 0; + break; + } - ppd.cbSize = sizeof(ppd); + if (notyping) + switch (TimeoutMode2) { + case TIMEOUT_CUSTOM: + ppd.iSeconds = Timeout2; + break; + case TIMEOUT_PERMANENT: + ppd.iSeconds = -1; + break; + case TIMEOUT_POPUP: + default: + ppd.iSeconds = 0; + break; + } + else + switch (TimeoutMode) { + case TIMEOUT_CUSTOM: + ppd.iSeconds = Timeout; + break; + case TIMEOUT_PROTO: + ppd.iSeconds = iMode; + break; + case TIMEOUT_PERMANENT: + ppd.iSeconds = -1; + break; + case TIMEOUT_POPUP: + default: + ppd.iSeconds = 0; + break; + } - CallService(MS_POPUP_ADDPOPUPT, (WPARAM)&ppd, APF_NEWDATA); - } - return 0; + ppd.lchIcon = PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]; + ppd.lchContact = hContact; + ppd.PluginWindowProc = (WNDPROC) PopupDlgProc; + ppd.PluginData = NULL; + ppd.cbSize = sizeof(ppd); + CallService(MS_POPUP_ADDPOPUPT, (WPARAM)&ppd, APF_NEWDATA); } static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - WORD i; + int i; switch (msg) { - case WM_INITDIALOG: { - TranslateDialogDefault(hwndDlg); - - if (ColorMode == COLOR_WINDOWS) { - CheckDlgButton(hwndDlg, IDC_USEWINCOLORS, BST_CHECKED); - Utils::enableDlgControl(hwndDlg, IDC_USEPOPUPCOLORS, FALSE); - Utils::enableDlgControl(hwndDlg, IDC_USEWINCOLORS, TRUE); - CheckDlgButton(hwndDlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); - } else if (ColorMode == COLOR_POPUP) { - CheckDlgButton(hwndDlg, IDC_USEWINCOLORS, BST_UNCHECKED); - Utils::enableDlgControl(hwndDlg, IDC_USEWINCOLORS, FALSE); - Utils::enableDlgControl(hwndDlg, IDC_USEPOPUPCOLORS, TRUE); - CheckDlgButton(hwndDlg, IDC_USEPOPUPCOLORS, BST_CHECKED); - } - - for (i=0; i < sizeof(colorPicker) / sizeof(colorPicker[0]); i++) { - SendDlgItemMessage(hwndDlg, colorPicker[i].res, CPM_SETCOLOUR, 0, colorPicker[i].color); - Utils::enableDlgControl(hwndDlg, colorPicker[i].res, (ColorMode == COLOR_OWN)); - } + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + if (ColorMode == COLOR_WINDOWS) { + CheckDlgButton(hwndDlg, IDC_USEWINCOLORS, BST_CHECKED); + Utils::enableDlgControl(hwndDlg, IDC_USEPOPUPCOLORS, FALSE); + Utils::enableDlgControl(hwndDlg, IDC_USEWINCOLORS, TRUE); + CheckDlgButton(hwndDlg, IDC_USEPOPUPCOLORS, BST_UNCHECKED); + } + else if (ColorMode == COLOR_POPUP) { + CheckDlgButton(hwndDlg, IDC_USEWINCOLORS, BST_UNCHECKED); + Utils::enableDlgControl(hwndDlg, IDC_USEWINCOLORS, FALSE); + Utils::enableDlgControl(hwndDlg, IDC_USEPOPUPCOLORS, TRUE); + CheckDlgButton(hwndDlg, IDC_USEPOPUPCOLORS, BST_CHECKED); + } - CheckDlgButton(hwndDlg, IDC_TIMEOUT_PERMANENT, (TimeoutMode == TIMEOUT_PERMANENT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TIMEOUT_POPUP, (TimeoutMode == TIMEOUT_POPUP) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TIMEOUT_PROTO, (TimeoutMode == TIMEOUT_PROTO) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TIMEOUT_CUSTOM, (TimeoutMode == TIMEOUT_CUSTOM) ? BST_CHECKED : BST_UNCHECKED); - SetDlgItemInt(hwndDlg, IDC_TIMEOUT_VALUE, Timeout, 0); - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, TimeoutMode == TIMEOUT_CUSTOM); - - CheckDlgButton(hwndDlg, IDC_TIMEOUT_PERMANENT2, (TimeoutMode2 == TIMEOUT_PERMANENT) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TIMEOUT_POPUP2, (TimeoutMode2 == TIMEOUT_POPUP) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_TIMEOUT_CUSTOM2, (TimeoutMode2 == TIMEOUT_CUSTOM) ? BST_CHECKED : BST_UNCHECKED); - SetDlgItemInt(hwndDlg, IDC_TIMEOUT_VALUE2, Timeout2, 0); - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, TimeoutMode2 == TIMEOUT_CUSTOM); - - CheckDlgButton(hwndDlg, IDC_START, (StartDisabled) ? BST_UNCHECKED : BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_STOP, (StopDisabled) ? BST_UNCHECKED : BST_CHECKED); - - CheckDlgButton(hwndDlg, IDC_ONEPOPUP, (OnePopUp) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_SHOWMENU, (ShowMenu) ? BST_CHECKED : BST_UNCHECKED); - - Utils::enableDlgControl(hwndDlg, IDC_ONEPOPUP, PopupService); - Utils::enableDlgControl(hwndDlg, IDC_SHOWMENU, PopupService); - Utils::enableDlgControl(hwndDlg, IDC_PREVIEW, PopupService/*&&!ServiceExists(MS_POPUP_REGISTERNOTIFICATION)*/); - - newTimeout = Timeout; - newTimeoutMode = TimeoutMode; - newTimeout2 = Timeout2; - newTimeoutMode2 = TimeoutMode2; - newColorMode = ColorMode; + for (i=0; i < SIZEOF(colorPicker); i++) { + SendDlgItemMessage(hwndDlg, colorPicker[i].res, CPM_SETCOLOUR, 0, colorPicker[i].color); + Utils::enableDlgControl(hwndDlg, colorPicker[i].res, (ColorMode == COLOR_OWN)); } - break; - case WM_COMMAND: { + CheckDlgButton(hwndDlg, IDC_TIMEOUT_PERMANENT, (TimeoutMode == TIMEOUT_PERMANENT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TIMEOUT_POPUP, (TimeoutMode == TIMEOUT_POPUP) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TIMEOUT_PROTO, (TimeoutMode == TIMEOUT_PROTO) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TIMEOUT_CUSTOM, (TimeoutMode == TIMEOUT_CUSTOM) ? BST_CHECKED : BST_UNCHECKED); + SetDlgItemInt(hwndDlg, IDC_TIMEOUT_VALUE, Timeout, 0); + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, TimeoutMode == TIMEOUT_CUSTOM); + + CheckDlgButton(hwndDlg, IDC_TIMEOUT_PERMANENT2, (TimeoutMode2 == TIMEOUT_PERMANENT) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TIMEOUT_POPUP2, (TimeoutMode2 == TIMEOUT_POPUP) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_TIMEOUT_CUSTOM2, (TimeoutMode2 == TIMEOUT_CUSTOM) ? BST_CHECKED : BST_UNCHECKED); + SetDlgItemInt(hwndDlg, IDC_TIMEOUT_VALUE2, Timeout2, 0); + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, TimeoutMode2 == TIMEOUT_CUSTOM); + + CheckDlgButton(hwndDlg, IDC_START, (StartDisabled) ? BST_UNCHECKED : BST_CHECKED); + CheckDlgButton(hwndDlg, IDC_STOP, (StopDisabled) ? BST_UNCHECKED : BST_CHECKED); + + CheckDlgButton(hwndDlg, IDC_ONEPOPUP, (OnePopUp) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_SHOWMENU, (ShowMenu) ? BST_CHECKED : BST_UNCHECKED); + + Utils::enableDlgControl(hwndDlg, IDC_ONEPOPUP, PluginConfig.g_PopupAvail); + Utils::enableDlgControl(hwndDlg, IDC_SHOWMENU, PluginConfig.g_PopupAvail); + Utils::enableDlgControl(hwndDlg, IDC_PREVIEW, PluginConfig.g_PopupAvail/*&&!ServiceExists(MS_POPUP_REGISTERNOTIFICATION)*/); + + newTimeout = Timeout; + newTimeoutMode = TimeoutMode; + newTimeout2 = Timeout2; + newTimeoutMode2 = TimeoutMode2; + newColorMode = ColorMode; + break; + + case WM_COMMAND: + { WORD idCtrl = LOWORD(wParam), wNotifyCode = HIWORD(wParam); if (wNotifyCode == CPN_COLOURCHANGED) { @@ -218,37 +251,37 @@ static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA } switch (idCtrl) { - case IDC_USEWINCOLORS: { - BOOL bEnableOthers = FALSE; - - if (wNotifyCode != BN_CLICKED) - break; + case IDC_USEWINCOLORS: + if (wNotifyCode == BN_CLICKED) { + BOOL bEnableOthers; if (IsDlgButtonChecked(hwndDlg, IDC_USEWINCOLORS)) { newColorMode = COLOR_WINDOWS; bEnableOthers = FALSE; - } else { + } + else { newColorMode = COLOR_OWN; bEnableOthers = TRUE; } - for (i=0; i < sizeof(colorPicker) / sizeof(colorPicker[0]); i++) + for (i=0; i < SIZEOF(colorPicker); i++) Utils::enableDlgControl(hwndDlg, colorPicker[i].res, bEnableOthers); Utils::enableDlgControl(hwndDlg, IDC_USEPOPUPCOLORS, bEnableOthers); SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; } - case IDC_USEPOPUPCOLORS: { - BOOL bEnableOthers = FALSE; - if (wNotifyCode != BN_CLICKED) - break; + break; + + case IDC_USEPOPUPCOLORS: + if (wNotifyCode == BN_CLICKED) { + BOOL bEnableOthers; if (IsDlgButtonChecked(hwndDlg, IDC_USEPOPUPCOLORS)) { newColorMode = COLOR_POPUP; bEnableOthers = FALSE; - } else { + } + else { newColorMode = COLOR_OWN; bEnableOthers = TRUE; } @@ -259,156 +292,157 @@ static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA Utils::enableDlgControl(hwndDlg, IDC_USEWINCOLORS, bEnableOthers); SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; } - case IDC_ONEPOPUP: - case IDC_CLIST: - case IDC_DISABLED: - case IDC_SHOWMENU: - case IDC_START: - case IDC_STOP: - case IDC_WOCL: - if (wNotifyCode == BN_CLICKED) - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_PREVIEW: { - POPUPDATAT_V2 ppd = { 0 }; - char *szProto = NULL; - int i, notyping; - - HANDLE hContact = db_find_first(); + break; - if (!PopupService) - break; + case IDC_ONEPOPUP: + case IDC_CLIST: + case IDC_DISABLED: + case IDC_SHOWMENU: + case IDC_START: + case IDC_STOP: + case IDC_WOCL: + if (wNotifyCode == BN_CLICKED) + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_PREVIEW: + if (PluginConfig.g_PopupAvail) { + HANDLE hContact = db_find_first(); while (hContact) { - szProto = GetContactProto(hContact); + char *szProto = GetContactProto(hContact); if (szProto != NULL) break; hContact = db_find_next(hContact); } + POPUPDATAT ppd = { 0 }; for (i=0; i < 2; i++) { - - switch (i) { - case PROTOTYPE_CONTACTTYPING_OFF: - lstrcpy(ppd.lptzContactName, TranslateT("Contact")); - lstrcpyn(ppd.lptzText, szStop, MAX_SECONDLINE); - notyping = 1; - break; - default: - lstrcpy(ppd.lptzContactName, TranslateT("Contact")); - lstrcpyn(ppd.lptzText, szStart, MAX_SECONDLINE); - notyping = 0; - break; + int notyping; + if (i == PROTOTYPE_CONTACTTYPING_OFF) { + lstrcpy(ppd.lptzContactName, TranslateT("Contact")); + lstrcpyn(ppd.lptzText, szStop, MAX_SECONDLINE); + notyping = 1; + } + else { + lstrcpy(ppd.lptzContactName, TranslateT("Contact")); + lstrcpyn(ppd.lptzText, szStart, MAX_SECONDLINE); + notyping = 0; } switch (newColorMode) { - case COLOR_OWN: - ppd.colorText = SendDlgItemMessage(hwndDlg, colorPicker[2* notyping + 1].res, CPM_GETCOLOUR, 0, 0); - ppd.colorBack = SendDlgItemMessage(hwndDlg, colorPicker[2* notyping ].res, CPM_GETCOLOUR, 0, 0); + case COLOR_OWN: + ppd.colorText = SendDlgItemMessage(hwndDlg, colorPicker[2*notyping + 1].res, CPM_GETCOLOUR, 0, 0); + ppd.colorBack = SendDlgItemMessage(hwndDlg, colorPicker[2*notyping ].res, CPM_GETCOLOUR, 0, 0); + break; + case COLOR_WINDOWS: + ppd.colorBack = GetSysColor(COLOR_BTNFACE); + ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + break; + case COLOR_POPUP: + default: + ppd.colorBack = ppd.colorText = 0; + break; + } + + if (notyping) + switch (newTimeoutMode2) { + case TIMEOUT_CUSTOM: + ppd.iSeconds = newTimeout2; break; - case COLOR_WINDOWS: - ppd.colorBack = GetSysColor(COLOR_BTNFACE); - ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + case TIMEOUT_PERMANENT: + ppd.iSeconds = -1; break; - case COLOR_POPUP: + case TIMEOUT_POPUP: default: - ppd.colorBack = ppd.colorText = 0; + ppd.iSeconds = 0; break; } - - if (notyping) - switch (newTimeoutMode2) { - case TIMEOUT_CUSTOM: - ppd.iSeconds = newTimeout2; - break; - case TIMEOUT_PERMANENT: - ppd.iSeconds = -1; - break; - case TIMEOUT_POPUP: - default: - ppd.iSeconds = 0; - break; - } else switch (newTimeoutMode) { - case TIMEOUT_CUSTOM: - ppd.iSeconds = newTimeout; - break; - case TIMEOUT_PROTO: - ppd.iSeconds = 10; - break; - case TIMEOUT_PERMANENT: - ppd.iSeconds = -1; - break; - case TIMEOUT_POPUP: - default: - ppd.iSeconds = 0; - break; - } + case TIMEOUT_CUSTOM: + ppd.iSeconds = newTimeout; + break; + case TIMEOUT_PROTO: + ppd.iSeconds = 10; + break; + case TIMEOUT_PERMANENT: + ppd.iSeconds = -1; + break; + case TIMEOUT_POPUP: + default: + ppd.iSeconds = 0; + break; + } ppd.lchIcon = PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING]; ppd.lchContact = (HANDLE) wParam; ppd.PluginWindowProc = NULL; ppd.PluginData = NULL; - - CallService(MS_POPUP_ADDPOPUPT, (WPARAM)&ppd, 0); - + PUAddPopUpT(&ppd); } - break; } - case IDC_TIMEOUT_POPUP2: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode2 = TIMEOUT_POPUP; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 0); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_POPUP2: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_CUSTOM2: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode2 = TIMEOUT_CUSTOM; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 1); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode2 = TIMEOUT_POPUP; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_CUSTOM2: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_POPUP: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode = TIMEOUT_POPUP; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode2 = TIMEOUT_CUSTOM; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 1); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_POPUP: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_PERMANENT: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode = TIMEOUT_PERMANENT; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode = TIMEOUT_POPUP; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_PERMANENT: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_PERMANENT2: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode2 = TIMEOUT_PERMANENT; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 0); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode = TIMEOUT_PERMANENT; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_PERMANENT2: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_CUSTOM: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode = TIMEOUT_CUSTOM; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 1); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode2 = TIMEOUT_PERMANENT; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE2, 0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_CUSTOM: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_PROTO: - if (wNotifyCode != BN_CLICKED) - break; - newTimeoutMode = TIMEOUT_PROTO; - Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + newTimeoutMode = TIMEOUT_CUSTOM; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 1); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_PROTO: + if (wNotifyCode != BN_CLICKED) break; - case IDC_TIMEOUT_VALUE: - case IDC_TIMEOUT_VALUE2: { + newTimeoutMode = TIMEOUT_PROTO; + Utils::enableDlgControl(hwndDlg, IDC_TIMEOUT_VALUE, 0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_TIMEOUT_VALUE: + case IDC_TIMEOUT_VALUE2: + { int newValue = GetDlgItemInt(hwndDlg, idCtrl, NULL, 0); if (wNotifyCode == EN_KILLFOCUS) { @@ -437,51 +471,45 @@ static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA newTimeout2 = newValue; SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; } - } - break; } - case WM_NOTIFY: { - switch (((LPNMHDR) lParam)->idFrom) { - case 0: - switch (((LPNMHDR) lParam)->code) { - case PSN_APPLY: - for (i=0; i < sizeof(colorPicker) / sizeof(colorPicker[0]); i++) { - colorPicker[i].color = SendDlgItemMessage(hwndDlg, colorPicker[i].res, CPM_GETCOLOUR, 0, 0); - M->WriteDword(Module, colorPicker[i].desc, colorPicker[i].color); - } - - Timeout = newTimeout; - TimeoutMode = newTimeoutMode; - Timeout2 = newTimeout2; - TimeoutMode2 = newTimeoutMode2; - ColorMode = newColorMode; - - if (Disabled != IsDlgButtonChecked(hwndDlg, IDC_DISABLED)) - EnableDisableMenuCommand(0, 0); - - StartDisabled = IsDlgButtonChecked(hwndDlg, IDC_START) ? 0 : 2; - StopDisabled = IsDlgButtonChecked(hwndDlg, IDC_STOP) ? 0 : 4; - OnePopUp = IsDlgButtonChecked(hwndDlg, IDC_ONEPOPUP); - ShowMenu = IsDlgButtonChecked(hwndDlg, IDC_SHOWMENU); - - M->WriteByte(Module, SET_ONEPOPUP, OnePopUp); - M->WriteByte(Module, SET_SHOWDISABLEMENU, ShowMenu); - M->WriteByte(Module, SET_DISABLED, (BYTE) (StartDisabled | StopDisabled)); - M->WriteByte(Module, SET_COLOR_MODE, ColorMode); - M->WriteByte(Module, SET_TIMEOUT_MODE, TimeoutMode); - M->WriteByte(Module, SET_TIMEOUT, (BYTE) Timeout); - M->WriteByte(Module, SET_TIMEOUT_MODE2, TimeoutMode2); - M->WriteByte(Module, SET_TIMEOUT2, (BYTE) Timeout2); - - return TRUE; - } - break; + break; + + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) { + case 0: + switch (((LPNMHDR) lParam)->code) { + case PSN_APPLY: + for (i=0; i < sizeof(colorPicker) / sizeof(colorPicker[0]); i++) { + colorPicker[i].color = SendDlgItemMessage(hwndDlg, colorPicker[i].res, CPM_GETCOLOUR, 0, 0); + M->WriteDword(Module, colorPicker[i].desc, colorPicker[i].color); + } + + Timeout = newTimeout; TimeoutMode = newTimeoutMode; + Timeout2 = newTimeout2; TimeoutMode2 = newTimeoutMode2; + ColorMode = newColorMode; + + if (Disabled != IsDlgButtonChecked(hwndDlg, IDC_DISABLED)) + EnableDisableMenuCommand(0, 0); + + StartDisabled = IsDlgButtonChecked(hwndDlg, IDC_START) ? 0 : 2; + StopDisabled = IsDlgButtonChecked(hwndDlg, IDC_STOP) ? 0 : 4; + OnePopUp = IsDlgButtonChecked(hwndDlg, IDC_ONEPOPUP); + ShowMenu = IsDlgButtonChecked(hwndDlg, IDC_SHOWMENU); + + M->WriteByte(Module, SET_ONEPOPUP, OnePopUp); + M->WriteByte(Module, SET_SHOWDISABLEMENU, ShowMenu); + M->WriteByte(Module, SET_DISABLED, (BYTE) (StartDisabled | StopDisabled)); + M->WriteByte(Module, SET_COLOR_MODE, ColorMode); + M->WriteByte(Module, SET_TIMEOUT_MODE, TimeoutMode); + M->WriteByte(Module, SET_TIMEOUT, (BYTE) Timeout); + M->WriteByte(Module, SET_TIMEOUT_MODE2, TimeoutMode2); + M->WriteByte(Module, SET_TIMEOUT2, (BYTE) Timeout2); + return TRUE; } - break; } + break; } return FALSE; } @@ -505,16 +533,12 @@ int TN_OptionsInitialize(WPARAM wParam, LPARAM lParam) int TN_ModuleInit() { - WORD i; - - PopupService = (PluginConfig.g_PopupWAvail || PluginConfig.g_PopupAvail); - hPopUpsList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST,0,0); OnePopUp = M->GetByte(Module,SET_ONEPOPUP,DEF_ONEPOPUP); ShowMenu = M->GetByte(Module,SET_SHOWDISABLEMENU,DEF_SHOWDISABLEMENU); - i = M->GetByte(Module,SET_DISABLED,DEF_DISABLED); + int i = M->GetByte(Module,SET_DISABLED,DEF_DISABLED); Disabled = i & 1; StartDisabled = i & 2; StopDisabled = i & 4; @@ -526,22 +550,21 @@ int TN_ModuleInit() Timeout2 = M->GetByte(Module,SET_TIMEOUT2,DEF_TIMEOUT2); if (!(M->GetDword(Module, colorPicker[0].desc, 1) && !M->GetDword(Module, colorPicker[0].desc, 0))) - for (i=0; i < sizeof(colorPicker) / sizeof(colorPicker[0]); i++) + for (i=0; i < SIZEOF(colorPicker); i++) colorPicker[i].color = M->GetDword(Module,colorPicker[i].desc,0); mir_sntprintf(szStart, sizeof(szStart), TranslateT("...is typing a message.")); mir_sntprintf(szStop, sizeof(szStop), TranslateT("...has stopped typing.")); - if (PopupService && ShowMenu) { + if (PluginConfig.g_PopupAvail && ShowMenu) { hTypingNotify = CreateServiceFunction("TypingNotify/EnableDisableMenuCommand", EnableDisableMenuCommand); CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = 0; - if (!Disabled) { mi.pszName = LPGEN("Disable &typing notification"); mi.hIcon = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ENABLED)); - } else { + } + else { mi.pszName = LPGEN("Enable &typing notification"); mi.hIcon = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_DISABLED)); } -- cgit v1.2.3