From f992896697029feed516dcd9935ce6db63b557f2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 2 Aug 2022 16:30:48 +0300 Subject: UinfoEx: popup options -> UI classes --- plugins/UserInfoEx/src/ctrl_annivedit.cpp | 2 +- plugins/UserInfoEx/src/dlg_anniversarylist.cpp | 2 +- plugins/UserInfoEx/src/dlg_msgbox.cpp | 10 +- plugins/UserInfoEx/src/dlg_msgbox.h | 32 +- plugins/UserInfoEx/src/init.cpp | 18 +- plugins/UserInfoEx/src/mir_menuitems.cpp | 2 +- plugins/UserInfoEx/src/psp_options.cpp | 410 +++++++++++-------------- plugins/UserInfoEx/src/stdafx.h | 8 +- plugins/UserInfoEx/src/svc_refreshci.cpp | 2 +- plugins/UserInfoEx/src/svc_reminder.cpp | 29 +- plugins/UserInfoEx/src/svc_reminder.h | 9 - 11 files changed, 222 insertions(+), 302 deletions(-) (limited to 'plugins') diff --git a/plugins/UserInfoEx/src/ctrl_annivedit.cpp b/plugins/UserInfoEx/src/ctrl_annivedit.cpp index e3058fa3fe..a8cbe82c6c 100644 --- a/plugins/UserInfoEx/src/ctrl_annivedit.cpp +++ b/plugins/UserInfoEx/src/ctrl_annivedit.cpp @@ -41,7 +41,7 @@ CAnnivEditCtrl::CAnnivEditCtrl(HWND hDlg, uint16_t idCtrl, LPCSTR pszSetting) _hBtnEdit = GetDlgItem(hDlg, BTN_EDIT); _hBtnMenu = GetDlgItem(hDlg, BTN_MENU); _hwndDate = GetDlgItem(hDlg, EDIT_ANNIVERSARY_DATE); - _ReminderEnabled = g_plugin.iRemindEnabled; + _ReminderEnabled = g_plugin.iRemindState; _pDates = nullptr; _curDate = 0; diff --git a/plugins/UserInfoEx/src/dlg_anniversarylist.cpp b/plugins/UserInfoEx/src/dlg_anniversarylist.cpp index abc296e48e..21320df313 100644 --- a/plugins/UserInfoEx/src/dlg_anniversarylist.cpp +++ b/plugins/UserInfoEx/src/dlg_anniversarylist.cpp @@ -322,7 +322,7 @@ class CAnnivList } // init reminder groups - pDlg->_bRemindEnable = g_plugin.iRemindEnabled != REMIND_OFF; + pDlg->_bRemindEnable = g_plugin.iRemindState != REMIND_OFF; if (hCtrl = GetDlgItem(hDlg, CHECK_REMIND)) { Button_SetCheck(hCtrl, pDlg->_bRemindEnable ? BST_INDETERMINATE : BST_UNCHECKED); EnableWindow(hCtrl, pDlg->_bRemindEnable); diff --git a/plugins/UserInfoEx/src/dlg_msgbox.cpp b/plugins/UserInfoEx/src/dlg_msgbox.cpp index 77d9c860e7..37b54314a2 100644 --- a/plugins/UserInfoEx/src/dlg_msgbox.cpp +++ b/plugins/UserInfoEx/src/dlg_msgbox.cpp @@ -59,7 +59,7 @@ void __forceinline MoveCtrl(HWND hDlg, int idCtrl, int dx, int dy, int dw, int d * @retval HICON - The function returns an icon to display with the message. * @retval NULL - There is no icon for the message. **/ -static HICON MsgLoadIcon(LPMSGBOX pMsgBox) +static HICON MsgLoadIcon(MSGBOX *pMsgBox) { HICON hIcon; @@ -178,7 +178,7 @@ static INT_PTR CALLBACK MsgBoxProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM l switch (uMsg) { case WM_INITDIALOG: { - LPMSGBOX pMsgBox = (LPMSGBOX)lParam; + MSGBOX *pMsgBox = (MSGBOX*)lParam; if (PtrIsValid(pMsgBox)) { int icoWidth = 0; int InfoBarHeight = 0; @@ -485,7 +485,7 @@ static INT_PTR CALLBACK MsgBoxPop(HWND hDlg, UINT uMsg, WPARAM, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: - LPMSGBOX pMsgBox = (LPMSGBOX)lParam; + MSGBOX *pMsgBox = (MSGBOX*)lParam; MoveWindow(hDlg, -10, -10, 0, 0, FALSE); LPMSGPOPUPDATA pmpd = (LPMSGPOPUPDATA)mir_alloc(sizeof(MSGPOPUPDATA)); @@ -635,14 +635,14 @@ LRESULT CALLBACK PopupProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) **/ INT_PTR MsgBoxService(WPARAM, LPARAM lParam) { - LPMSGBOX pMsgBox = (LPMSGBOX)lParam; + MSGBOX *pMsgBox = (MSGBOX*)lParam; // check input if (PtrIsValid(pMsgBox) && pMsgBox->cbSize == sizeof(MSGBOX)) { // Shall the MessageBox displayed as popup? if (!(pMsgBox->uType & (MB_INFOBAR | MB_NOPOPUP)) // message box can be a popup? && (db_get_dw(0, "Popup", "Actions", 0) & 1) // popup++ actions on? - && g_plugin.getByte(SET_POPUPMSGBOX, DEFVAL_POPUPMSGBOX)) // user likes popups? + && g_plugin.bPopupMsgbox) // user likes popups? return DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_MSGBOXDUMMI), pMsgBox->hParent, MsgBoxPop, lParam); return DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_MSGBOX), pMsgBox->hParent, MsgBoxProc, lParam); diff --git a/plugins/UserInfoEx/src/dlg_msgbox.h b/plugins/UserInfoEx/src/dlg_msgbox.h index 7a244b7597..d1133cd29a 100644 --- a/plugins/UserInfoEx/src/dlg_msgbox.h +++ b/plugins/UserInfoEx/src/dlg_msgbox.h @@ -23,33 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _SVC_DLG_INCLUDED_ #define _SVC_DLG_INCLUDED_ 1 -#define SET_POPUPMSGBOX "PopupMsgBox" -#define DEFVAL_POPUPMSGBOX FALSE - -/* UserInfo/MsgBox v0.1.0.3+ -Some little changed message box for nicer look of miranda's messages or questions :-) -wParam=hContact - can be null -lParam=(_MSGBOX*)pMsg - structure that holds information about the look of the message dialog -uType member of _MSGBOX can be a combination of the following values, where most of them are defined in winuser.h: -MB_OK -MB_OKCANCEL -MB_YESALLNO -MB_YESNO -For valid icon values use one of the following MB_ICON_... -Funktion returns: IDOK, IDYES, IDALL, IDNO or IDCANCEL -*/ - -/* - Defined in winuser.h - ******************** - -#define MB_OK 0x00000000L -#define MB_OKCANCEL 0x00000001L -#define MB_ABORTRETRYIGNORE 0x00000002L -#define MB_YESNOCANCEL 0x00000003L -#define MB_YESNO 0x00000004L -#define MB_RETRYCANCEL 0x00000005L -*/ #define MB_YESALLNO 0x00000007L #define MB_TYPE(p) ((p)&MB_TYPEMASK) @@ -71,7 +44,7 @@ flags #define MB_NOPOPUP 0x00000200L #define MB_CUSTOMCOLOR 0x00000300L -typedef struct _MSGBOX +struct MSGBOX { UINT cbSize; // size of this structure UINT uType; // parameters @@ -83,8 +56,7 @@ typedef struct _MSGBOX HWND hParent; // parent window for the messagebox COLORREF colorBack; // valid if MB_CUSTOMCOLOR is set COLORREF colorText; // valid if MB_CUSTOMCOLOR is set -} MSGBOX, *LPMSGBOX; - +}; INT_PTR CALLBACK MsgBox(HWND hParent, UINT uType, LPCTSTR pszTitle, LPCTSTR pszInfo, LPCTSTR pszFormat, ...); INT_PTR CALLBACK MsgErr(HWND hParent, LPCTSTR pszFormat, ...); diff --git a/plugins/UserInfoEx/src/init.cpp b/plugins/UserInfoEx/src/init.cpp index aba0400f1a..83bf8c3ed5 100644 --- a/plugins/UserInfoEx/src/init.cpp +++ b/plugins/UserInfoEx/src/init.cpp @@ -45,15 +45,29 @@ static PLUGININFOEX pluginInfoEx = CMPlugin::CMPlugin() : PLUGIN(MODULENAME, pluginInfoEx), + + // Reminder options bRemindExtraIcon(MODULENAME, "RemindExtraIcon", true), bRemindFlashIcon(MODULENAME, "RemindFlashIcon", false), bRemindMenuEnabled(MODULENAME, "RemindMenuEnabled", true), bRemindStartupCheck(MODULENAME, "RemindStartupCheck", false), bRemindCheckVisible(MODULENAME, "RemindCheckVisible", false), - iRemindEnabled(MODULENAME, "RemindEnabled", REMIND_ALL), + iRemindState(MODULENAME, "RemindEnabled", REMIND_ALL), wRemindOffset(MODULENAME, "RemindOffset", 9), wRemindSoundOffset(MODULENAME, "RemindSoundOffset", 3), - wRemindNotifyInterval(MODULENAME, "RemindNotifyInterval", 12) + wRemindNotifyInterval(MODULENAME, "RemindNotifyInterval", 12), + + // Popup options + bPopupEnabled(MODULENAME, "PopupEnabled", true), + bPopupMsgbox(MODULENAME, "PopupMsgBox", false), + bPopupProgress(MODULENAME, "PopupProgress", false), + iPopupDelay(MODULENAME, "PopupDelay", 0), + iAnnivClrType(MODULENAME, "PopupAnnivClrType", POPUP_COLOR_CUSTOM), + iBirthClrType(MODULENAME, "PopupBirthClrType", POPUP_COLOR_CUSTOM), + clrAback(MODULENAME, "PopupAnnivClrBack", RGB(90, 190, 130)), + clrAtext(MODULENAME, "PopupAnnivClrText", RGB(0, 0, 0)), + clrBback(MODULENAME, "PopupBirthClrBirthBack", RGB(192, 180, 30)), + clrBtext(MODULENAME, "PopupBirthClrBirthText", RGB(0, 0, 0)) {} /* diff --git a/plugins/UserInfoEx/src/mir_menuitems.cpp b/plugins/UserInfoEx/src/mir_menuitems.cpp index 9dffcb95ed..5c7ee52469 100644 --- a/plugins/UserInfoEx/src/mir_menuitems.cpp +++ b/plugins/UserInfoEx/src/mir_menuitems.cpp @@ -239,7 +239,7 @@ void RebuildMain() // reminder mi.root = mhRoot; - bool bRemindMenus = g_plugin.iRemindEnabled && g_plugin.bRemindMenuEnabled; + bool bRemindMenus = g_plugin.iRemindState && g_plugin.bRemindMenuEnabled; if (bRemindMenus) { // Check anniversaries SET_UID(mi, 0xcc1c8aa1, 0x7d1, 0x4554, 0x9c, 0xfe, 0xc4, 0x1e, 0xb9, 0x5d, 0x4a, 0xf); diff --git a/plugins/UserInfoEx/src/psp_options.cpp b/plugins/UserInfoEx/src/psp_options.cpp index bbbf06b8f5..6b27c7b7d5 100644 --- a/plugins/UserInfoEx/src/psp_options.cpp +++ b/plugins/UserInfoEx/src/psp_options.cpp @@ -504,7 +504,7 @@ public: cmbEnabled.AddString(TranslateT("Everything")); // set reminder options - cmbEnabled.SetCurSel(g_plugin.iRemindEnabled); + cmbEnabled.SetCurSel(g_plugin.iRemindState); MTime mtLast; wchar_t szTime[MAX_PATH]; @@ -521,8 +521,8 @@ public: { // update current reminder state uint8_t bNewVal = (uint8_t)cmbEnabled.GetCurSel(); - if (g_plugin.iRemindEnabled != bNewVal) { - g_plugin.iRemindEnabled = bNewVal; + if (g_plugin.iRemindState != bNewVal) { + g_plugin.iRemindState = bNewVal; if (bNewVal == REMIND_OFF) SvcReminderEnable(false); else { @@ -552,251 +552,195 @@ public: ///////////////////////////////////////////////////////////////////////////////////////// // Popup options dialog -static INT_PTR CALLBACK DlgProc_Popups(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +class CPopupOptsDlg : public CDlgBase { - static uint8_t bInitialized = 0; + CCtrlCheck chkEnabled, chkMsgbox, chkDefClr, chkWinClr, chkADefClr, chkAWinClr, chkProgress; + CCtrlCheck chkDefault, chkCustom, chkPermanent; + CCtrlColor clrAback, clrAtext, clrBback, clrBtext; + CCtrlButton btnPreview; - switch (uMsg) { - case WM_INITDIALOG: - TranslateDialogDefault(hDlg); - bInitialized = 0; - { - DBGetCheckBtn(hDlg, CHECK_OPT_POPUP_MSGBOX, SET_POPUPMSGBOX, DEFVAL_POPUPMSGBOX); - DBGetCheckBtn(hDlg, CHECK_OPT_POPUP_PROGRESS, "PopupProgress", FALSE); - // disable if popup plugin dos not sopport buttons inside popop - if (!(db_get_dw(0, "Popup", "Actions", 0) & 1)) - EnableDlgItem(hDlg, CHECK_OPT_POPUP_MSGBOX, FALSE); - - // enable/disable popups - uint8_t isEnabled = DBGetCheckBtn(hDlg, CHECK_OPT_POPUP_ENABLED, SET_POPUP_ENABLED, TRUE); - SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(CHECK_OPT_POPUP_ENABLED, BN_CLICKED), (LPARAM)GetDlgItem(hDlg, CHECK_OPT_POPUP_ENABLED)); - - // set colortype checkboxes and color controls - DBGetColor(hDlg, CLR_BBACK, SET_POPUP_BIRTHDAY_COLOR_BACK, RGB(192, 180, 30)); - DBGetColor(hDlg, CLR_BTEXT, SET_POPUP_BIRTHDAY_COLOR_TEXT, RGB(0, 0, 0)); - switch (g_plugin.getByte(SET_POPUP_BIRTHDAY_COLORTYPE, POPUP_COLOR_CUSTOM)) { - case POPUP_COLOR_DEFAULT: - CheckDlgButton(hDlg, CHECK_OPT_POPUP_DEFCLR, BST_CHECKED); - break; - - case POPUP_COLOR_WINDOWS: - CheckDlgButton(hDlg, CHECK_OPT_POPUP_WINCLR, BST_CHECKED); - } +public: + CPopupOptsDlg() : + CDlgBase(g_plugin, IDD_OPT_POPUP), + btnPreview(this, BTN_PREVIEW), + chkDefClr(this, CHECK_OPT_POPUP_DEFCLR), + chkWinClr(this, CHECK_OPT_POPUP_WINCLR), + chkADefClr(this, CHECK_OPT_POPUP_ADEFCLR), + chkAWinClr(this, CHECK_OPT_POPUP_AWINCLR), + chkEnabled(this, CHECK_OPT_POPUP_ENABLED), + chkMsgbox(this, CHECK_OPT_POPUP_MSGBOX), + chkProgress(this, CHECK_OPT_POPUP_PROGRESS), + chkCustom(this, RADIO_OPT_POPUP_CUSTOM), + chkDefault(this, RADIO_OPT_POPUP_DEFAULT), + chkPermanent(this, RADIO_OPT_POPUP_PERMANENT), + clrAback(this, CLR_ABACK), + clrAtext(this, CLR_ATEXT), + clrBback(this, CLR_BBACK), + clrBtext(this, CLR_BTEXT) + { + CreateLink(chkMsgbox, g_plugin.bPopupMsgbox); + CreateLink(chkEnabled, g_plugin.bPopupEnabled); + CreateLink(chkProgress, g_plugin.bPopupProgress); - DBGetColor(hDlg, CLR_ABACK, SET_POPUP_ANNIVERSARY_COLOR_BACK, RGB(90, 190, 130)); - DBGetColor(hDlg, CLR_ATEXT, SET_POPUP_ANNIVERSARY_COLOR_TEXT, RGB(0, 0, 0)); - switch (g_plugin.getByte(SET_POPUP_ANNIVERSARY_COLORTYPE, POPUP_COLOR_CUSTOM)) { - case POPUP_COLOR_DEFAULT: - CheckDlgButton(hDlg, CHECK_OPT_POPUP_ADEFCLR, BST_CHECKED); - break; - case POPUP_COLOR_WINDOWS: - CheckDlgButton(hDlg, CHECK_OPT_POPUP_AWINCLR, BST_CHECKED); - } + CreateLink(clrAback, g_plugin.clrAback); + CreateLink(clrAtext, g_plugin.clrAtext); + CreateLink(clrBback, g_plugin.clrBback); + CreateLink(clrBtext, g_plugin.clrBtext); - if (isEnabled) { - SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(CHECK_OPT_POPUP_DEFCLR, BN_CLICKED), NULL); - SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(CHECK_OPT_POPUP_ADEFCLR, BN_CLICKED), NULL); - } - // set delay values - uint8_t bDelay = g_plugin.getByte(SET_POPUP_DELAY, 0); - switch (bDelay) { - case 0: - CheckDlgButton(hDlg, RADIO_OPT_POPUP_DEFAULT, BST_CHECKED); - if (isEnabled) - EnableDlgItem(hDlg, EDIT_DELAY, FALSE); - break; - - case 255: - CheckDlgButton(hDlg, RADIO_OPT_POPUP_PERMANENT, BST_CHECKED); - if (isEnabled) - EnableDlgItem(hDlg, EDIT_DELAY, FALSE); - break; - - default: - CheckDlgButton(hDlg, RADIO_OPT_POPUP_CUSTOM, BST_CHECKED); - SetDlgItemInt(hDlg, EDIT_DELAY, bDelay, FALSE); - } - } - bInitialized = TRUE; - return TRUE; + btnPreview.OnClick = Callback(this, &CPopupOptsDlg::onClick_Preview); - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - DBWriteCheckBtn(hDlg, CHECK_OPT_POPUP_MSGBOX, SET_POPUPMSGBOX); - DBWriteCheckBtn(hDlg, CHECK_OPT_POPUP_PROGRESS, "PopupProgress"); - DBWriteCheckBtn(hDlg, CHECK_OPT_POPUP_ENABLED, SET_POPUP_ENABLED); - - // save popup style for birthdays - DBWriteColor(hDlg, CLR_BBACK, SET_POPUP_BIRTHDAY_COLOR_BACK); - DBWriteColor(hDlg, CLR_BTEXT, SET_POPUP_BIRTHDAY_COLOR_TEXT); - g_plugin.setByte(SET_POPUP_BIRTHDAY_COLORTYPE, - IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_DEFCLR) - ? POPUP_COLOR_DEFAULT - : IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_WINCLR) - ? POPUP_COLOR_WINDOWS - : POPUP_COLOR_CUSTOM); - - // save popup style for anniversaries - DBWriteColor(hDlg, CLR_ABACK, SET_POPUP_ANNIVERSARY_COLOR_BACK); - DBWriteColor(hDlg, CLR_ATEXT, SET_POPUP_ANNIVERSARY_COLOR_TEXT); - g_plugin.setByte(SET_POPUP_ANNIVERSARY_COLORTYPE, - IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_ADEFCLR) - ? POPUP_COLOR_DEFAULT - : IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_AWINCLR) - ? POPUP_COLOR_WINDOWS - : POPUP_COLOR_CUSTOM); - - // save delay - if (IsDlgButtonChecked(hDlg, RADIO_OPT_POPUP_PERMANENT)) - g_plugin.setByte(SET_POPUP_DELAY, 255); - else if (IsDlgButtonChecked(hDlg, RADIO_OPT_POPUP_CUSTOM)) { - wchar_t szDelay[4]; - GetDlgItemText(hDlg, EDIT_DELAY, szDelay, _countof(szDelay)); - g_plugin.setByte(SET_POPUP_DELAY, (uint8_t)wcstol(szDelay, nullptr, 10)); - } - else - g_plugin.delSetting(SET_POPUP_DELAY); - } - break; + chkEnabled.OnChange = Callback(this, &CPopupOptsDlg::onChange_Enabled); + chkDefClr.OnChange = chkWinClr.OnChange = Callback(this, &CPopupOptsDlg::onChange_Clr); + chkADefClr.OnChange = chkAWinClr.OnChange = Callback(this, &CPopupOptsDlg::onChange_AnnivClr); + chkDefault.OnChange = chkCustom.OnChange = chkPermanent.OnChange = Callback(this, &CPopupOptsDlg::onChange_Delay); + } - case WM_COMMAND: - switch (LOWORD(wParam)) { - case BTN_PREVIEW: - { - POPUPDATAW ppd; - ppd.iSeconds = (int)g_plugin.getByte(SET_POPUP_DELAY, 0); - mir_wstrncpy(ppd.lpwzText, TranslateT("This is the reminder message"), MAX_SECONDLINE); - - // Birthday - mir_wstrncpy(ppd.lpwzContactName, TranslateT("Birthday"), _countof(ppd.lpwzContactName)); - ppd.lchIcon = g_plugin.getIcon(IDI_RMD_DTB0); - if (IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_WINCLR)) { - ppd.colorBack = GetSysColor(COLOR_BTNFACE); - ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); - } - else if (BST_UNCHECKED == IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_DEFCLR)) { - ppd.colorBack = SendDlgItemMessage(hDlg, CLR_BBACK, CPM_GETCOLOUR, 0, 0); - ppd.colorText = SendDlgItemMessage(hDlg, CLR_BTEXT, CPM_GETCOLOUR, 0, 0); - } - PUAddPopupW(&ppd); - - // Anniversary - mir_wstrncpy(ppd.lpwzContactName, TranslateT("Anniversary"), _countof(ppd.lpwzContactName)); - ppd.lchIcon = g_plugin.getIcon(IDI_RMD_DTAX); - if (IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_WINCLR)) { - ppd.colorBack = GetSysColor(COLOR_BTNFACE); - ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); - } - else if (IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_DEFCLR)) { - ppd.colorBack = 0; - ppd.colorText = 0; - } - else { - ppd.colorBack = SendDlgItemMessage(hDlg, CLR_ABACK, CPM_GETCOLOUR, 0, 0); - ppd.colorText = SendDlgItemMessage(hDlg, CLR_ATEXT, CPM_GETCOLOUR, 0, 0); - } - PUAddPopupW(&ppd); - } + bool OnInitDialog() override + { + // disable if popup plugin dos not sopport buttons inside popop + if (!(db_get_dw(0, "Popup", "Actions", 0) & 1)) + EnableDlgItem(m_hwnd, CHECK_OPT_POPUP_MSGBOX, FALSE); + + // set colortype checkboxes and color controls + switch (g_plugin.iBirthClrType) { + case POPUP_COLOR_DEFAULT: + chkDefClr.SetState(true); break; + case POPUP_COLOR_WINDOWS: + chkWinClr.SetState(true); + } - case CHECK_OPT_POPUP_MSGBOX: - case CHECK_OPT_POPUP_PROGRESS: - if (bInitialized) - NotifyParentOfChange(hDlg); + switch (g_plugin.iAnnivClrType) { + case POPUP_COLOR_DEFAULT: + chkADefClr.SetState(true); break; + case POPUP_COLOR_WINDOWS: + chkAWinClr.SetState(true); + } - case CHECK_OPT_POPUP_ENABLED: - if (HIWORD(wParam) == BN_CLICKED) { - const BOOL bEnabled = SendMessage((HWND)lParam, BM_GETCHECK, NULL, NULL); - const int idCtrl[] = { - CHECK_OPT_POPUP_DEFCLR, CHECK_OPT_POPUP_WINCLR, - CLR_BBACK, TXT_OPT_POPUP_CLR_BACK, - CLR_BTEXT, TXT_OPT_POPUP_CLR_TEXT, - CHECK_OPT_POPUP_ADEFCLR, CHECK_OPT_POPUP_AWINCLR, - CLR_ABACK, TXT_OPT_POPUP_CLR_ABACK, - CLR_ATEXT, TXT_OPT_POPUP_CLR_ATEXT, - RADIO_OPT_POPUP_DEFAULT, RADIO_OPT_POPUP_CUSTOM, - RADIO_OPT_POPUP_PERMANENT, EDIT_DELAY - }; - - EnableControls(hDlg, idCtrl, _countof(idCtrl), bEnabled); - - if (bInitialized) - NotifyParentOfChange(hDlg); - } + // set delay values + uint8_t bDelay = g_plugin.iPopupDelay; + switch (bDelay) { + case 0: + chkDefault.SetState(true); break; - case CHECK_OPT_POPUP_DEFCLR: - case CHECK_OPT_POPUP_WINCLR: - if (HIWORD(wParam) == BN_CLICKED) { - int bDefClr = IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_DEFCLR); - int bWinClr = IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_WINCLR); - - EnableDlgItem(hDlg, CHECK_OPT_POPUP_DEFCLR, !bWinClr); - EnableDlgItem(hDlg, CHECK_OPT_POPUP_WINCLR, !bDefClr); - EnableDlgItem(hDlg, CLR_BBACK, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, TXT_OPT_POPUP_CLR_BACK, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, CLR_BTEXT, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, TXT_OPT_POPUP_CLR_TEXT, !(bDefClr || bWinClr)); - if (bInitialized) - NotifyParentOfChange(hDlg); - } + case 255: + chkPermanent.SetState(true); break; - case CHECK_OPT_POPUP_ADEFCLR: - case CHECK_OPT_POPUP_AWINCLR: - if (HIWORD(wParam) == BN_CLICKED) { - int bDefClr = IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_ADEFCLR); - int bWinClr = IsDlgButtonChecked(hDlg, CHECK_OPT_POPUP_AWINCLR); - - EnableDlgItem(hDlg, CHECK_OPT_POPUP_ADEFCLR, !bWinClr); - EnableDlgItem(hDlg, CHECK_OPT_POPUP_AWINCLR, !bDefClr); - EnableDlgItem(hDlg, CLR_ABACK, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, TXT_OPT_POPUP_CLR_ABACK, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, CLR_ATEXT, !(bDefClr || bWinClr)); - EnableDlgItem(hDlg, TXT_OPT_POPUP_CLR_ATEXT, !(bDefClr || bWinClr)); - if (bInitialized) - NotifyParentOfChange(hDlg); - } - break; + default: + chkCustom.SetState(true); + SetDlgItemInt(m_hwnd, EDIT_DELAY, bDelay, FALSE); + } + return true; + } - case RADIO_OPT_POPUP_DEFAULT: - if (HIWORD(wParam) == BN_CLICKED) { - EnableDlgItem(hDlg, EDIT_DELAY, FALSE); - if (bInitialized) - NotifyParentOfChange(hDlg); - } - break; + bool OnApply() override + { + // save popup style for birthdays + g_plugin.iBirthClrType = chkDefClr.IsChecked() ? POPUP_COLOR_DEFAULT : (chkWinClr.IsChecked() ? POPUP_COLOR_WINDOWS : POPUP_COLOR_CUSTOM); + + // save popup style for anniversaries + g_plugin.iAnnivClrType = chkADefClr.IsChecked() ? POPUP_COLOR_DEFAULT : (chkAWinClr.IsChecked() ? POPUP_COLOR_WINDOWS : POPUP_COLOR_CUSTOM); + + // save delay + if (chkPermanent.IsChecked()) + g_plugin.iPopupDelay = 255; + else if (chkCustom.IsChecked()) { + wchar_t szDelay[4]; + GetDlgItemText(m_hwnd, EDIT_DELAY, szDelay, _countof(szDelay)); + g_plugin.iPopupDelay = (uint8_t)wcstol(szDelay, nullptr, 10); + } + else g_plugin.iPopupDelay.Delete(); - case RADIO_OPT_POPUP_CUSTOM: - if (HIWORD(wParam) == BN_CLICKED) { - EnableDlgItem(hDlg, EDIT_DELAY, TRUE); - if (bInitialized) - NotifyParentOfChange(hDlg); - } - break; + return true; + } - case RADIO_OPT_POPUP_PERMANENT: - if (HIWORD(wParam) == BN_CLICKED) { - EnableDlgItem(hDlg, EDIT_DELAY, FALSE); - if (bInitialized) - NotifyParentOfChange(hDlg); - } - break; + void onClick_Preview(CCtrlButton*) + { + POPUPDATAW ppd = {}; + ppd.iSeconds = g_plugin.iPopupDelay; + mir_wstrncpy(ppd.lpwzText, TranslateT("This is the reminder message"), MAX_SECONDLINE); + + // Birthday + mir_wstrncpy(ppd.lpwzContactName, TranslateT("Birthday"), _countof(ppd.lpwzContactName)); + ppd.lchIcon = g_plugin.getIcon(IDI_RMD_DTB0); + if (chkWinClr.IsChecked()) { + ppd.colorBack = GetSysColor(COLOR_BTNFACE); + ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + } + else if (!chkDefClr.IsChecked()) { + ppd.colorBack = clrBback.GetColor(); + ppd.colorText = clrBtext.GetColor(); + } + PUAddPopupW(&ppd); + + // Anniversary + mir_wstrncpy(ppd.lpwzContactName, TranslateT("Anniversary"), _countof(ppd.lpwzContactName)); + ppd.lchIcon = g_plugin.getIcon(IDI_RMD_DTAX); + if (chkAWinClr.IsChecked()) { + ppd.colorBack = GetSysColor(COLOR_BTNFACE); + ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + } + else if (!chkDefClr.IsChecked()) { + ppd.colorBack = clrAback.GetColor(); + ppd.colorText = clrAtext.GetColor(); + } + PUAddPopupW(&ppd); + } - case EDIT_DELAY: - if (bInitialized && HIWORD(wParam) == EN_UPDATE) - NotifyParentOfChange(hDlg); - break; + void onChange_Enabled(CCtrlCheck *pCheck) + { + const int idCtrl[] = { + CHECK_OPT_POPUP_DEFCLR, CHECK_OPT_POPUP_WINCLR, + CLR_BBACK, TXT_OPT_POPUP_CLR_BACK, + CLR_BTEXT, TXT_OPT_POPUP_CLR_TEXT, + CHECK_OPT_POPUP_ADEFCLR, CHECK_OPT_POPUP_AWINCLR, + CLR_ABACK, TXT_OPT_POPUP_CLR_ABACK, + CLR_ATEXT, TXT_OPT_POPUP_CLR_ATEXT, + RADIO_OPT_POPUP_DEFAULT, RADIO_OPT_POPUP_CUSTOM, + RADIO_OPT_POPUP_PERMANENT, EDIT_DELAY + }; - default: - if (bInitialized && HIWORD(wParam) == CPN_COLOURCHANGED) - NotifyParentOfChange(hDlg); - } + EnableControls(m_hwnd, idCtrl, _countof(idCtrl), pCheck->GetState()); } - return FALSE; -} + + void onChange_Clr(CCtrlCheck *) + { + bool bDefClr = chkDefClr.IsChecked(); + bool bWinClr = chkWinClr.IsChecked(); + + chkDefClr.Enable(!bWinClr); + chkWinClr.Enable(!bDefClr); + + clrBback.Enable(!bDefClr && !bWinClr); + clrBtext.Enable(!bDefClr && !bWinClr); + + EnableDlgItem(m_hwnd, TXT_OPT_POPUP_CLR_BACK, !(bDefClr || bWinClr)); + EnableDlgItem(m_hwnd, TXT_OPT_POPUP_CLR_TEXT, !(bDefClr || bWinClr)); + } + + void onChange_AnnivClr(CCtrlCheck *) + { + int bDefClr = chkADefClr.IsChecked(); + int bWinClr = chkAWinClr.IsChecked(); + + chkADefClr.Enable(!bWinClr); + chkAWinClr.Enable(!bDefClr); + + clrAback.Enable(!bDefClr && !bWinClr); + clrAtext.Enable(!bDefClr && !bWinClr); + + EnableDlgItem(m_hwnd, TXT_OPT_POPUP_CLR_ABACK, !(bDefClr || bWinClr)); + EnableDlgItem(m_hwnd, TXT_OPT_POPUP_CLR_ATEXT, !(bDefClr || bWinClr)); + } + + void onChange_Delay(CCtrlCheck *) + { + EnableDlgItem(m_hwnd, EDIT_DELAY, chkCustom.IsChecked()); + } +}; /** * This hook handler function is called on opening the options dialog @@ -814,6 +758,7 @@ int OnInitOptions(WPARAM wParam, LPARAM) OPTIONSDIALOGPAGE odp = {}; odp.position = 95400; + odp.flags = ODPF_BOLDGROUPS; odp.szTitle.a = MODULELONGNAME; odp.szGroup.a = LPGEN("Contacts"); @@ -821,21 +766,18 @@ int OnInitOptions(WPARAM wParam, LPARAM) odp.szTab.a = LPGEN("Common"); odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_COMMON); odp.pfnDlgProc = DlgProc_CommonOpts; - odp.flags = ODPF_BOLDGROUPS; g_plugin.addOptions(wParam, &odp); // Advanced page odp.szTab.a = LPGEN("Advanced"); odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_ADVANCED); odp.pfnDlgProc = DlgProc_AdvancedOpts; - odp.flags = ODPF_BOLDGROUPS; g_plugin.addOptions(wParam, &odp); // Details Dialog page odp.szTab.a = LPGEN("Details dialog"); odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_DETAILSDLG); odp.pfnDlgProc = DlgProc_DetailsDlgOpts; - odp.flags = ODPF_BOLDGROUPS; g_plugin.addOptions(wParam, &odp); // Reminder page @@ -843,16 +785,12 @@ int OnInitOptions(WPARAM wParam, LPARAM) odp.pszTemplate = 0; odp.pfnDlgProc = 0; odp.pDialog = new CReminderOptsDlg(); - odp.flags = ODPF_BOLDGROUPS; g_plugin.addOptions(wParam, &odp); // Popups page odp.szTitle.a = MODULELONGNAME; odp.szGroup.a = LPGEN("Popups"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_POPUP); - odp.pfnDlgProc = DlgProc_Popups; - odp.pDialog = 0; - odp.flags = ODPF_BOLDGROUPS; + odp.pDialog = new CPopupOptsDlg(); g_plugin.addOptions(wParam, &odp); return MIR_OK; } diff --git a/plugins/UserInfoEx/src/stdafx.h b/plugins/UserInfoEx/src/stdafx.h index 1d9186588e..ea7d3ce8bd 100644 --- a/plugins/UserInfoEx/src/stdafx.h +++ b/plugins/UserInfoEx/src/stdafx.h @@ -107,10 +107,16 @@ struct CMPlugin : public PLUGIN { CMPlugin(); - CMOption iRemindEnabled; + // Reminder options + CMOption iRemindState; CMOption wRemindOffset, wRemindSoundOffset, wRemindNotifyInterval; CMOption bRemindExtraIcon, bRemindCheckVisible, bRemindFlashIcon, bRemindStartupCheck, bRemindMenuEnabled; + // Popup options + CMOption bPopupEnabled, bPopupMsgbox, bPopupProgress; + CMOption iBirthClrType, iAnnivClrType, iPopupDelay; + CMOption clrAback, clrAtext, clrBtext, clrBback; + int Load() override; int Unload() override; }; diff --git a/plugins/UserInfoEx/src/svc_refreshci.cpp b/plugins/UserInfoEx/src/svc_refreshci.cpp index 68a0fffce2..9f3c93d349 100644 --- a/plugins/UserInfoEx/src/svc_refreshci.cpp +++ b/plugins/UserInfoEx/src/svc_refreshci.cpp @@ -634,7 +634,7 @@ public: iWait += 5000; if (Size() && !_pProgress) { - if (g_plugin.getByte("PopupProgress", FALSE)) + if (g_plugin.bPopupProgress) _pProgress = new CPopupUpdProgress(this); else _pProgress = new CDlgUpdProgress(this); diff --git a/plugins/UserInfoEx/src/svc_reminder.cpp b/plugins/UserInfoEx/src/svc_reminder.cpp index e479924df2..82e3351baf 100644 --- a/plugins/UserInfoEx/src/svc_reminder.cpp +++ b/plugins/UserInfoEx/src/svc_reminder.cpp @@ -42,7 +42,7 @@ struct CEvent uint8_t operator << (const CEvent& e); }; -typedef struct _REMINDEROPTIONS +struct REMINDEROPTIONS { uint16_t wDaysEarlier; uint8_t bPopups; @@ -51,8 +51,7 @@ typedef struct _REMINDEROPTIONS uint8_t bCheckVisibleOnly; uint8_t RemindState; CEvent evt; -} -REMINDEROPTIONS, *LPREMINDEROPTIONS; +}; static HANDLE ExtraIcon = INVALID_HANDLE_VALUE; @@ -238,9 +237,9 @@ static int NotifyWithPopup(MCONTACT hContact, CEvent::EType eventType, int DaysT if (!gRemindOpts.bPopups) return 1; - POPUPDATAW ppd; + POPUPDATAW ppd = {}; ppd.PluginWindowProc = PopupWindowProc; - ppd.iSeconds = (int)g_plugin.getByte(SET_POPUP_DELAY, 0); + ppd.iSeconds = g_plugin.iPopupDelay; if (hContact) { ppd.lchContact = hContact; @@ -254,29 +253,29 @@ static int NotifyWithPopup(MCONTACT hContact, CEvent::EType eventType, int DaysT switch (eventType) { case CEvent::BIRTHDAY: - switch (g_plugin.getByte(SET_POPUP_BIRTHDAY_COLORTYPE, POPUP_COLOR_CUSTOM)) { + switch (g_plugin.iBirthClrType) { case POPUP_COLOR_WINDOWS: ppd.colorBack = GetSysColor(COLOR_BTNFACE); ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); break; case POPUP_COLOR_CUSTOM: - ppd.colorBack = g_plugin.getDword(SET_POPUP_BIRTHDAY_COLOR_BACK, RGB(192, 180, 30)); - ppd.colorText = g_plugin.getDword(SET_POPUP_BIRTHDAY_COLOR_TEXT, 0); + ppd.colorBack = g_plugin.clrBback; + ppd.colorText = g_plugin.clrBtext; break; } break; case CEvent::ANNIVERSARY: - switch (g_plugin.getByte(SET_POPUP_ANNIVERSARY_COLORTYPE, POPUP_COLOR_CUSTOM)) { + switch (g_plugin.iAnnivClrType) { case POPUP_COLOR_WINDOWS: ppd.colorBack = GetSysColor(COLOR_BTNFACE); ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); break; case POPUP_COLOR_CUSTOM: - ppd.colorBack = g_plugin.getDword(SET_POPUP_ANNIVERSARY_COLOR_BACK, RGB(90, 190, 130)); - ppd.colorText = g_plugin.getDword(SET_POPUP_ANNIVERSARY_COLOR_TEXT, 0); + ppd.colorBack = g_plugin.clrAback; + ppd.colorText = g_plugin.clrAtext; break; } } @@ -751,12 +750,12 @@ void SvcReminderEnable(bool bEnable) ghSettingsChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, (MIRANDAHOOK)OnContactSettingChanged); // reinit reminder options - gRemindOpts.RemindState = g_plugin.iRemindEnabled; + gRemindOpts.RemindState = g_plugin.iRemindState; gRemindOpts.wDaysEarlier = g_plugin.wRemindOffset; gRemindOpts.bCListExtraIcon = g_plugin.bRemindExtraIcon; gRemindOpts.bCheckVisibleOnly = g_plugin.bRemindCheckVisible; gRemindOpts.bFlashCList = g_plugin.bRemindFlashIcon; - gRemindOpts.bPopups = g_plugin.getByte(SET_POPUP_ENABLED, TRUE); + gRemindOpts.bPopups = g_plugin.bPopupEnabled; // init the timer UpdateTimer(TRUE); @@ -783,7 +782,7 @@ void SvcReminderOnModulesLoaded(void) // init clist extra icon structure OnCListRebuildIcons(0, 0); - SvcReminderEnable(g_plugin.iRemindEnabled != REMIND_OFF); + SvcReminderEnable(g_plugin.iRemindState != REMIND_OFF); } /** @@ -808,7 +807,7 @@ void SvcReminderLoadModule(void) hk.pszService = MS_USERINFO_REMINDER_CHECK; g_plugin.addHotkey(&hk); - if (g_plugin.iRemindEnabled != REMIND_OFF && ExtraIcon == INVALID_HANDLE_VALUE) + if (g_plugin.iRemindState != REMIND_OFF && ExtraIcon == INVALID_HANDLE_VALUE) ExtraIcon = ExtraIcon_RegisterIcolib("Reminder", LPGEN("Reminder (UInfoEx)"), g_plugin.getIconHandle(IDI_ANNIVERSARY)); } diff --git a/plugins/UserInfoEx/src/svc_reminder.h b/plugins/UserInfoEx/src/svc_reminder.h index 115c23d673..76acd55f4f 100644 --- a/plugins/UserInfoEx/src/svc_reminder.h +++ b/plugins/UserInfoEx/src/svc_reminder.h @@ -43,15 +43,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define SET_REMIND_BIRTHDAY_ENABLED "RemindBirthday" #define SET_REMIND_BIRTHDAY_OFFSET "RemindBirthdayOffset" -#define SET_POPUP_ENABLED "PopupEnabled" -#define SET_POPUP_BIRTHDAY_COLORTYPE "PopupBirthClrType" -#define SET_POPUP_BIRTHDAY_COLOR_TEXT "PopupBirthClrBirthText" -#define SET_POPUP_BIRTHDAY_COLOR_BACK "PopupBirthClrBirthBack" -#define SET_POPUP_ANNIVERSARY_COLORTYPE "PopupAnnivClrType" -#define SET_POPUP_ANNIVERSARY_COLOR_TEXT "PopupAnnivClrText" -#define SET_POPUP_ANNIVERSARY_COLOR_BACK "PopupAnnivClrBack" -#define SET_POPUP_DELAY "PopupDelay" - #define HM_OPENMSG (WM_USER+1) /** -- cgit v1.2.3