summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-03-30 19:09:34 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-03-30 19:09:34 +0300
commitd1cdf52cb78309f294e84bc1bbc12457b24cb573 (patch)
treea9dba6a70e06aae007411d7884605c41aa617283 /src
parent64303ec8f7d8fd491247a2c06ee133e4f5f3c942 (diff)
another common option removed from dialogs
Diffstat (limited to 'src')
-rw-r--r--src/core/stdclist/res/resource.rc42
-rw-r--r--src/core/stdclist/src/clistopts.cpp233
-rw-r--r--src/core/stdclist/src/resource.h1
-rw-r--r--src/mir_app/res/resource.rc10
-rw-r--r--src/mir_app/src/clc.h5
-rw-r--r--src/mir_app/src/clistevents.cpp2
-rw-r--r--src/mir_app/src/clistopts.cpp7
-rw-r--r--src/mir_app/src/resource.h1
8 files changed, 138 insertions, 163 deletions
diff --git a/src/core/stdclist/res/resource.rc b/src/core/stdclist/res/resource.rc
index c20cb6bfb6..e2db018eeb 100644
--- a/src/core/stdclist/res/resource.rc
+++ b/src/core/stdclist/res/resource.rc
@@ -9,7 +9,6 @@
//
#include <windows.h>
#include <winres.h>
-#include <statusmodes.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
@@ -46,29 +45,27 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
- CONTROL "Sort contacts by name",IDC_SORTBYNAME,"Button",BS_AUTORADIOBUTTON | WS_GROUP,153,14,144,10
- CONTROL "Sort contacts by status",IDC_SORTBYSTATUS,"Button",BS_AUTORADIOBUTTON,153,26,149,10
- CONTROL "Sort contacts by protocol",IDC_SORTBYPROTO,"Button",BS_AUTORADIOBUTTON,153,38,151,10
- CONTROL "Single click interface",IDC_ONECLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,68,150,10
- CONTROL "Always show status in tooltip",IDC_ALWAYSSTATUS,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,152,81,151,11
- CONTROL "Disable icon blinking",IDC_DISABLEBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,95,86,9
- EDITTEXT IDC_BLINKTIME,153,109,35,12,ES_NUMBER
- LTEXT "ms delay",IDC_STMSDELAY,192,110,113,8
- CONTROL "Show",IDC_DONTCYCLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,143,97,10
- COMBOBOX IDC_PRIMARYSTATUS,107,142,78,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Sort contacts by name",IDC_SORTBYNAME,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,14,287,10
+ CONTROL "Sort contacts by status",IDC_SORTBYSTATUS,"Button",BS_AUTORADIOBUTTON,10,26,287,10
+ CONTROL "Sort contacts by protocol",IDC_SORTBYPROTO,"Button",BS_AUTORADIOBUTTON,10,38,287,10
+ CONTROL "Single click interface",IDC_ONECLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,68,298,10
+ CONTROL "Always show status in tooltip",IDC_ALWAYSSTATUS,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,10,81,151,11
+ CONTROL "Disable icon blinking",IDC_DISABLEBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,95,86,9
+ EDITTEXT IDC_BLINKTIME,12,108,35,12,ES_NUMBER
+ CONTROL "Spin5",IDC_BLINKSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,39,107,11,14
+ LTEXT "ms delay",IDC_STMSDELAY,52,111,113,8
+ CONTROL "Show",IDC_DONTCYCLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,143,90,10
+ COMBOBOX IDC_PRIMARYSTATUS,104,142,78,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "icon when statuses differ",IDC_STATIC,189,144,116,8,NOT WS_GROUP
- CONTROL "Cycle icons every",IDC_CYCLE,"Button",BS_AUTORADIOBUTTON,10,160,97,10
- EDITTEXT IDC_CYCLETIME,107,159,30,12,ES_RIGHT | ES_NUMBER
+ CONTROL "Cycle icons every",IDC_CYCLE,"Button",BS_AUTORADIOBUTTON,10,160,89,10
+ EDITTEXT IDC_CYCLETIME,103,159,30,12,ES_RIGHT | ES_NUMBER
CONTROL "Spin1",IDC_CYCLETIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,127,158,10,14
- LTEXT "seconds, when statuses differ",IDC_STATIC,140,161,165,8,NOT WS_GROUP
- CONTROL "Show multiple icons",IDC_MULTITRAY,"Button",BS_AUTORADIOBUTTON,10,177,98,10
+ LTEXT "seconds, when statuses differ",IDC_STATIC,141,161,165,8,NOT WS_GROUP
+ CONTROL "Show multiple icons",IDC_MULTITRAY,"Button",BS_AUTORADIOBUTTON,10,177,91,10
CONTROL "Only when statuses differ",IDC_ALWAYSMULTI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,177,198,10
- GROUPBOX "Contact list",IDC_STCLISTGROUP,2,2,135,126
- GROUPBOX "System tray icon",IDC_STATIC,143,57,169,70
+ GROUPBOX "System tray icon",IDC_STATIC,2,57,310,70
GROUPBOX "System tray icon when using multiple protocols",IDC_STATIC,2,131,310,66
- GROUPBOX "Contact list sorting",IDC_STATIC,143,2,169,54,WS_GROUP
- CONTROL "Spin5",IDC_BLINKSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,173,97,11,21
- CONTROL "Disable icon blinking",IDC_ICONBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,15,97,10
+ GROUPBOX "Contact list sorting",IDC_STATIC,2,2,310,54,WS_GROUP
END
IDD_OPT_CLUI DIALOGEX 0, 0, 313, 245
@@ -230,8 +227,8 @@ BEGIN
BEGIN
LEFTMARGIN, 2
RIGHTMARGIN, 312
- VERTGUIDE, 10
- VERTGUIDE, 107
+ VERTGUIDE, 2
+ VERTGUIDE, 308
TOPMARGIN, 2
BOTTOMMARGIN, 202
HORZGUIDE, 179
@@ -319,7 +316,6 @@ END
BEGIN
"#include <windows.h>\r\n"
"#include <winres.h>\r\n"
- "#include <statusmodes.h>\r\n"
"\0"
END
diff --git a/src/core/stdclist/src/clistopts.cpp b/src/core/stdclist/src/clistopts.cpp
index 12b21edb8a..f0cd516923 100644
--- a/src/core/stdclist/src/clistopts.cpp
+++ b/src/core/stdclist/src/clistopts.cpp
@@ -24,139 +24,109 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
-static INT_PTR CALLBACK DlgProcGenOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+class ClistOptsDlg : public CDlgBase
{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)HookEventMessage(ME_DB_CONTACT_SETTINGCHANGED, hwndDlg, WM_USER + 1));
- CheckDlgButton(hwndDlg, IDC_SORTBYNAME, !g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT)
- && !g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SORTBYSTATUS,
- g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SORTBYPROTO,
- g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
-
- CheckDlgButton(hwndDlg, IDC_ONECLK,
- g_plugin.getByte("Tray1Click", SETTING_TRAY1CLICK_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ALWAYSSTATUS,
- g_plugin.getByte("AlwaysStatus", SETTING_ALWAYSSTATUS_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ALWAYSMULTI,
- !g_plugin.getByte("AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_DONTCYCLE,
- g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_SINGLE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_CYCLE,
- g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_CYCLE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MULTITRAY,
- g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_DISABLEBLINK,
- g_plugin.getByte("DisableTrayFlash", 0) == 1 ? BST_CHECKED : BST_UNCHECKED);
- EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKTIME), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKSPIN), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- EnableWindow(GetDlgItem(hwndDlg, IDC_STMSDELAY), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- CheckDlgButton(hwndDlg, IDC_ICONBLINK, g_plugin.getByte("NoIconBlink", 0) == 1 ? BST_CHECKED : BST_UNCHECKED);
- if (IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIMESPIN), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIME), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_ALWAYSMULTI), FALSE);
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_CYCLE)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_PRIMARYSTATUS), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_ALWAYSMULTI), FALSE);
- }
- if (IsDlgButtonChecked(hwndDlg, IDC_MULTITRAY)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIMESPIN), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIME), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_PRIMARYSTATUS), FALSE);
- }
- SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETRANGE, 0, MAKELONG(120, 1));
- SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_SETPOS, 0, MAKELONG(g_plugin.getWord("CycleTime", SETTING_CYCLETIME_DEFAULT), 0));
- {
- ptrA szPrimaryStatus(g_plugin.getStringA("PrimaryStatus"));
-
- int item = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_ADDSTRING, 0, (LPARAM)TranslateT("Global"));
- SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETITEMDATA, item, (LPARAM)0);
-
- for (auto &pa : Accounts()) {
- if (!pa->IsEnabled() || CallProtoService(pa->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0) == 0)
- continue;
-
- item = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_ADDSTRING, 0, (LPARAM)pa->tszAccountName);
- SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETITEMDATA, item, (LPARAM)pa);
- if (!mir_strcmp(szPrimaryStatus, pa->szModuleName))
- SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETCURSEL, item, 0);
- }
- }
- if (CB_ERR == SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETCURSEL, 0, 0))
- SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_SETCURSEL, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, IDC_BLINKTIME), 0); // set buddy
- SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETRANGE, 0, MAKELONG(0x3FFF, 250));
- SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_SETPOS, 0, MAKELONG(g_plugin.getWord("IconFlashTime", 550), 0));
- return TRUE;
-
- case WM_COMMAND:
- if (LOWORD(wParam) == IDC_DONTCYCLE || LOWORD(wParam) == IDC_CYCLE || LOWORD(wParam) == IDC_MULTITRAY) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_PRIMARYSTATUS), IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE));
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIME), IsDlgButtonChecked(hwndDlg, IDC_CYCLE));
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLETIMESPIN), IsDlgButtonChecked(hwndDlg, IDC_CYCLE));
- EnableWindow(GetDlgItem(hwndDlg, IDC_ALWAYSMULTI), IsDlgButtonChecked(hwndDlg, IDC_MULTITRAY));
- }
- if (LOWORD(wParam) == IDC_DISABLEBLINK) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKTIME), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- EnableWindow(GetDlgItem(hwndDlg, IDC_BLINKSPIN), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- EnableWindow(GetDlgItem(hwndDlg, IDC_STMSDELAY), BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- }
- if (LOWORD(wParam) == IDC_CYCLETIME && HIWORD(wParam) != EN_CHANGE)
- break;
- if (LOWORD(wParam) == IDC_PRIMARYSTATUS && HIWORD(wParam) != CBN_SELCHANGE)
- break;
- if (LOWORD(wParam) == IDC_CYCLETIME && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
- return 0;
- if (LOWORD(wParam) == IDC_BLINKTIME && HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())
- return 0; // dont make apply enabled during buddy set crap
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- break;
-
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->idFrom) {
- case 0:
- switch (((LPNMHDR)lParam)->code) {
- case PSN_APPLY:
- g_bSortByStatus = IsDlgButtonChecked(hwndDlg, IDC_SORTBYSTATUS);
- g_bSortByProto = IsDlgButtonChecked(hwndDlg, IDC_SORTBYPROTO);
-
- g_plugin.setByte("SortByStatus", (BYTE)g_bSortByStatus);
- g_plugin.setByte("SortByProto", (BYTE)g_bSortByProto);
- g_plugin.setByte("Tray1Click", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ONECLK));
- g_plugin.setByte("AlwaysStatus", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ALWAYSSTATUS));
- g_plugin.setByte("AlwaysMulti", (BYTE)!IsDlgButtonChecked(hwndDlg, IDC_ALWAYSMULTI));
- g_plugin.setByte("TrayIcon",
- (BYTE)(IsDlgButtonChecked(hwndDlg, IDC_DONTCYCLE) ? SETTING_TRAYICON_SINGLE
- : (IsDlgButtonChecked(hwndDlg, IDC_CYCLE) ? SETTING_TRAYICON_CYCLE : SETTING_TRAYICON_MULTI)));
- g_plugin.setWord("CycleTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_CYCLETIMESPIN, UDM_GETPOS, 0, 0));
- g_plugin.setWord("IconFlashTime", (WORD)SendDlgItemMessage(hwndDlg, IDC_BLINKSPIN, UDM_GETPOS, 0, 0));
- g_plugin.setByte("DisableTrayFlash", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_DISABLEBLINK));
- g_plugin.setByte("NoIconBlink", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_ICONBLINK));
- {
- int cur = SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETCURSEL, 0, 0);
- PROTOACCOUNT *pa = (PROTOACCOUNT*)SendDlgItemMessage(hwndDlg, IDC_PRIMARYSTATUS, CB_GETITEMDATA, cur, 0);
- if (pa == nullptr)
- g_plugin.delSetting("PrimaryStatus");
- else
- g_plugin.setString("PrimaryStatus", pa->szModuleName);
- }
-
- Clist_TrayIconIconsChanged();
- Clist_LoadContactTree(); /* this won't do job properly since it only really works when changes happen */
- g_clistApi.pfnInvalidateDisplayNameCacheEntry(INVALID_CONTACT_ID); /* force reshuffle */
- return TRUE;
- }
- break;
+ CCtrlSpin cycleTime, blink;
+ CCtrlCombo status;
+ CCtrlCheck sortByName, sortByStatus, sortByProto;
+ CCtrlCheck chkDisableBlink, chkCycle, chkDontCycle, chkMulti;
+
+public:
+ ClistOptsDlg() :
+ CDlgBase(g_plugin, IDD_OPT_CLIST),
+ chkCycle(this, IDC_CYCLE),
+ chkMulti(this, IDC_MULTITRAY),
+ chkDontCycle(this, IDC_DONTCYCLE),
+ blink(this, IDC_BLINKSPIN, 0x3FFF, 250),
+ cycleTime(this, IDC_CYCLETIMESPIN, 120, 1),
+ status(this, IDC_PRIMARYSTATUS),
+ sortByName(this, IDC_SORTBYNAME),
+ sortByProto(this, IDC_SORTBYPROTO),
+ sortByStatus(this, IDC_SORTBYSTATUS),
+ chkDisableBlink(this, IDC_DISABLEBLINK)
+ {
+ chkDisableBlink.OnChange = Callback(this, &ClistOptsDlg::onChange_DisableBlink);
+ chkCycle.OnChange = chkDontCycle.OnChange = chkMulti.OnChange = Callback(this, &ClistOptsDlg::onChange_Tray);
+ }
+
+ bool OnInitDialog() override
+ {
+ sortByName.SetState(!g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT) && !g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT));
+ sortByProto.SetState(g_plugin.getByte("SortByProto", SETTING_SORTBYPROTO_DEFAULT));
+ sortByStatus.SetState(g_plugin.getByte("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT));
+
+ CheckDlgButton(m_hwnd, IDC_ONECLK, g_plugin.getByte("Tray1Click", SETTING_TRAY1CLICK_DEFAULT));
+ CheckDlgButton(m_hwnd, IDC_ALWAYSSTATUS, g_plugin.getByte("AlwaysStatus", SETTING_ALWAYSSTATUS_DEFAULT));
+ CheckDlgButton(m_hwnd, IDC_ALWAYSMULTI, !g_plugin.getByte("AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT));
+
+ int iTrayIcon = g_plugin.getByte("TrayIcon", SETTING_TRAYICON_DEFAULT);
+ chkCycle.SetState(iTrayIcon == SETTING_TRAYICON_CYCLE);
+ chkMulti.SetState(iTrayIcon == SETTING_TRAYICON_MULTI);
+ chkDontCycle.SetState(iTrayIcon == SETTING_TRAYICON_SINGLE);
+ onChange_Tray(0);
+
+ chkDisableBlink.SetState(g_plugin.getBool("DisableTrayFlash", false));
+ onChange_DisableBlink(0);
+
+ blink.SetPosition(g_plugin.getWord("IconFlashTime", 550));
+ cycleTime.SetPosition(g_plugin.getWord("CycleTime", SETTING_CYCLETIME_DEFAULT));
+
+ ptrA szPrimaryStatus(g_plugin.getStringA("PrimaryStatus"));
+
+ status.AddString(TranslateT("Global"));
+ status.SetCurSel(0);
+
+ for (auto &pa : Accounts()) {
+ if (!pa->IsEnabled() || CallProtoService(pa->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0) == 0)
+ continue;
+
+ int item = status.AddString(pa->tszAccountName, (LPARAM)pa);
+ if (!mir_strcmp(szPrimaryStatus, pa->szModuleName))
+ status.SetCurSel(item);
}
- break;
+ return true;
}
- return FALSE;
-}
+
+ bool OnApply() override
+ {
+ g_plugin.setByte("SortByStatus", g_bSortByStatus = sortByStatus.GetState());
+ g_plugin.setByte("SortByProto", g_bSortByProto = sortByProto.GetState());
+ g_plugin.setByte("Tray1Click", IsDlgButtonChecked(m_hwnd, IDC_ONECLK));
+ g_plugin.setByte("AlwaysStatus", IsDlgButtonChecked(m_hwnd, IDC_ALWAYSSTATUS));
+ g_plugin.setByte("AlwaysMulti", !IsDlgButtonChecked(m_hwnd, IDC_ALWAYSMULTI));
+ g_plugin.setByte("TrayIcon", (chkDontCycle.GetState() ? SETTING_TRAYICON_SINGLE : (chkCycle.GetState() ? SETTING_TRAYICON_CYCLE : SETTING_TRAYICON_MULTI)));
+ g_plugin.setWord("CycleTime", cycleTime.GetPosition());
+ g_plugin.setWord("IconFlashTime", blink.GetPosition());
+ g_plugin.setByte("DisableTrayFlash", IsDlgButtonChecked(m_hwnd, IDC_DISABLEBLINK));
+
+ PROTOACCOUNT *pa = (PROTOACCOUNT *)status.GetItemData(status.GetCurSel());
+ if (pa == nullptr)
+ g_plugin.delSetting("PrimaryStatus");
+ else
+ g_plugin.setString("PrimaryStatus", pa->szModuleName);
+
+ Clist_TrayIconIconsChanged();
+ Clist_LoadContactTree();
+ g_clistApi.pfnInvalidateDisplayNameCacheEntry(INVALID_CONTACT_ID);
+ return true;
+ }
+
+ void onChange_Tray(CCtrlCheck *)
+ {
+ EnableWindow(GetDlgItem(m_hwnd, IDC_PRIMARYSTATUS), chkDontCycle.GetState());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CYCLETIME), chkCycle.GetState());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CYCLETIMESPIN), chkCycle.GetState());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_ALWAYSMULTI), chkMulti.GetState());
+ }
+
+ void onChange_DisableBlink(CCtrlCheck *)
+ {
+ bool bEnable = !chkDisableBlink.GetState();
+ EnableWindow(GetDlgItem(m_hwnd, IDC_BLINKTIME), bEnable);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_BLINKSPIN), bEnable);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STMSDELAY), bEnable);
+ }
+};
/****************************************************************************************/
@@ -164,9 +134,8 @@ int CListOptInit(WPARAM wParam, LPARAM)
{
OPTIONSDIALOGPAGE odp = {};
odp.position = -1000000000;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_CLIST);
odp.szTitle.a = LPGEN("Contact list");
- odp.pfnDlgProc = DlgProcGenOpts;
+ odp.pDialog = new ClistOptsDlg();
odp.flags = ODPF_BOLDGROUPS;
g_plugin.addOptions(wParam, &odp);
return 0;
diff --git a/src/core/stdclist/src/resource.h b/src/core/stdclist/src/resource.h
index 92d8716ed6..d25ecb5890 100644
--- a/src/core/stdclist/src/resource.h
+++ b/src/core/stdclist/src/resource.h
@@ -123,7 +123,6 @@
#define IDC_ONDESKTOP 1657
#define IDC_DISABLEDOCKING 1658
#define IDC_WINCOLOUR 1659
-#define IDC_ICONBLINK 1660
#define IDC_STMSDELAY 1661
// Next default values for new objects
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc
index c3890aec81..ef3b779726 100644
--- a/src/mir_app/res/resource.rc
+++ b/src/mir_app/res/resource.rc
@@ -783,8 +783,10 @@ BEGIN
CONTROL "Hide empty groups",IDC_HIDEEMPTYGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,29,124,10
CONTROL "Enable groups",IDC_USEGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,41,124,10
CONTROL "Ask before deleting contacts",IDC_CONFIRMDELETE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,53,124,10
- GROUPBOX "Contact list",IDC_STATIC,6,5,289,77
- CONTROL "Remove temporary contacts on exit",IDC_REMOVETEMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,65,276,10
+ GROUPBOX "Contact list",IDC_STATIC,6,5,289,90
+ CONTROL "Remove temporary contacts on exit",IDC_REMOVETEMP,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,65,276,10
+ CONTROL "Disable icon blinking",IDC_DISABLEICONBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,78,276,10
END
IDD_EMPTY DIALOGEX 0, 0, 212, 131
@@ -793,6 +795,7 @@ CAPTION "Hidden window"
BEGIN
END
+
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
@@ -1101,8 +1104,7 @@ END
1 TEXTINCLUDE
BEGIN
- "#include ""../src/resource.h""\r\n"
- "\0"
+ "..\\src\\resource.h\0"
END
2 TEXTINCLUDE
diff --git a/src/mir_app/src/clc.h b/src/mir_app/src/clc.h
index fc7805ab4a..7e5bbbb19a 100644
--- a/src/mir_app/src/clc.h
+++ b/src/mir_app/src/clc.h
@@ -93,6 +93,11 @@ int GetDropTargetInformation(HWND hwnd, ClcData *dat, POINT pt);
/* clcopts.c */
int ClcOptInit(WPARAM, LPARAM);
+namespace Clist
+{
+ extern CMOption<bool> RemoveTempContacts, DisableIconBlink;
+};
+
/* clistmenus.c */
void RebuildMenuOrder(void);
diff --git a/src/mir_app/src/clistevents.cpp b/src/mir_app/src/clistevents.cpp
index 2455170a4c..19ede131ce 100644
--- a/src/mir_app/src/clistevents.cpp
+++ b/src/mir_app/src/clistevents.cpp
@@ -350,7 +350,7 @@ int InitCListEvents(void)
g_clistApi.events = &g_cliEvents;
disableTrayFlash = db_get_b(0, "CList", "DisableTrayFlash", 0);
- disableIconFlash = db_get_b(0, "CList", "NoIconBlink", 0);
+ disableIconFlash = Clist::DisableIconBlink;
HookEvent(ME_DB_CONTACT_SETTINGCHANGED, CListEventSettingsChanged);
return 0;
diff --git a/src/mir_app/src/clistopts.cpp b/src/mir_app/src/clistopts.cpp
index ed7bf9baad..5678fd1da6 100644
--- a/src/mir_app/src/clistopts.cpp
+++ b/src/mir_app/src/clistopts.cpp
@@ -31,11 +31,12 @@ CMOption<bool> Clist::UseGroups(MODULENAME, "UseGroups", true);
CMOption<bool> Clist::HideOffline(MODULENAME, "HideOffline", false);
CMOption<bool> Clist::ConfirmDelete(MODULENAME, "ConfirmDelete", true);
CMOption<bool> Clist::HideEmptyGroups(MODULENAME, "HideEmptyGroups", false);
+CMOption<bool> Clist::DisableIconBlink(MODULENAME, "NoIconBlink", false);
CMOption<bool> Clist::RemoveTempContacts(MODULENAME, "RemoveTempContacts", true);
class ClistCommonOptsDlg : public CDlgBase
{
- CCtrlCheck chkUseGroups, chkHideOffline, chkConfirmDelete, chkHideEmptyGroups, chkRemoveTempContacts;
+ CCtrlCheck chkUseGroups, chkHideOffline, chkConfirmDelete, chkHideEmptyGroups, chkRemoveTempContacts, chkDisableIconBlink;
public:
ClistCommonOptsDlg() :
@@ -44,12 +45,14 @@ public:
chkHideOffline(this, IDC_HIDEOFFLINE),
chkConfirmDelete(this, IDC_CONFIRMDELETE),
chkHideEmptyGroups(this, IDC_HIDEEMPTYGROUPS),
- chkRemoveTempContacts(this, IDC_REMOVETEMP)
+ chkDisableIconBlink(this, IDC_DISABLEICONBLINK),
+ chkRemoveTempContacts(this, IDC_REMOVETEMP)
{
CreateLink(chkUseGroups, Clist::UseGroups);
CreateLink(chkHideOffline, Clist::HideOffline);
CreateLink(chkConfirmDelete, Clist::ConfirmDelete);
CreateLink(chkHideEmptyGroups, Clist::HideEmptyGroups);
+ CreateLink(chkDisableIconBlink, Clist::DisableIconBlink);
CreateLink(chkRemoveTempContacts, Clist::RemoveTempContacts);
}
diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h
index 781b5bb44a..98992615d5 100644
--- a/src/mir_app/src/resource.h
+++ b/src/mir_app/src/resource.h
@@ -220,6 +220,7 @@
#define IDC_URL 1041
#define IDC_FONTGROUP 1042
#define IDC_TXT_SIMPLE 1043
+#define IDC_DISABLEICONBLINK 1044
#define IDC_BTN_RESET 1045
#define IDC_REASON 1046
#define IDC_BTN_UNDO 1047