diff options
author | George Hazan <ghazan@miranda.im> | 2020-04-19 21:57:05 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-04-19 21:57:12 +0300 |
commit | ac32858e8eb13d9823bf72daad436ab8f9db31ee (patch) | |
tree | 45c5292d49df51c15b475f807e7bca0081ee14b1 /plugins/Clist_nicer | |
parent | c253a29b7c3fbaebedcedf9b079559ed7f8188ec (diff) |
fixes #2347 (Clist_nicer: "Do not separate offline contacts" option do not work until restart)
Diffstat (limited to 'plugins/Clist_nicer')
-rw-r--r-- | plugins/Clist_nicer/src/clcopts.cpp | 682 |
1 files changed, 343 insertions, 339 deletions
diff --git a/plugins/Clist_nicer/src/clcopts.cpp b/plugins/Clist_nicer/src/clcopts.cpp index 6a9838805d..db73bf5a47 100644 --- a/plugins/Clist_nicer/src/clcopts.cpp +++ b/plugins/Clist_nicer/src/clcopts.cpp @@ -76,8 +76,6 @@ static const greyoutValues[] = { { PF2_INVISIBLE, LPGENW("Invisible") },
};
-static UINT sortCtrlIDs[] = { IDC_SORTPRIMARY, IDC_SORTTHEN, IDC_SORTFINALLY, 0 };
-
static void FillCheckBoxTree(HWND hwndTree, const struct CheckBoxValues_t *values, int nValues, DWORD style)
{
TVINSERTSTRUCT tvis;
@@ -145,420 +143,354 @@ void GetDefaultFontSetting(int i, LOGFONT *lf, COLORREF *colour) }
}
-static INT_PTR CALLBACK DlgProcDspGroups(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- {
- SendDlgItemMessage(hwndDlg, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always left"));
- SendDlgItemMessage(hwndDlg, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always right"));
- SendDlgItemMessage(hwndDlg, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Automatic (RTL)"));
+/////////////////////////////////////////////////////////////////////////////////////////
- DWORD exStyle = db_get_dw(0, "CLC", "ExStyle", Clist_GetDefaultExStyle());
- for (auto &it : checkBoxToGroupStyleEx)
- CheckDlgButton(hwndDlg, it.id, (exStyle & it.flag) ^ (it.flag * it.not_t) ? BST_CHECKED : BST_UNCHECKED);
+class CRowItemsBaseDlg : public CDlgBase
+{
+ void OnFinish(CDlgBase*)
+ {
+ Clist_ClcOptionsChanged();
+ PostMessage(g_clistApi.hwndContactList, CLUIINTM_REDRAW, 0, 0);
+ }
- CheckDlgButton(hwndDlg, IDC_NOGROUPICON, (cfg::dat.dwFlags & CLUI_FRAME_NOGROUPICON) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_CENTERGROUPNAMES, db_get_b(0, "CLCExt", "EXBK_CenterGroupnames", 0) ? BST_CHECKED : BST_UNCHECKED);
- SendDlgItemMessage(hwndDlg, IDC_GROUPALIGN, CB_SETCURSEL, cfg::dat.bGroupAlign, 0);
-
- SendDlgItemMessage(hwndDlg, IDC_LEFTMARGINSPIN, UDM_SETRANGE, 0, MAKELONG(64, 0));
- SendDlgItemMessage(hwndDlg, IDC_LEFTMARGINSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "LeftMargin", CLCDEFAULT_LEFTMARGIN));
- SendDlgItemMessage(hwndDlg, IDC_RIGHTMARGINSPIN, UDM_SETRANGE, 0, MAKELONG(64, 0));
- SendDlgItemMessage(hwndDlg, IDC_RIGHTMARGINSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "RightMargin", CLCDEFAULT_LEFTMARGIN));
- SendDlgItemMessage(hwndDlg, IDC_ROWGAPSPIN, UDM_SETRANGE, 0, MAKELONG(10, 0));
- SendDlgItemMessage(hwndDlg, IDC_ROWGAPSPIN, UDM_SETPOS, 0, cfg::dat.bRowSpacing);
- SendDlgItemMessage(hwndDlg, IDC_GROUPINDENTSPIN, UDM_SETRANGE, 0, MAKELONG(50, 0));
- SendDlgItemMessage(hwndDlg, IDC_GROUPINDENTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "GroupIndent", CLCDEFAULT_GROUPINDENT));
- SendDlgItemMessage(hwndDlg, IDC_ROWHEIGHTSPIN, UDM_SETRANGE, 0, MAKELONG(255, 8));
- SendDlgItemMessage(hwndDlg, IDC_ROWHEIGHTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "RowHeight", CLCDEFAULT_ROWHEIGHT));
- SendDlgItemMessage(hwndDlg, IDC_GROUPROWHEIGHTSPIN, UDM_SETRANGE, 0, MAKELONG(255, 8));
- SendDlgItemMessage(hwndDlg, IDC_GROUPROWHEIGHTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "GRowHeight", CLCDEFAULT_ROWHEIGHT));
- SendDlgItemMessage(hwndDlg, IDC_AVATARPADDINGSPIN, UDM_SETRANGE, 0, MAKELONG(10, 0));
- SendDlgItemMessage(hwndDlg, IDC_AVATARPADDINGSPIN, UDM_SETPOS, 0, cfg::dat.avatarPadding);
- }
- return TRUE;
+public:
+ CRowItemsBaseDlg(int iDlg) :
+ CDlgBase(g_plugin, iDlg)
+ {
+ m_OnFinishWizard = Callback(this, &CRowItemsBaseDlg::OnFinish);
+ }
+};
- case WM_COMMAND:
- if ((LOWORD(wParam) == IDC_ROWHEIGHT || LOWORD(wParam) == IDC_AVATARPADDING || LOWORD(wParam) == IDC_ROWGAP || LOWORD(wParam) == IDC_RIGHTMARGIN || LOWORD(wParam) == IDC_LEFTMARGIN || LOWORD(wParam) == IDC_GROUPINDENT || LOWORD(wParam) == IDC_GROUPROWHEIGHT)
- && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
- return 0;
- if (LOWORD(wParam) == IDC_GROUPALIGN && (HIWORD(wParam) != CBN_SELCHANGE || (HWND)lParam != GetFocus()))
- return 0;
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- break;
+/////////////////////////////////////////////////////////////////////////////////////////
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->idFrom) {
- case 0:
- if (((LPNMHDR)lParam)->code == PSN_APPLY) {
- DWORD exStyle = db_get_dw(0, "CLC", "ExStyle", Clist_GetDefaultExStyle());
+static UINT sortCtrlIDs[] = { IDC_SORTPRIMARY, IDC_SORTTHEN, IDC_SORTFINALLY };
- for (auto &it : checkBoxToGroupStyleEx) {
- if ((IsDlgButtonChecked(hwndDlg, it.id) == 0) == it.not_t)
- exStyle |= it.flag;
- else
- exStyle &= ~(it.flag);
- }
- db_set_dw(0, "CLC", "ExStyle", exStyle);
+class CDspItemsDlg : public CRowItemsBaseDlg
+{
+ CCtrlCombo comboAlign;
- cfgSetFlag(hwndDlg, IDC_NOGROUPICON, CLUI_FRAME_NOGROUPICON);
+public:
+ CDspItemsDlg() :
+ CRowItemsBaseDlg(IDD_OPT_DSPITEMS),
+ comboAlign(this, IDC_CLISTALIGN)
+ {
+ }
- db_set_b(0, "CLCExt", "EXBK_CenterGroupnames", IsDlgButtonChecked(hwndDlg, IDC_CENTERGROUPNAMES) ? 1 : 0);
+ bool OnInitDialog() override
+ {
+ for (auto &it : sortCtrlIDs) {
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Nothing"));
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Name"));
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Protocol"));
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Status"));
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Last message"));
+ SendDlgItemMessage(m_hwnd, it, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Message frequency"));
+ }
- LRESULT curSel = SendDlgItemMessage(hwndDlg, IDC_GROUPALIGN, CB_GETCURSEL, 0, 0);
- if (curSel != CB_ERR) {
- cfg::dat.bGroupAlign = (BYTE)curSel;
- db_set_b(0, "CLC", "GroupAlign", cfg::dat.bGroupAlign);
- }
+ comboAlign.AddString(TranslateT("Never"));
+ comboAlign.AddString(TranslateT("Always"));
+ comboAlign.AddString(TranslateT("For RTL only"));
+ comboAlign.AddString(TranslateT("RTL TEXT only"));
- cfg::dat.bRowSpacing = (BYTE)SendDlgItemMessage(hwndDlg, IDC_ROWGAPSPIN, UDM_GETPOS, 0, 0);
- db_set_b(0, "CLC", "RowGap", cfg::dat.bRowSpacing);
+ CheckDlgButton(m_hwnd, IDC_EVENTSONTOP, (cfg::dat.dwFlags & CLUI_STICKYEVENTS) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_DONTSEPARATE, cfg::dat.bDontSeparateOffline ? BST_CHECKED : BST_UNCHECKED);
+ for (int i = 0; i < _countof(sortCtrlIDs); i++)
+ SendDlgItemMessage(m_hwnd, sortCtrlIDs[i], CB_SETCURSEL, cfg::dat.sortOrder[i], 0);
- BOOL translated;
- cfg::dat.avatarPadding = (BYTE)GetDlgItemInt(hwndDlg, IDC_AVATARPADDING, &translated, FALSE);
- g_plugin.setByte("AvatarPadding", cfg::dat.avatarPadding);
+ comboAlign.SetCurSel(cfg::dat.bUseDCMirroring);
+ return true;
+ }
- db_set_b(0, "CLC", "LeftMargin", (BYTE)SendDlgItemMessage(hwndDlg, IDC_LEFTMARGINSPIN, UDM_GETPOS, 0, 0));
- db_set_b(0, "CLC", "RightMargin", (BYTE)SendDlgItemMessage(hwndDlg, IDC_RIGHTMARGINSPIN, UDM_GETPOS, 0, 0));
- db_set_b(0, "CLC", "GroupIndent", (BYTE)SendDlgItemMessage(hwndDlg, IDC_GROUPINDENTSPIN, UDM_GETPOS, 0, 0));
- db_set_b(0, "CLC", "RowHeight", (BYTE)SendDlgItemMessage(hwndDlg, IDC_ROWHEIGHTSPIN, UDM_GETPOS, 0, 0));
- db_set_b(0, "CLC", "GRowHeight", (BYTE)SendDlgItemMessage(hwndDlg, IDC_GROUPROWHEIGHTSPIN, UDM_GETPOS, 0, 0));
- return TRUE;
- }
- break;
+ bool OnApply() override
+ {
+ for (int i = 0; i < _countof(sortCtrlIDs); i++) {
+ LRESULT curSel = SendDlgItemMessage(m_hwnd, sortCtrlIDs[i], CB_GETCURSEL, 0, 0);
+ if (curSel == 0 || curSel == CB_ERR)
+ cfg::dat.sortOrder[i] = 0;
+ else
+ cfg::dat.sortOrder[i] = (BYTE)curSel;
}
- break;
+ g_plugin.setDword("SortOrder", MAKELONG(MAKEWORD(cfg::dat.sortOrder[0], cfg::dat.sortOrder[1]), MAKEWORD(cfg::dat.sortOrder[2], 0)));
+
+ cfg::dat.bDontSeparateOffline = IsDlgButtonChecked(m_hwnd, IDC_DONTSEPARATE) ? 1 : 0;
+ g_plugin.setByte("DontSeparateOffline", (BYTE)cfg::dat.bDontSeparateOffline);
+
+ cfgSetFlag(m_hwnd, IDC_EVENTSONTOP, CLUI_STICKYEVENTS);
+
+ cfg::dat.bUseDCMirroring = comboAlign.GetCurSel();
+ db_set_b(0, "CLC", "MirrorDC", cfg::dat.bUseDCMirroring);
+ return true;
}
- return FALSE;
-}
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////
-static INT_PTR CALLBACK DlgProcDspItems(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+class CDspGroupsDlg : public CRowItemsBaseDlg
{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- {
- for (int i = 0; sortCtrlIDs[i] != 0; i++) {
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Nothing"));
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Name"));
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Protocol"));
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Status"));
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Last message"));
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_INSERTSTRING, -1, (LPARAM)TranslateT("Message frequency"));
- }
- SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Never"));
- SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always"));
- SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("For RTL only"));
- SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("RTL TEXT only"));
- CheckDlgButton(hwndDlg, IDC_EVENTSONTOP, (cfg::dat.dwFlags & CLUI_STICKYEVENTS) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_DONTSEPARATE, cfg::dat.bDontSeparateOffline ? BST_CHECKED : BST_UNCHECKED);
- for (int i = 0; sortCtrlIDs[i] != 0; i++)
- SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_SETCURSEL, cfg::dat.sortOrder[i], 0);
+public:
+ CDspGroupsDlg() :
+ CRowItemsBaseDlg(IDD_OPT_DSPGROUPS)
+ {
+ }
+
+ bool OnInitDialog() override
+ {
+ SendDlgItemMessage(m_hwnd, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always left"));
+ SendDlgItemMessage(m_hwnd, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always right"));
+ SendDlgItemMessage(m_hwnd, IDC_GROUPALIGN, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Automatic (RTL)"));
+
+ DWORD exStyle = db_get_dw(0, "CLC", "ExStyle", Clist_GetDefaultExStyle());
+ for (auto &it : checkBoxToGroupStyleEx)
+ CheckDlgButton(m_hwnd, it.id, (exStyle & it.flag) ^ (it.flag * it.not_t) ? BST_CHECKED : BST_UNCHECKED);
+
+ CheckDlgButton(m_hwnd, IDC_NOGROUPICON, (cfg::dat.dwFlags & CLUI_FRAME_NOGROUPICON) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_CENTERGROUPNAMES, db_get_b(0, "CLCExt", "EXBK_CenterGroupnames", 0) ? BST_CHECKED : BST_UNCHECKED);
+ SendDlgItemMessage(m_hwnd, IDC_GROUPALIGN, CB_SETCURSEL, cfg::dat.bGroupAlign, 0);
+
+ SendDlgItemMessage(m_hwnd, IDC_LEFTMARGINSPIN, UDM_SETRANGE, 0, MAKELONG(64, 0));
+ SendDlgItemMessage(m_hwnd, IDC_LEFTMARGINSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "LeftMargin", CLCDEFAULT_LEFTMARGIN));
+ SendDlgItemMessage(m_hwnd, IDC_RIGHTMARGINSPIN, UDM_SETRANGE, 0, MAKELONG(64, 0));
+ SendDlgItemMessage(m_hwnd, IDC_RIGHTMARGINSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "RightMargin", CLCDEFAULT_LEFTMARGIN));
+ SendDlgItemMessage(m_hwnd, IDC_ROWGAPSPIN, UDM_SETRANGE, 0, MAKELONG(10, 0));
+ SendDlgItemMessage(m_hwnd, IDC_ROWGAPSPIN, UDM_SETPOS, 0, cfg::dat.bRowSpacing);
+ SendDlgItemMessage(m_hwnd, IDC_GROUPINDENTSPIN, UDM_SETRANGE, 0, MAKELONG(50, 0));
+ SendDlgItemMessage(m_hwnd, IDC_GROUPINDENTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "GroupIndent", CLCDEFAULT_GROUPINDENT));
+ SendDlgItemMessage(m_hwnd, IDC_ROWHEIGHTSPIN, UDM_SETRANGE, 0, MAKELONG(255, 8));
+ SendDlgItemMessage(m_hwnd, IDC_ROWHEIGHTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "RowHeight", CLCDEFAULT_ROWHEIGHT));
+ SendDlgItemMessage(m_hwnd, IDC_GROUPROWHEIGHTSPIN, UDM_SETRANGE, 0, MAKELONG(255, 8));
+ SendDlgItemMessage(m_hwnd, IDC_GROUPROWHEIGHTSPIN, UDM_SETPOS, 0, db_get_b(0, "CLC", "GRowHeight", CLCDEFAULT_ROWHEIGHT));
+ SendDlgItemMessage(m_hwnd, IDC_AVATARPADDINGSPIN, UDM_SETRANGE, 0, MAKELONG(10, 0));
+ SendDlgItemMessage(m_hwnd, IDC_AVATARPADDINGSPIN, UDM_SETPOS, 0, cfg::dat.avatarPadding);
+ return true;
+ }
+
+ bool OnApply() override
+ {
+ DWORD exStyle = db_get_dw(0, "CLC", "ExStyle", Clist_GetDefaultExStyle());
- SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_SETCURSEL, cfg::dat.bUseDCMirroring, 0);
+ for (auto &it : checkBoxToGroupStyleEx) {
+ if ((IsDlgButtonChecked(m_hwnd, it.id) == 0) == it.not_t)
+ exStyle |= it.flag;
+ else
+ exStyle &= ~(it.flag);
}
- return TRUE;
+ db_set_dw(0, "CLC", "ExStyle", exStyle);
- case WM_COMMAND:
- if ((LOWORD(wParam) == IDC_SORTPRIMARY || LOWORD(wParam) == IDC_SORTTHEN || LOWORD(wParam) == IDC_SORTFINALLY || LOWORD(wParam) == IDC_CLISTALIGN)
- && (HIWORD(wParam) != CBN_SELCHANGE || (HWND)lParam != GetFocus()))
- return 0;
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- break;
+ cfgSetFlag(m_hwnd, IDC_NOGROUPICON, CLUI_FRAME_NOGROUPICON);
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->idFrom) {
- case 0:
- if (((LPNMHDR)lParam)->code == PSN_APPLY) {
- for (int i = 0; sortCtrlIDs[i] != 0; i++) {
- LRESULT curSel = SendDlgItemMessage(hwndDlg, sortCtrlIDs[i], CB_GETCURSEL, 0, 0);
- if (curSel == 0 || curSel == CB_ERR)
- cfg::dat.sortOrder[i] = 0;
- else
- cfg::dat.sortOrder[i] = (BYTE)curSel;
- }
- g_plugin.setDword("SortOrder", MAKELONG(MAKEWORD(cfg::dat.sortOrder[0], cfg::dat.sortOrder[1]), MAKEWORD(cfg::dat.sortOrder[2], 0)));
-
- cfg::dat.bDontSeparateOffline = IsDlgButtonChecked(hwndDlg, IDC_DONTSEPARATE) ? 1 : 0;
- g_plugin.setByte("DontSeparateOffline", (BYTE)cfg::dat.bDontSeparateOffline);
-
- cfgSetFlag(hwndDlg, IDC_EVENTSONTOP, CLUI_STICKYEVENTS);
-
- cfg::dat.bUseDCMirroring = (BYTE)SendDlgItemMessage(hwndDlg, IDC_CLISTALIGN, CB_GETCURSEL, 0, 0);
- db_set_b(0, "CLC", "MirrorDC", cfg::dat.bUseDCMirroring);
- return TRUE;
- }
- break;
+ db_set_b(0, "CLCExt", "EXBK_CenterGroupnames", IsDlgButtonChecked(m_hwnd, IDC_CENTERGROUPNAMES) ? 1 : 0);
+
+ LRESULT curSel = SendDlgItemMessage(m_hwnd, IDC_GROUPALIGN, CB_GETCURSEL, 0, 0);
+ if (curSel != CB_ERR) {
+ cfg::dat.bGroupAlign = (BYTE)curSel;
+ db_set_b(0, "CLC", "GroupAlign", cfg::dat.bGroupAlign);
}
- break;
+
+ cfg::dat.bRowSpacing = (BYTE)SendDlgItemMessage(m_hwnd, IDC_ROWGAPSPIN, UDM_GETPOS, 0, 0);
+ db_set_b(0, "CLC", "RowGap", cfg::dat.bRowSpacing);
+
+ BOOL translated;
+ cfg::dat.avatarPadding = (BYTE)GetDlgItemInt(m_hwnd, IDC_AVATARPADDING, &translated, FALSE);
+ g_plugin.setByte("AvatarPadding", cfg::dat.avatarPadding);
+
+ db_set_b(0, "CLC", "LeftMargin", (BYTE)SendDlgItemMessage(m_hwnd, IDC_LEFTMARGINSPIN, UDM_GETPOS, 0, 0));
+ db_set_b(0, "CLC", "RightMargin", (BYTE)SendDlgItemMessage(m_hwnd, IDC_RIGHTMARGINSPIN, UDM_GETPOS, 0, 0));
+ db_set_b(0, "CLC", "GroupIndent", (BYTE)SendDlgItemMessage(m_hwnd, IDC_GROUPINDENTSPIN, UDM_GETPOS, 0, 0));
+ db_set_b(0, "CLC", "RowHeight", (BYTE)SendDlgItemMessage(m_hwnd, IDC_ROWHEIGHTSPIN, UDM_GETPOS, 0, 0));
+ db_set_b(0, "CLC", "GRowHeight", (BYTE)SendDlgItemMessage(m_hwnd, IDC_GROUPROWHEIGHTSPIN, UDM_GETPOS, 0, 0));
+ return true;
}
- return FALSE;
-}
+};
/////////////////////////////////////////////////////////////////////////////////////////
static UINT avatar_controls[] = { IDC_ALIGNMENT, IDC_AVATARSBORDER, IDC_AVATARSROUNDED, IDC_AVATARBORDERCLR, IDC_ALWAYSALIGNNICK, IDC_AVATARHEIGHT, IDC_AVATARSIZESPIN, 0 };
-static INT_PTR CALLBACK DlgProcDspAdvanced(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+class CDspAdvancedDlg : public CRowItemsBaseDlg
{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
-
- SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Never"));
- SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always"));
- SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When space allows it"));
- SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When needed"));
+ CCtrlCheck chkLocalTime, chkAvaRound, chkAvaBorder;
+
+public:
+ CDspAdvancedDlg() :
+ CRowItemsBaseDlg(IDD_OPT_DSPADVANCED),
+ chkAvaRound(this, IDC_AVATARSROUNDED),
+ chkAvaBorder(this, IDC_AVATARSBORDER),
+ chkLocalTime(this, IDC_SHOWLOCALTIME)
+ {
+ chkLocalTime.OnChange = Callback(this, &CDspAdvancedDlg::onChange_LocalTime);
+ }
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("With nickname - left"));
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Far left"));
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Far right"));
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("With nickname - right"));
+ bool OnInitDialog() override
+ {
+ SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Never"));
+ SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Always"));
+ SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When space allows it"));
+ SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_INSERTSTRING, -1, (LPARAM)TranslateT("When needed"));
+
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("With nickname - left"));
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Far left"));
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("Far right"));
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_INSERTSTRING, -1, (LPARAM)TranslateT("With nickname - right"));
{
int i = 0;
if (cfg::dat.bAvatarServiceAvail) {
- Utils::enableDlgControl(hwndDlg, IDC_CLISTAVATARS, TRUE);
+ Utils::enableDlgControl(m_hwnd, IDC_CLISTAVATARS, TRUE);
while (avatar_controls[i] != 0)
- Utils::enableDlgControl(hwndDlg, avatar_controls[i++], TRUE);
+ Utils::enableDlgControl(m_hwnd, avatar_controls[i++], TRUE);
}
else {
- Utils::enableDlgControl(hwndDlg, IDC_CLISTAVATARS, FALSE);
+ Utils::enableDlgControl(m_hwnd, IDC_CLISTAVATARS, FALSE);
while (avatar_controls[i] != 0)
- Utils::enableDlgControl(hwndDlg, avatar_controls[i++], FALSE);
+ Utils::enableDlgControl(m_hwnd, avatar_controls[i++], FALSE);
}
}
- CheckDlgButton(hwndDlg, IDC_NOAVATARSOFFLINE, cfg::dat.bNoOfflineAvatars ? BST_CHECKED : BST_UNCHECKED);
- SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_SETCURSEL, cfg::dat.dualRowMode, 0);
- CheckDlgButton(hwndDlg, IDC_CLISTAVATARS, (cfg::dat.dwFlags & CLUI_FRAME_AVATARS) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_NOAVATARSOFFLINE, cfg::dat.bNoOfflineAvatars ? BST_CHECKED : BST_UNCHECKED);
+ SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_SETCURSEL, cfg::dat.dualRowMode, 0);
+ CheckDlgButton(m_hwnd, IDC_CLISTAVATARS, (cfg::dat.dwFlags & CLUI_FRAME_AVATARS) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_AVATARSBORDER, (cfg::dat.dwFlags & CLUI_FRAME_AVATARBORDER) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_AVATARSROUNDED, (cfg::dat.dwFlags & CLUI_FRAME_ROUNDAVATAR) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ALWAYSALIGNNICK, (cfg::dat.dwFlags & CLUI_FRAME_ALWAYSALIGNNICK) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SHOWSTATUSMSG, (cfg::dat.dwFlags & CLUI_FRAME_SHOWSTATUSMSG) ? BST_CHECKED : BST_UNCHECKED);
+ chkAvaBorder.SetState((cfg::dat.dwFlags & CLUI_FRAME_AVATARBORDER) != 0);
+ chkAvaRound.SetState((cfg::dat.dwFlags & CLUI_FRAME_ROUNDAVATAR) != 0);
+ CheckDlgButton(m_hwnd, IDC_ALWAYSALIGNNICK, (cfg::dat.dwFlags & CLUI_FRAME_ALWAYSALIGNNICK) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_SHOWSTATUSMSG, (cfg::dat.dwFlags & CLUI_FRAME_SHOWSTATUSMSG) ? BST_CHECKED : BST_UNCHECKED);
- SendDlgItemMessage(hwndDlg, IDC_AVATARBORDERCLR, CPM_SETCOLOUR, 0, cfg::dat.avatarBorder);
+ SendDlgItemMessage(m_hwnd, IDC_AVATARBORDERCLR, CPM_SETCOLOUR, 0, cfg::dat.avatarBorder);
- SendDlgItemMessage(hwndDlg, IDC_RADIUSSPIN, UDM_SETRANGE, 0, MAKELONG(10, 2));
- SendDlgItemMessage(hwndDlg, IDC_RADIUSSPIN, UDM_SETPOS, 0, cfg::dat.avatarRadius);
+ SendDlgItemMessage(m_hwnd, IDC_RADIUSSPIN, UDM_SETRANGE, 0, MAKELONG(10, 2));
+ SendDlgItemMessage(m_hwnd, IDC_RADIUSSPIN, UDM_SETPOS, 0, cfg::dat.avatarRadius);
- SendDlgItemMessage(hwndDlg, IDC_AVATARSIZESPIN, UDM_SETRANGE, 0, MAKELONG(100, 16));
- SendDlgItemMessage(hwndDlg, IDC_AVATARSIZESPIN, UDM_SETPOS, 0, cfg::dat.avatarSize);
+ SendDlgItemMessage(m_hwnd, IDC_AVATARSIZESPIN, UDM_SETRANGE, 0, MAKELONG(100, 16));
+ SendDlgItemMessage(m_hwnd, IDC_AVATARSIZESPIN, UDM_SETPOS, 0, cfg::dat.avatarSize);
- Utils::enableDlgControl(hwndDlg, IDC_RADIUS, IsDlgButtonChecked(hwndDlg, IDC_AVATARSROUNDED) ? TRUE : FALSE);
- Utils::enableDlgControl(hwndDlg, IDC_RADIUSSPIN, IsDlgButtonChecked(hwndDlg, IDC_AVATARSROUNDED) ? TRUE : FALSE);
- Utils::enableDlgControl(hwndDlg, IDC_AVATARBORDERCLR, IsDlgButtonChecked(hwndDlg, IDC_AVATARSBORDER) ? TRUE : FALSE);
+ onChange_AvatarsBorder(0);
+ onChange_AvatarsRounded(0);
- CheckDlgButton(hwndDlg, IDC_SHOWLOCALTIME, cfg::dat.bShowLocalTime ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT, cfg::dat.bShowLocalTimeSelective ? BST_CHECKED : BST_UNCHECKED);
- Utils::enableDlgControl(hwndDlg, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT, IsDlgButtonChecked(hwndDlg, IDC_SHOWLOCALTIME));
+ chkLocalTime.SetState(cfg::dat.bShowLocalTime);
+ CheckDlgButton(m_hwnd, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT, cfg::dat.bShowLocalTimeSelective ? BST_CHECKED : BST_UNCHECKED);
+ onChange_LocalTime(0);
if (cfg::dat.dwFlags & CLUI_FRAME_AVATARSLEFT)
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_SETCURSEL, 1, 0);
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_SETCURSEL, 1, 0);
else if (cfg::dat.dwFlags & CLUI_FRAME_AVATARSRIGHT)
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_SETCURSEL, 2, 0);
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_SETCURSEL, 2, 0);
else if (cfg::dat.dwFlags & CLUI_FRAME_AVATARSRIGHTWITHNICK)
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_SETCURSEL, 3, 0);
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_SETCURSEL, 3, 0);
else
- SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_SETCURSEL, 0, 0);
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_CLISTAVATARS:
- if ((HWND)lParam != GetFocus())
- return 0;
- break;
-
- case IDC_SHOWLOCALTIME:
- Utils::enableDlgControl(hwndDlg, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT, IsDlgButtonChecked(hwndDlg, IDC_SHOWLOCALTIME));
- break;
-
- case IDC_AVATARSROUNDED:
- Utils::enableDlgControl(hwndDlg, IDC_RADIUS, IsDlgButtonChecked(hwndDlg, IDC_AVATARSROUNDED) ? TRUE : FALSE);
- Utils::enableDlgControl(hwndDlg, IDC_RADIUSSPIN, IsDlgButtonChecked(hwndDlg, IDC_AVATARSROUNDED) ? TRUE : FALSE);
- break;
+ SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_SETCURSEL, 0, 0);
+ return true;
+ }
- case IDC_AVATARSBORDER:
- Utils::enableDlgControl(hwndDlg, IDC_AVATARBORDERCLR, IsDlgButtonChecked(hwndDlg, IDC_AVATARSBORDER) ? TRUE : FALSE);
- break;
+ bool OnApply() override
+ {
+ LRESULT sel = SendDlgItemMessage(m_hwnd, IDC_ALIGNMENT, CB_GETCURSEL, 0, 0);
+ if (sel != CB_ERR) {
+ cfg::dat.dwFlags &= ~(CLUI_FRAME_AVATARSLEFT | CLUI_FRAME_AVATARSRIGHT | CLUI_FRAME_AVATARSRIGHTWITHNICK);
+ if (sel == 1)
+ cfg::dat.dwFlags |= CLUI_FRAME_AVATARSLEFT;
+ else if (sel == 2)
+ cfg::dat.dwFlags |= CLUI_FRAME_AVATARSRIGHT;
+ else if (sel == 3)
+ cfg::dat.dwFlags |= CLUI_FRAME_AVATARSRIGHTWITHNICK;
}
- if ((LOWORD(wParam) == IDC_RADIUS || LOWORD(wParam) == IDC_AVATARHEIGHT) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
- return 0;
- if ((LOWORD(wParam) == IDC_ALIGNMENT || LOWORD(wParam) == IDC_DUALROWMODE) && (HIWORD(wParam) != CBN_SELCHANGE || (HWND)lParam != GetFocus()))
- return 0;
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- break;
- case WM_NOTIFY:
- if (((LPNMHDR)lParam)->code == PSN_APPLY) {
- LRESULT sel = SendDlgItemMessage(hwndDlg, IDC_ALIGNMENT, CB_GETCURSEL, 0, 0);
- if (sel != CB_ERR) {
- cfg::dat.dwFlags &= ~(CLUI_FRAME_AVATARSLEFT | CLUI_FRAME_AVATARSRIGHT | CLUI_FRAME_AVATARSRIGHTWITHNICK);
- if (sel == 1)
- cfg::dat.dwFlags |= CLUI_FRAME_AVATARSLEFT;
- else if (sel == 2)
- cfg::dat.dwFlags |= CLUI_FRAME_AVATARSRIGHT;
- else if (sel == 3)
- cfg::dat.dwFlags |= CLUI_FRAME_AVATARSRIGHTWITHNICK;
- }
-
- cfgSetFlag(hwndDlg, IDC_CLISTAVATARS, CLUI_FRAME_AVATARS);
- cfgSetFlag(hwndDlg, IDC_AVATARSBORDER, CLUI_FRAME_AVATARBORDER);
- cfgSetFlag(hwndDlg, IDC_AVATARSROUNDED, CLUI_FRAME_ROUNDAVATAR);
- cfgSetFlag(hwndDlg, IDC_ALWAYSALIGNNICK, CLUI_FRAME_ALWAYSALIGNNICK);
- cfgSetFlag(hwndDlg, IDC_SHOWSTATUSMSG, CLUI_FRAME_SHOWSTATUSMSG);
+ cfgSetFlag(m_hwnd, IDC_CLISTAVATARS, CLUI_FRAME_AVATARS);
+ cfgSetFlag(m_hwnd, IDC_AVATARSBORDER, CLUI_FRAME_AVATARBORDER);
+ cfgSetFlag(m_hwnd, IDC_AVATARSROUNDED, CLUI_FRAME_ROUNDAVATAR);
+ cfgSetFlag(m_hwnd, IDC_ALWAYSALIGNNICK, CLUI_FRAME_ALWAYSALIGNNICK);
+ cfgSetFlag(m_hwnd, IDC_SHOWSTATUSMSG, CLUI_FRAME_SHOWSTATUSMSG);
- cfg::dat.avatarBorder = SendDlgItemMessage(hwndDlg, IDC_AVATARBORDERCLR, CPM_GETCOLOUR, 0, 0);
- db_set_dw(0, "CLC", "avatarborder", cfg::dat.avatarBorder);
+ cfg::dat.avatarBorder = SendDlgItemMessage(m_hwnd, IDC_AVATARBORDERCLR, CPM_GETCOLOUR, 0, 0);
+ db_set_dw(0, "CLC", "avatarborder", cfg::dat.avatarBorder);
- BOOL translated;
- cfg::dat.avatarRadius = GetDlgItemInt(hwndDlg, IDC_RADIUS, &translated, FALSE);
- db_set_dw(0, "CLC", "avatarradius", cfg::dat.avatarRadius);
+ BOOL translated;
+ cfg::dat.avatarRadius = GetDlgItemInt(m_hwnd, IDC_RADIUS, &translated, FALSE);
+ db_set_dw(0, "CLC", "avatarradius", cfg::dat.avatarRadius);
- cfg::dat.avatarSize = GetDlgItemInt(hwndDlg, IDC_AVATARHEIGHT, &translated, FALSE);
- g_plugin.setWord("AvatarSize", (WORD)cfg::dat.avatarSize);
+ cfg::dat.avatarSize = GetDlgItemInt(m_hwnd, IDC_AVATARHEIGHT, &translated, FALSE);
+ g_plugin.setWord("AvatarSize", (WORD)cfg::dat.avatarSize);
- cfg::dat.bNoOfflineAvatars = IsDlgButtonChecked(hwndDlg, IDC_NOAVATARSOFFLINE) ? TRUE : FALSE;
- g_plugin.setByte("NoOfflineAV", (BYTE)cfg::dat.bNoOfflineAvatars);
+ cfg::dat.bNoOfflineAvatars = IsDlgButtonChecked(m_hwnd, IDC_NOAVATARSOFFLINE) ? TRUE : FALSE;
+ g_plugin.setByte("NoOfflineAV", (BYTE)cfg::dat.bNoOfflineAvatars);
- cfg::dat.bShowLocalTime = IsDlgButtonChecked(hwndDlg, IDC_SHOWLOCALTIME) ? 1 : 0;
- db_set_b(0, "CLC", "ShowLocalTime", (BYTE)cfg::dat.bShowLocalTime);
+ cfg::dat.bShowLocalTime = IsDlgButtonChecked(m_hwnd, IDC_SHOWLOCALTIME) ? 1 : 0;
+ db_set_b(0, "CLC", "ShowLocalTime", (BYTE)cfg::dat.bShowLocalTime);
- cfg::dat.bShowLocalTimeSelective = IsDlgButtonChecked(hwndDlg, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT) ? 1 : 0;
- db_set_b(0, "CLC", "SelectiveLocalTime", (BYTE)cfg::dat.bShowLocalTimeSelective);
+ cfg::dat.bShowLocalTimeSelective = IsDlgButtonChecked(m_hwnd, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT) ? 1 : 0;
+ db_set_b(0, "CLC", "SelectiveLocalTime", (BYTE)cfg::dat.bShowLocalTimeSelective);
- KillTimer(g_clistApi.hwndContactTree, TIMERID_REFRESH);
- if (cfg::dat.bShowLocalTime)
- SetTimer(g_clistApi.hwndContactTree, TIMERID_REFRESH, 65000, nullptr);
+ KillTimer(g_clistApi.hwndContactTree, TIMERID_REFRESH);
+ if (cfg::dat.bShowLocalTime)
+ SetTimer(g_clistApi.hwndContactTree, TIMERID_REFRESH, 65000, nullptr);
- cfg::dat.dualRowMode = (BYTE)SendDlgItemMessage(hwndDlg, IDC_DUALROWMODE, CB_GETCURSEL, 0, 0);
- if (cfg::dat.dualRowMode == CB_ERR)
- cfg::dat.dualRowMode = 0;
- db_set_b(0, "CLC", "DualRowMode", cfg::dat.dualRowMode);
- return TRUE;
- }
- break;
+ cfg::dat.dualRowMode = (BYTE)SendDlgItemMessage(m_hwnd, IDC_DUALROWMODE, CB_GETCURSEL, 0, 0);
+ if (cfg::dat.dualRowMode == CB_ERR)
+ cfg::dat.dualRowMode = 0;
+ db_set_b(0, "CLC", "DualRowMode", cfg::dat.dualRowMode);
+ return true;
}
- return FALSE;
-}
-
-static INT_PTR CALLBACK DlgProcIcons(HWND hwndDlg, UINT msg, WPARAM, LPARAM lParam)
-{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- CheckDlgButton(hwndDlg, IDC_XSTATUSASSTATUS, (cfg::dat.dwFlags & CLUI_FRAME_USEXSTATUSASSTATUS) ? BST_CHECKED : BST_UNCHECKED);
-
- CheckDlgButton(hwndDlg, IDC_SHOWSTATUSICONS, (cfg::dat.dwFlags & CLUI_FRAME_STATUSICONS) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SHOWMETA, (cfg::dat.dwFlags & CLUI_USEMETAICONS) ? BST_CHECKED : BST_UNCHECKED);
-
- CheckDlgButton(hwndDlg, IDC_OVERLAYICONS, (cfg::dat.dwFlags & CLUI_FRAME_OVERLAYICONS) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SELECTIVEICONS, (cfg::dat.dwFlags & CLUI_FRAME_SELECTIVEICONS) ? BST_CHECKED : BST_UNCHECKED);
-
- CheckDlgButton(hwndDlg, IDC_STATUSICONSCENTERED, cfg::dat.bCenterStatusIcons ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_IDLE, db_get_b(0, "CLC", "ShowIdle", CLCDEFAULT_SHOWIDLE) ? BST_CHECKED : BST_UNCHECKED);
- return TRUE;
- case WM_COMMAND:
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- break;
-
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->code) {
- case PSN_APPLY:
- cfgSetFlag(hwndDlg, IDC_SHOWSTATUSICONS, CLUI_FRAME_STATUSICONS);
- cfgSetFlag(hwndDlg, IDC_SHOWMETA, CLUI_USEMETAICONS);
- cfgSetFlag(hwndDlg, IDC_OVERLAYICONS, CLUI_FRAME_OVERLAYICONS);
- cfgSetFlag(hwndDlg, IDC_XSTATUSASSTATUS, CLUI_FRAME_USEXSTATUSASSTATUS);
- cfgSetFlag(hwndDlg, IDC_SELECTIVEICONS, CLUI_FRAME_SELECTIVEICONS);
-
- db_set_b(0, "CLC", "ShowIdle", IsDlgButtonChecked(hwndDlg, IDC_IDLE) ? 1 : 0);
-
- cfg::dat.bCenterStatusIcons = IsDlgButtonChecked(hwndDlg, IDC_STATUSICONSCENTERED) ? 1 : 0;
- db_set_b(0, "CLC", "si_centered", (BYTE)cfg::dat.bCenterStatusIcons);
- return TRUE;
- }
- break;
+ void onChange_LocalTime(CCtrlCheck *)
+ {
+ Utils::enableDlgControl(m_hwnd, IDC_SHOWLOCALTIMEONLYWHENDIFFERENT, IsDlgButtonChecked(m_hwnd, IDC_SHOWLOCALTIME));
}
- return FALSE;
-}
-int ClcOptInit(WPARAM wParam, LPARAM)
-{
- ////////////////////////////////////////////////////////////////////////////
- // Main options tabs
+ void onChange_AvatarsRounded(CCtrlCheck *)
+ {
+ bool bEnable = chkAvaRound.GetState();
+ Utils::enableDlgControl(m_hwnd, IDC_RADIUS, bEnable);
+ Utils::enableDlgControl(m_hwnd, IDC_RADIUSSPIN, bEnable);
+ }
- OPTIONSDIALOGPAGE odp = {};
- odp.position = -1000000000;
- odp.flags = ODPF_BOLDGROUPS;
- odp.szTitle.a = LPGEN("Contact list");
- odp.szTab.a = LPGEN("General");
- odp.pfnDlgProc = DlgProcGenOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLIST);
- g_plugin.addOptions(wParam, &odp);
+ void onChange_AvatarsBorder(CCtrlCheck *)
+ {
+ Utils::enableDlgControl(m_hwnd, IDC_AVATARBORDERCLR, chkAvaBorder.GetState());
+ }
+};
- odp.szTab.a = LPGEN("List layout");
- odp.pfnDlgProc = DlgProcClcMainOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLC);
- g_plugin.addOptions(wParam, &odp);
+/////////////////////////////////////////////////////////////////////////////////////////
- odp.szTab.a = LPGEN("Window");
- odp.pfnDlgProc = DlgProcCluiOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLUI);
- g_plugin.addOptions(wParam, &odp);
+class CDspIconsDlg : public CRowItemsBaseDlg
+{
- odp.szTab.a = LPGEN("Background");
- odp.pfnDlgProc = DlgProcClcBkgOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLCBKG);
- g_plugin.addOptions(wParam, &odp);
+public:
+ CDspIconsDlg() :
+ CRowItemsBaseDlg(IDD_OPT_ICONS)
+ {
+ }
- odp.szTab.a = LPGEN("Status bar");
- odp.pfnDlgProc = DlgProcSBarOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_SBAR);
- g_plugin.addOptions(wParam, &odp);
+ bool OnInitDialog() override
+ {
+ CheckDlgButton(m_hwnd, IDC_XSTATUSASSTATUS, (cfg::dat.dwFlags & CLUI_FRAME_USEXSTATUSASSTATUS) ? BST_CHECKED : BST_UNCHECKED);
- ////////////////////////////////////////////////////////////////////////////
- // Contact rows tabs
+ CheckDlgButton(m_hwnd, IDC_SHOWSTATUSICONS, (cfg::dat.dwFlags & CLUI_FRAME_STATUSICONS) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_SHOWMETA, (cfg::dat.dwFlags & CLUI_USEMETAICONS) ? BST_CHECKED : BST_UNCHECKED);
- odp.position = 0;
- odp.szGroup.a = LPGEN("Contact list");
- odp.szTitle.a = LPGEN("Row items");
- odp.szTab.a = LPGEN("Contacts");
- odp.pfnDlgProc = DlgProcDspItems;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_DSPITEMS);
- odp.flags = ODPF_BOLDGROUPS;
- g_plugin.addOptions(wParam, &odp);
+ CheckDlgButton(m_hwnd, IDC_OVERLAYICONS, (cfg::dat.dwFlags & CLUI_FRAME_OVERLAYICONS) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_SELECTIVEICONS, (cfg::dat.dwFlags & CLUI_FRAME_SELECTIVEICONS) ? BST_CHECKED : BST_UNCHECKED);
- odp.szTab.a = LPGEN("Groups and layout");
- odp.pfnDlgProc = DlgProcDspGroups;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_DSPGROUPS);
- g_plugin.addOptions(wParam, &odp);
+ CheckDlgButton(m_hwnd, IDC_STATUSICONSCENTERED, cfg::dat.bCenterStatusIcons ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_IDLE, db_get_b(0, "CLC", "ShowIdle", CLCDEFAULT_SHOWIDLE) ? BST_CHECKED : BST_UNCHECKED);
+ return true;
+ }
- odp.szTab.a = LPGEN("Advanced");
- odp.pfnDlgProc = DlgProcDspAdvanced;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_DSPADVANCED);
- g_plugin.addOptions(wParam, &odp);
+ bool OnApply() override
+ {
+ cfgSetFlag(m_hwnd, IDC_SHOWSTATUSICONS, CLUI_FRAME_STATUSICONS);
+ cfgSetFlag(m_hwnd, IDC_SHOWMETA, CLUI_USEMETAICONS);
+ cfgSetFlag(m_hwnd, IDC_OVERLAYICONS, CLUI_FRAME_OVERLAYICONS);
+ cfgSetFlag(m_hwnd, IDC_XSTATUSASSTATUS, CLUI_FRAME_USEXSTATUSASSTATUS);
+ cfgSetFlag(m_hwnd, IDC_SELECTIVEICONS, CLUI_FRAME_SELECTIVEICONS);
- odp.szTab.a = LPGEN("Icons");
- odp.pfnDlgProc = DlgProcIcons;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_ICONS);
- g_plugin.addOptions(wParam, &odp);
+ db_set_b(0, "CLC", "ShowIdle", IsDlgButtonChecked(m_hwnd, IDC_IDLE) ? 1 : 0);
- ////////////////////////////////////////////////////////////////////////////
- // Other options
+ cfg::dat.bCenterStatusIcons = IsDlgButtonChecked(m_hwnd, IDC_STATUSICONSCENTERED) ? 1 : 0;
+ db_set_b(0, "CLC", "si_centered", (BYTE)cfg::dat.bCenterStatusIcons);
+ return true;
+ }
+};
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT);
- odp.szGroup.a = LPGEN("Skins");
- odp.szTitle.a = LPGEN("Contact list");
- odp.flags = ODPF_BOLDGROUPS;
- odp.pfnDlgProc = OptionsDlgProc;
- g_plugin.addOptions(wParam, &odp);
- return 0;
-}
+/////////////////////////////////////////////////////////////////////////////////////////
static int opt_clc_main_changed = 0;
@@ -669,6 +601,8 @@ static INT_PTR CALLBACK DlgProcClcMainOpts(HWND hwndDlg, UINT msg, WPARAM wParam return FALSE;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
static int opt_clc_bkg_changed = 0;
static INT_PTR CALLBACK DlgProcClcBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -794,3 +728,73 @@ static INT_PTR CALLBACK DlgProcClcBkgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, }
return FALSE;
}
+
+int ClcOptInit(WPARAM wParam, LPARAM)
+{
+ ////////////////////////////////////////////////////////////////////////////
+ // Main options tabs
+
+ OPTIONSDIALOGPAGE odp = {};
+ odp.position = -1000000000;
+ odp.flags = ODPF_BOLDGROUPS;
+ odp.szTitle.a = LPGEN("Contact list");
+ odp.szTab.a = LPGEN("General");
+ odp.pfnDlgProc = DlgProcGenOpts;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLIST);
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("List layout");
+ odp.pfnDlgProc = DlgProcClcMainOpts;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLC);
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Window");
+ odp.pfnDlgProc = DlgProcCluiOpts;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLUI);
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Background");
+ odp.pfnDlgProc = DlgProcClcBkgOpts;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLCBKG);
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Status bar");
+ odp.pfnDlgProc = DlgProcSBarOpts;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_SBAR);
+ g_plugin.addOptions(wParam, &odp);
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Other options
+
+ odp.position = 0;
+ odp.szGroup.a = LPGEN("Skins");
+ odp.szTitle.a = LPGEN("Contact list");
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT);
+ odp.pfnDlgProc = OptionsDlgProc;
+ g_plugin.addOptions(wParam, &odp);
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Contact rows tabs
+
+ odp.szGroup.a = LPGEN("Contact list");
+ odp.szTitle.a = LPGEN("Row items");
+
+ odp.pfnDlgProc = 0;
+ odp.pszTemplate = 0;
+ odp.szTab.a = LPGEN("Contacts");
+ odp.pDialog = new CDspItemsDlg();
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Groups and layout");
+ odp.pDialog = new CDspGroupsDlg();
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Advanced");
+ odp.pDialog = new CDspAdvancedDlg();
+ g_plugin.addOptions(wParam, &odp);
+
+ odp.szTab.a = LPGEN("Icons");
+ odp.pDialog = new CDspIconsDlg();
+ g_plugin.addOptions(wParam, &odp);
+ return 0;
+}
|