summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-08-02 16:30:48 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-08-02 16:30:48 +0300
commitf992896697029feed516dcd9935ce6db63b557f2 (patch)
treef57f0ec1d7f742e709c51a011a1b920803acf379
parent7b5ebb74c654044a26aefc545a7f8a9a6a39c089 (diff)
UinfoEx: popup options -> UI classes
-rw-r--r--plugins/UserInfoEx/src/ctrl_annivedit.cpp2
-rw-r--r--plugins/UserInfoEx/src/dlg_anniversarylist.cpp2
-rw-r--r--plugins/UserInfoEx/src/dlg_msgbox.cpp10
-rw-r--r--plugins/UserInfoEx/src/dlg_msgbox.h32
-rw-r--r--plugins/UserInfoEx/src/init.cpp18
-rw-r--r--plugins/UserInfoEx/src/mir_menuitems.cpp2
-rw-r--r--plugins/UserInfoEx/src/psp_options.cpp410
-rw-r--r--plugins/UserInfoEx/src/stdafx.h8
-rw-r--r--plugins/UserInfoEx/src/svc_refreshci.cpp2
-rw-r--r--plugins/UserInfoEx/src/svc_reminder.cpp29
-rw-r--r--plugins/UserInfoEx/src/svc_reminder.h9
11 files changed, 222 insertions, 302 deletions
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<CMPlugin>(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>
{
CMPlugin();
- CMOption<uint8_t> iRemindEnabled;
+ // Reminder options
+ CMOption<uint8_t> iRemindState;
CMOption<uint16_t> wRemindOffset, wRemindSoundOffset, wRemindNotifyInterval;
CMOption<bool> bRemindExtraIcon, bRemindCheckVisible, bRemindFlashIcon, bRemindStartupCheck, bRemindMenuEnabled;
+ // Popup options
+ CMOption<bool> bPopupEnabled, bPopupMsgbox, bPopupProgress;
+ CMOption<uint8_t> iBirthClrType, iAnnivClrType, iPopupDelay;
+ CMOption<uint32_t> 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)
/**