summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/stdclist/res/resource.rc59
-rw-r--r--src/core/stdclist/src/clistopts.cpp38
-rw-r--r--src/core/stdclist/src/contact.cpp6
-rw-r--r--src/core/stdclist/src/init.cpp7
-rw-r--r--src/core/stdclist/src/resource.h7
-rw-r--r--src/core/stdclist/src/stdafx.h2
-rw-r--r--src/mir_app/res/resource.rc15
-rw-r--r--src/mir_app/res/version.rc1
-rw-r--r--src/mir_app/src/clc.h4
-rw-r--r--src/mir_app/src/clistevents.cpp30
-rw-r--r--src/mir_app/src/clistopts.cpp29
-rw-r--r--src/mir_app/src/clisttray.cpp34
-rw-r--r--src/mir_app/src/copyright.h2
-rw-r--r--src/mir_app/src/resource.h7
-rw-r--r--src/mir_app/src/stdafx.h1
15 files changed, 126 insertions, 116 deletions
diff --git a/src/core/stdclist/res/resource.rc b/src/core/stdclist/res/resource.rc
index 45f06891dc..22ccc72edc 100644
--- a/src/core/stdclist/res/resource.rc
+++ b/src/core/stdclist/res/resource.rc
@@ -45,27 +45,22 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
+ GROUPBOX "Contact list sorting",IDC_STATIC,2,2,310,68,WS_GROUP
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 "Disable icon blinking",IDC_DISABLEBLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,86,86,9
- EDITTEXT IDC_BLINKTIME,12,99,35,12,ES_NUMBER
- CONTROL "Spin5",IDC_BLINKSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,43,99,11,14
- LTEXT "ms delay",IDC_STMSDELAY,52,102,113,8
- CONTROL "Show",IDC_DONTCYCLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,133,90,10
- COMBOBOX IDC_PRIMARYSTATUS,104,132,78,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- LTEXT "icon when statuses differ",IDC_STATIC,189,134,116,8,NOT WS_GROUP
- CONTROL "Cycle icons every",IDC_CYCLE,"Button",BS_AUTORADIOBUTTON,10,150,89,10
- EDITTEXT IDC_CYCLETIME,103,149,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,133,10,14
- LTEXT "seconds, when statuses differ",IDC_STATIC,141,151,165,8,NOT WS_GROUP
- CONTROL "Show multiple icons",IDC_MULTITRAY,"Button",BS_AUTORADIOBUTTON,10,167,91,10
- CONTROL "Only when statuses differ",IDC_ALWAYSMULTI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,167,198,10
- GROUPBOX "System tray icon",IDC_STATIC,2,72,310,47
- GROUPBOX "System tray icon when using multiple protocols",IDC_STATIC,2,121,310,61
- GROUPBOX "Contact list sorting",IDC_STATIC,2,2,310,68,WS_GROUP
- CONTROL "Don't move offline user to bottom",IDC_NOOFFLINEMOVE,
+ CONTROL "Move offline users to bottom",IDC_MOVE_OFFLINE_BOTTOM,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,53,287,10
+ CONTROL "Show",IDC_DONTCYCLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,10,83,90,10
+ COMBOBOX IDC_PRIMARYSTATUS,104,82,78,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "icon when statuses differ",IDC_STATIC,189,84,116,8,NOT WS_GROUP
+ CONTROL "Cycle icons every",IDC_CYCLE,"Button",BS_AUTORADIOBUTTON,10,100,89,10
+ EDITTEXT IDC_CYCLETIME,103,99,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,98,11,14
+ LTEXT "seconds, when statuses differ",IDC_STATIC,141,101,165,8,NOT WS_GROUP
+ CONTROL "Show multiple icons",IDC_MULTITRAY,"Button",BS_AUTORADIOBUTTON,10,117,91,10
+ CONTROL "Only when statuses differ",IDC_ALWAYSMULTI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,117,198,10
+ GROUPBOX "System tray icon when using multiple protocols",IDC_STATIC,2,71,310,61
END
IDD_OPT_CLUI DIALOGEX 0, 0, 313, 233
@@ -129,7 +124,7 @@ BEGIN
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,59,179,10
CONTROL "Make selection highlight translucent",IDC_NOTNOTRANSLUCENTSEL,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,71,179,10
- CONTROL "Dim idle contacts",IDC_IDLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,83,155,10
+ CONTROL "Dim idle contacts",IDC_IDLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,83,153,10
GROUPBOX "Groups",IDC_STATIC,2,99,148,117
CONTROL "Draw a line alongside group names",IDC_LINEWITHGROUPS,
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,9,109,131,16
@@ -142,26 +137,26 @@ BEGIN
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,9,181,131,16
LTEXT "Indent groups by:",IDC_STATIC,9,201,67,8
EDITTEXT IDC_GROUPINDENT,78,199,31,12,ES_RIGHT | ES_NUMBER
- CONTROL "Spin1",IDC_GROUPINDENTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,103,204,10,14
+ CONTROL "Spin1",IDC_GROUPINDENTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,103,198,10,14
LTEXT "pixels",IDC_STATIC,112,201,36,8
GROUPBOX "Visual",IDC_STATIC,156,99,156,131
- CONTROL "Scroll list smoothly",IDC_NOTNOSMOOTHSCROLLING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,110,139,10
+ CONTROL "Scroll list smoothly",IDC_NOTNOSMOOTHSCROLLING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,110,139,10
LTEXT "Time:",IDC_STATIC11,174,122,42,8
EDITTEXT IDC_SMOOTHTIME,216,120,31,12,ES_RIGHT | ES_NUMBER
- CONTROL "Spin1",IDC_SMOOTHTIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,126,10,14
+ CONTROL "Spin1",IDC_SMOOTHTIMESPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,119,10,14
LTEXT "milliseconds",IDC_STATIC12,250,122,56,8,SS_CENTERIMAGE
- CONTROL "Hide vertical scroll bar",IDC_NOSCROLLBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,135,140,10
- LTEXT "Left margin:",IDC_STATIC,164,148,51,8
+ CONTROL "Hide vertical scroll bar",IDC_NOSCROLLBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,135,140,10
+ LTEXT "Left margin:",IDC_STATIC,162,148,51,8
EDITTEXT IDC_LEFTMARGIN,215,146,31,12,ES_RIGHT | ES_NUMBER
- CONTROL "Spin1",IDC_LEFTMARGINSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,152,10,14
+ CONTROL "Spin1",IDC_LEFTMARGINSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,145,10,14
LTEXT "pixels",IDC_STATIC,250,148,54,8
- LTEXT "Row height:",IDC_STATIC,164,163,51,8
+ LTEXT "Row height:",IDC_STATIC,162,163,51,8
EDITTEXT IDC_ROWHEIGHT,215,161,31,12,ES_RIGHT | ES_NUMBER
- CONTROL "Spin1",IDC_ROWHEIGHTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,167,10,14
+ CONTROL "Spin1",IDC_ROWHEIGHTSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,240,161,10,14
LTEXT "pixels",IDC_STATIC,250,163,54,8
- CONTROL "Gamma correction",IDC_GAMMACORRECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,174,140,10
- CONTROL "Gray out entire list when:",IDC_GREYOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,185,139,10
- CONTROL "Tree1",IDC_GREYOUTOPTS,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,164,195,141,32
+ CONTROL "Gamma correction",IDC_GAMMACORRECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,174,140,10
+ CONTROL "Gray out entire list when:",IDC_GREYOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,185,139,10
+ CONTROL "Tree1",IDC_GREYOUTOPTS,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,162,195,141,32
END
IDD_OPT_CLCBKG DIALOGEX 0, 0, 235, 154
@@ -257,13 +252,9 @@ BEGIN
LEFTMARGIN, 2
RIGHTMARGIN, 312
VERTGUIDE, 9
- VERTGUIDE, 164
- VERTGUIDE, 216
+ VERTGUIDE, 162
TOPMARGIN, 2
BOTTOMMARGIN, 232
- HORZGUIDE, 145
- HORZGUIDE, 163
- HORZGUIDE, 222
END
IDD_OPT_CLCBKG, DIALOG
diff --git a/src/core/stdclist/src/clistopts.cpp b/src/core/stdclist/src/clistopts.cpp
index 7a269a8a8b..29683b6506 100644
--- a/src/core/stdclist/src/clistopts.cpp
+++ b/src/core/stdclist/src/clistopts.cpp
@@ -26,10 +26,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
class ClistOptsDlg : public CDlgBase
{
- CCtrlSpin cycleTime, blink;
+ CCtrlSpin cycleTime;
CCtrlCombo status;
CCtrlCheck sortByName, sortByStatus, sortByProto, chkOfflineBottom;
- CCtrlCheck chkDisableBlink, chkCycle, chkDontCycle, chkMulti;
+ CCtrlCheck chkCycle, chkDontCycle, chkMulti;
public:
ClistOptsDlg() :
@@ -37,16 +37,13 @@ public:
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),
- chkOfflineBottom(this, IDC_NOOFFLINEMOVE)
+ chkOfflineBottom(this, IDC_MOVE_OFFLINE_BOTTOM)
{
- chkDisableBlink.OnChange = Callback(this, &ClistOptsDlg::onChange_DisableBlink);
chkCycle.OnChange = chkDontCycle.OnChange = chkMulti.OnChange = Callback(this, &ClistOptsDlg::onChange_Tray);
}
@@ -64,9 +61,6 @@ public:
chkMulti.SetState(iTrayIcon == SETTING_TRAYICON_MULTI);
chkDontCycle.SetState(iTrayIcon == SETTING_TRAYICON_SINGLE);
- chkDisableBlink.SetState(g_plugin.getBool("DisableTrayFlash", false));
-
- blink.SetPosition(g_plugin.getWord("IconFlashTime", 550));
cycleTime.SetPosition(g_plugin.getWord("CycleTime", SETTING_CYCLETIME_DEFAULT));
ptrA szPrimaryStatus(g_plugin.getStringA("PrimaryStatus"));
@@ -87,14 +81,12 @@ public:
bool OnApply() override
{
- g_plugin.setByte("SortByStatus", g_bSortByStatus = sortByStatus.GetState());
- g_plugin.setByte("SortByProto", g_bSortByProto = sortByProto.GetState());
- g_plugin.setByte("NoOfflineBottom", g_bNoOfflineBottom = chkOfflineBottom.GetState());
+ g_plugin.setByte("SortByStatus", g_bSortByStatus = sortByStatus.IsChecked());
+ g_plugin.setByte("SortByProto", g_bSortByProto = sortByProto.IsChecked());
+ g_plugin.setByte("OfflineBottom", g_bOfflineToBottom = chkOfflineBottom.IsChecked());
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.setByte("TrayIcon", (chkDontCycle.IsChecked() ? SETTING_TRAYICON_SINGLE : (chkCycle.IsChecked() ? 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.GetCurData();
if (pa == nullptr)
@@ -110,18 +102,10 @@ public:
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);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_PRIMARYSTATUS), chkDontCycle.IsChecked());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CYCLETIME), chkCycle.IsChecked());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CYCLETIMESPIN), chkCycle.IsChecked());
+ EnableWindow(GetDlgItem(m_hwnd, IDC_ALWAYSMULTI), chkMulti.IsChecked());
}
};
diff --git a/src/core/stdclist/src/contact.cpp b/src/core/stdclist/src/contact.cpp
index c72da2c0fd..daba1cdc61 100644
--- a/src/core/stdclist/src/contact.cpp
+++ b/src/core/stdclist/src/contact.cpp
@@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
-bool g_bSortByStatus, g_bSortByProto, g_bNoOfflineBottom;
+bool g_bSortByStatus, g_bSortByProto, g_bOfflineToBottom;
const struct
{
@@ -80,8 +80,8 @@ int CompareContacts(const ClcContact* c1, const ClcContact* c2)
return ordera - orderb;
}
else {
- //one is offline: offline goes below online
- if (!g_bNoOfflineBottom)
+ // one is offline: offline goes below online
+ if (g_bOfflineToBottom)
if ((statusa == ID_STATUS_OFFLINE) != (statusb == ID_STATUS_OFFLINE))
return 2 * (statusa == ID_STATUS_OFFLINE) - 1;
}
diff --git a/src/core/stdclist/src/init.cpp b/src/core/stdclist/src/init.cpp
index 46745f0361..3ca412c5f7 100644
--- a/src/core/stdclist/src/init.cpp
+++ b/src/core/stdclist/src/init.cpp
@@ -107,9 +107,14 @@ static INT_PTR GetStatusMode(WPARAM, LPARAM)
int CMPlugin::Load()
{
+ if (g_plugin.getBool("NoOfflineBottom")) {
+ g_plugin.setByte("OfflineBottom", false);
+ g_plugin.delSetting("NoOfflineBottom");
+ }
+
g_bSortByStatus = g_plugin.getBool("SortByStatus", SETTING_SORTBYSTATUS_DEFAULT);
g_bSortByProto = g_plugin.getBool("SortByProto", SETTING_SORTBYPROTO_DEFAULT);
- g_bNoOfflineBottom = g_plugin.getBool("NoOfflineBottom");
+ g_bOfflineToBottom = g_plugin.getBool("OfflineBottom", true);
Clist_GetInterface();
coreCli = g_clistApi;
diff --git a/src/core/stdclist/src/resource.h b/src/core/stdclist/src/resource.h
index 6f22f577d9..6e4960668e 100644
--- a/src/core/stdclist/src/resource.h
+++ b/src/core/stdclist/src/resource.h
@@ -109,9 +109,6 @@
#define IDC_TOPLINE 1535
#define IDC_HOTKEYURLSTR 1567
#define IDC_BRINGTOFRONT 1579
-#define IDC_BLINKTIME 1607
-#define IDC_BLINKSPIN 1608
-#define IDC_DISABLEBLINK 1609
#define IDC_IDLE 1610
#define IDC_SBPANELBEVEL 1611
#define IDC_DROPSHADOW 1612
@@ -120,9 +117,7 @@
#define IDC_ONDESKTOP 1657
#define IDC_DISABLEDOCKING 1658
#define IDC_WINCOLOUR 1659
-#define IDC_STMSDELAY 1661
-#define IDC_CHECK1 1662
-#define IDC_NOOFFLINEMOVE 1662
+#define IDC_MOVE_OFFLINE_BOTTOM 1662
// Next default values for new objects
//
diff --git a/src/core/stdclist/src/stdafx.h b/src/core/stdclist/src/stdafx.h
index 03c9854f24..d50af5e471 100644
--- a/src/core/stdclist/src/stdafx.h
+++ b/src/core/stdclist/src/stdafx.h
@@ -64,6 +64,6 @@ struct CMPlugin : public PLUGIN<CMPlugin>
// shared vars
extern CLIST_INTERFACE coreCli;
-extern bool g_bSortByStatus, g_bSortByProto, g_bNoOfflineBottom;
+extern bool g_bSortByStatus, g_bSortByProto, g_bOfflineToBottom;
void LoadClcOptions(HWND hwnd, struct ClcData *dat, BOOL bFirst);
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc
index 099e9a58ed..d1db48df72 100644
--- a/src/mir_app/res/resource.rc
+++ b/src/mir_app/res/resource.rc
@@ -797,12 +797,16 @@ BEGIN
CONTROL "Remove temporary contacts on exit",IDC_REMOVETEMP,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,65,166,10
CONTROL "Enable icon blinking",IDC_ENABLE_ICON_BLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,77,166,10
- CONTROL "Search works as filter",IDC_FILTER_SEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,89,166,10
+ CONTROL "Search works as filter",IDC_FILTER_SEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,89,166,10
CTEXT "'Hide offline' means to hide:",IDC_STATIC,183,14,105,8
CONTROL "",IDC_HIDEOFFLINEOPTS,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_NONEVENHEIGHT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,183,24,105,104
- GROUPBOX "Tray",IDC_STATIC,6,135,289,39
- CONTROL "Single click interface",IDC_ONECLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,145,276,10
- CONTROL "Always show status in tooltip",IDC_ALWAYSSTATUS,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,14,159,276,11
+ GROUPBOX "Tray",IDC_STATIC,6,135,289,77
+ CONTROL "Enable icon blinking",IDC_ENABLE_TRAY_BLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,148,276,10
+ EDITTEXT IDC_BLINKTIME,29,160,35,12,ES_NUMBER
+ CONTROL "",IDC_BLINKSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,54,162,11,14
+ LTEXT "ms delay",IDC_STATIC,69,162,113,8
+ CONTROL "Single click interface",IDC_ONECLK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,176,276,10
+ CONTROL "Always show status in tooltip",IDC_ALWAYSSTATUS,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,13,190,276,11
END
IDD_OPT_CHAT_EVENTS DIALOGEX 0, 0, 306, 201
@@ -981,6 +985,7 @@ BEGIN
LTEXT "(Setting timeout to 0 means default setting and -1 means indefinite time)",IDC_STATIC,33,151,207,17
END
+
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
@@ -1214,7 +1219,7 @@ BEGIN
IDD_OPT_CLIST, DIALOG
BEGIN
- BOTTOMMARGIN, 165
+ BOTTOMMARGIN, 212
END
IDD_OPT_CHAT_EVENTS, DIALOG
diff --git a/src/mir_app/res/version.rc b/src/mir_app/res/version.rc
index f697a9c6a7..5fd3761a4e 100644
--- a/src/mir_app/res/version.rc
+++ b/src/mir_app/res/version.rc
@@ -6,6 +6,7 @@
#include <winres.h>
#include "../include/m_version.h"
+#include "../src/copyright.h"
#include "../src/resource.h"
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/mir_app/src/clc.h b/src/mir_app/src/clc.h
index 139ccaceee..d57ec3b1ab 100644
--- a/src/mir_app/src/clc.h
+++ b/src/mir_app/src/clc.h
@@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#pragma once
+#define MODULENAME "CList"
+
struct ClcContact : public ClcContactBase
{
};
@@ -95,7 +97,7 @@ int ClcOptInit(WPARAM, LPARAM);
namespace Clist
{
- extern CMOption<bool> RemoveTempContacts, DisableIconBlink;
+ extern CMOption<bool> RemoveTempContacts, EnableIconBlink, EnableTrayFlash;
};
/* clistmenus.c */
diff --git a/src/mir_app/src/clistevents.cpp b/src/mir_app/src/clistevents.cpp
index 66699bbb9f..0533b5b1c7 100644
--- a/src/mir_app/src/clistevents.cpp
+++ b/src/mir_app/src/clistevents.cpp
@@ -49,8 +49,8 @@ static OBJLIST<CListImlIcon> arImlIcons(10, CompareImlIcons);
static UINT_PTR flashTimerId;
static int iconsOn;
-static int disableTrayFlash;
-static int disableIconFlash;
+static bool g_bEnableTrayFlash;
+static bool g_bEnableIconFlash;
static volatile long iEventOrder = 0;
/////////////////////////////////////////////////////////////////////////////////////////
@@ -89,7 +89,7 @@ int fnGetImlIconIndex(HICON hIcon)
static void ShowOneEventInTray(const CListEvent &ev)
{
- TrayIconUpdateWithImageList((iconsOn || disableTrayFlash) ? ev.imlIconIndex : 0, ev.szTooltip.w, GetEventProtocol(ev));
+ TrayIconUpdateWithImageList((iconsOn || !g_bEnableTrayFlash) ? ev.imlIconIndex : 0, ev.szTooltip.w, GetEventProtocol(ev));
}
static void ShowEventsInTray()
@@ -138,7 +138,7 @@ static VOID CALLBACK IconFlashTimer(HWND, UINT, UINT_PTR idEvent, DWORD)
if (g_cliEvents[j].hContact == e.hContact)
break;
if (j >= i)
- Clist_ChangeContactIcon(e.hContact, iconsOn || disableIconFlash ? e.imlIconIndex : 0);
+ Clist_ChangeContactIcon(e.hContact, iconsOn || !g_bEnableTrayFlash ? e.imlIconIndex : 0);
// decrease eflashes in any case - no need to collect all events
if (e.flags & CLEF_ONLYAFEW)
@@ -335,10 +335,10 @@ static int CListEventSettingsChanged(WPARAM hContact, LPARAM lParam)
{
DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam;
if (hContact == 0 && cws && cws->szModule && cws->szSetting && strcmp(cws->szModule, "CList") == 0) {
- if (strcmp(cws->szSetting, "DisableTrayFlash") == 0)
- disableTrayFlash = (int)cws->value.bVal;
- else if (strcmp(cws->szSetting, "NoIconBlink") == 0)
- disableIconFlash = (int)cws->value.bVal;
+ if (strcmp(cws->szSetting, "EnableTrayFlash") == 0)
+ g_bEnableTrayFlash = (int)cws->value.bVal;
+ else if (strcmp(cws->szSetting, "EnableIconBlink") == 0)
+ g_bEnableIconFlash = (int)cws->value.bVal;
}
return 0;
}
@@ -349,8 +349,18 @@ int InitCListEvents(void)
{
g_clistApi.events = &g_cliEvents;
- disableTrayFlash = db_get_b(0, "CList", "DisableTrayFlash", 0);
- disableIconFlash = Clist::DisableIconBlink;
+ if (db_get_b(0, MODULENAME, "DisableTrayFlash")) {
+ Clist::EnableTrayFlash = false;
+ db_unset(0, MODULENAME, "DisableTrayFlash");
+ }
+
+ if (db_get_b(0, MODULENAME, "DisableIconBlink")) {
+ Clist::EnableIconBlink = false;
+ db_unset(0, MODULENAME, "DisableIconBlink");
+ }
+
+ g_bEnableTrayFlash = Clist::EnableTrayFlash;
+ g_bEnableIconFlash = Clist::EnableIconBlink;
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 ad34053cb2..169ee85b6b 100644
--- a/src/mir_app/src/clistopts.cpp
+++ b/src/mir_app/src/clistopts.cpp
@@ -25,13 +25,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
#include "clc.h"
-#define MODULENAME "CList"
-
CMOption<bool> Clist::UseGroups(MODULENAME, "UseGroups", true);
CMOption<bool> Clist::HideOffline(MODULENAME, "HideOffline", false);
CMOption<bool> Clist::ConfirmDelete(MODULENAME, "ConfirmDelete", true);
+CMOption<bool> Clist::EnableIconBlink(MODULENAME, "EnableIconBlink", true);
+CMOption<bool> Clist::EnableTrayFlash(MODULENAME, "EnableTrayFlash", true);
CMOption<bool> Clist::HideEmptyGroups(MODULENAME, "HideEmptyGroups", false);
-CMOption<bool> Clist::DisableIconBlink(MODULENAME, "NoIconBlink", false);
CMOption<bool> Clist::RemoveTempContacts(MODULENAME, "RemoveTempContacts", true);
CMOption<bool> Clist::Tray1Click(MODULENAME, "Tray1Click", IsWinVer7Plus());
@@ -61,13 +60,15 @@ static const offlineValues[] =
class ClistCommonOptsDlg : public CDlgBase
{
+ CCtrlSpin blink;
CCtrlCheck chkUseGroups, chkHideOffline, chkConfirmDelete, chkHideEmptyGroups, chkRemoveTempContacts, chkEnableIconBlink, chkFilterSearch;
- CCtrlCheck chkAlwaysStatus, chkOneClick;
+ CCtrlCheck chkAlwaysStatus, chkOneClick, chkEnableTrayBlink;
CCtrlTreeView hideStatuses;
public:
ClistCommonOptsDlg() :
CDlgBase(g_plugin, IDD_OPT_CLIST),
+ blink(this, IDC_BLINKSPIN, 0x3FFF, 250),
hideStatuses(this, IDC_HIDEOFFLINEOPTS),
chkOneClick(this, IDC_ONECLK),
chkUseGroups(this, IDC_USEGROUPS),
@@ -77,8 +78,11 @@ public:
chkConfirmDelete(this, IDC_CONFIRMDELETE),
chkHideEmptyGroups(this, IDC_HIDEEMPTYGROUPS),
chkEnableIconBlink(this, IDC_ENABLE_ICON_BLINK),
+ chkEnableTrayBlink(this, IDC_ENABLE_TRAY_BLINK),
chkRemoveTempContacts(this, IDC_REMOVETEMP)
{
+ chkEnableTrayBlink.OnChange = Callback(this, &ClistCommonOptsDlg::onChange_TrayBlink);
+
CreateLink(chkOneClick, Clist::Tray1Click);
CreateLink(chkUseGroups, Clist::UseGroups);
CreateLink(chkHideOffline, Clist::HideOffline);
@@ -86,16 +90,18 @@ public:
CreateLink(chkAlwaysStatus, Clist::TrayAlwaysStatus);
CreateLink(chkConfirmDelete, Clist::ConfirmDelete);
CreateLink(chkHideEmptyGroups, Clist::HideEmptyGroups);
+ CreateLink(chkEnableIconBlink, Clist::EnableIconBlink);
+ CreateLink(chkEnableTrayBlink, Clist::EnableTrayFlash);
CreateLink(chkRemoveTempContacts, Clist::RemoveTempContacts);
}
bool OnInitDialog() override
{
+ blink.SetPosition(db_get_w(0, MODULENAME, "IconFlashTime", 550));
+
SetWindowLongPtr(hideStatuses.GetHwnd(), GWL_STYLE,
GetWindowLongPtr(hideStatuses.GetHwnd(), GWL_STYLE) | TVS_NOHSCROLL | TVS_CHECKBOXES);
- chkEnableIconBlink.SetState(!Clist::DisableIconBlink);
-
int style = Clist::OfflineModes;
TVINSERTSTRUCT tvis;
@@ -114,6 +120,8 @@ public:
bool OnApply() override
{
+ db_set_w(0, MODULENAME, "IconFlashTime", blink.GetPosition());
+
uint32_t flags = 0;
TVITEMEX tvi;
@@ -127,13 +135,18 @@ public:
}
Clist::OfflineModes = flags;
- Clist::DisableIconBlink = !chkEnableIconBlink.IsChecked();
-
Clist_ClcOptionsChanged();
Clist_LoadContactTree();
Clist_InitAutoRebuild(g_clistApi.hwndContactTree);
return true;
}
+
+ void onChange_TrayBlink(CCtrlCheck*)
+ {
+ bool bEnabled = chkEnableTrayBlink.IsChecked();
+ EnableWindow(GetDlgItem(m_hwnd, IDC_BLINKTIME), bEnabled);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_BLINKSPIN), bEnabled);
+ }
};
int ClcOptInit(WPARAM wParam, LPARAM)
diff --git a/src/mir_app/src/clisttray.cpp b/src/mir_app/src/clisttray.cpp
index 213b3cdc89..9d4137748b 100644
--- a/src/mir_app/src/clisttray.cpp
+++ b/src/mir_app/src/clisttray.cpp
@@ -232,11 +232,11 @@ int fnTrayIconInit(HWND hwnd)
if (netProtoCount) {
g_clistApi.trayIcon = (trayIconInfo_t*)mir_calloc(sizeof(trayIconInfo_t) * g_arAccounts.getCount());
- int trayIconSetting = db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT);
+ int trayIconSetting = db_get_b(0, MODULENAME, "TrayIcon", SETTING_TRAYICON_DEFAULT);
if (trayIconSetting == SETTING_TRAYICON_SINGLE) {
DBVARIANT dbv = { DBVT_DELETED };
char *szProto;
- if (!db_get_s(0, "CList", "PrimaryStatus", &dbv) && (averageMode < 0 || db_get_b(0, "CList", "AlwaysPrimary", 0)))
+ if (!db_get_s(0, MODULENAME, "PrimaryStatus", &dbv) && (averageMode < 0 || db_get_b(0, MODULENAME, "AlwaysPrimary", 0)))
szProto = dbv.pszVal;
else
szProto = nullptr;
@@ -244,7 +244,7 @@ int fnTrayIconInit(HWND hwnd)
Clist_TrayIconAdd(hwnd, nullptr, szProto, szProto ? Proto_GetStatus(szProto) : CallService(MS_CLIST_GETSTATUSMODE, 0, 0));
db_free(&dbv);
}
- else if (trayIconSetting == SETTING_TRAYICON_MULTI && (averageMode < 0 || db_get_b(0, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))) {
+ else if (trayIconSetting == SETTING_TRAYICON_MULTI && (averageMode < 0 || db_get_b(0, MODULENAME, "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))) {
g_clistApi.trayIconCount = netProtoCount;
for (int i = 0; i < g_arAccounts.getCount(); i++) {
int j = Clist_GetAccountIndex(i);
@@ -365,9 +365,9 @@ int TrayIconUpdate(HICON hNewIcon, const wchar_t *szNewTip, const char *szPrefer
SetTaskBarIcon(nullptr, nullptr);
g_clistApi.trayIcon[i].isBase = isBase;
- if (db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI) {
- uint32_t time1 = db_get_w(0, "CList", "CycleTime", SETTING_CYCLETIME_DEFAULT) * 200;
- uint32_t time2 = db_get_w(0, "CList", "IconFlashTime", 550) + 1000;
+ if (db_get_b(0, MODULENAME, "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI) {
+ uint32_t time1 = db_get_w(0, MODULENAME, "CycleTime", SETTING_CYCLETIME_DEFAULT) * 200;
+ uint32_t time2 = db_get_w(0, MODULENAME, "IconFlashTime", 550) + 1000;
uint32_t time = max(max(uint32_t(2000), time1), time2);
if (RefreshTimerId)
KillTimer(nullptr, RefreshTimerId);
@@ -405,8 +405,8 @@ MIR_APP_DLL(int) Clist_TrayIconSetBaseInfo(HICON hIcon, const char *szPreferredP
}
if ((Clist_GetProtocolVisibility(szPreferredProto)) &&
(Proto_GetAverageStatus(nullptr) == -1) &&
- (db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI) &&
- !(db_get_b(0, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT)))
+ (db_get_b(0, MODULENAME, "TrayIcon", SETTING_TRAYICON_DEFAULT) == SETTING_TRAYICON_MULTI) &&
+ !(db_get_b(0, MODULENAME, "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT)))
goto LBL_Error;
}
@@ -454,7 +454,7 @@ static VOID CALLBACK TrayCycleTimerProc(HWND, UINT, UINT_PTR, DWORD)
MIR_APP_DLL(void) Clist_TraySetTimer()
{
- CycleTimerId = SetTimer(nullptr, CycleTimerId, db_get_w(0, "CList", "CycleTime", SETTING_CYCLETIME_DEFAULT) * 1000, TrayCycleTimerProc);
+ CycleTimerId = SetTimer(nullptr, CycleTimerId, db_get_w(0, MODULENAME, "CycleTime", SETTING_CYCLETIME_DEFAULT) * 1000, TrayCycleTimerProc);
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -488,13 +488,13 @@ int fnTrayCalcChanged(const char *szChangedProto, int averageMode, int netProtoC
if (netProtoCount == 0)
return Clist_TrayIconSetBaseInfo(ImageList_GetIcon(hCListImages, g_clistApi.pfnIconFromStatusMode(nullptr, averageMode, 0), ILD_NORMAL), nullptr);
- int trayIconSetting = db_get_b(0, "CList", "TrayIcon", SETTING_TRAYICON_DEFAULT);
+ int trayIconSetting = db_get_b(0, MODULENAME, "TrayIcon", SETTING_TRAYICON_DEFAULT);
if (averageMode > 0) {
if (trayIconSetting != SETTING_TRAYICON_MULTI)
return Clist_TrayIconSetBaseInfo(g_clistApi.pfnGetIconFromStatusMode(0, nullptr, averageMode), nullptr);
- if (db_get_b(0, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))
+ if (db_get_b(0, MODULENAME, "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))
return Clist_TrayIconSetBaseInfo(g_clistApi.pfnGetIconFromStatusMode(0, szChangedProto, Proto_GetStatus(szChangedProto)), (char*)szChangedProto);
if (g_clistApi.trayIcon == nullptr || g_clistApi.trayIcon[0].szProto == nullptr)
@@ -512,7 +512,7 @@ int fnTrayCalcChanged(const char *szChangedProto, int averageMode, int netProtoC
case SETTING_TRAYICON_MULTI:
if (!g_clistApi.trayIcon)
Clist_TrayIconRemove(nullptr, nullptr);
- else if ((g_clistApi.trayIconCount > 1 || netProtoCount == 1) || db_get_b(0, "CList", "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))
+ else if ((g_clistApi.trayIconCount > 1 || netProtoCount == 1) || db_get_b(0, MODULENAME, "AlwaysMulti", SETTING_ALWAYSMULTI_DEFAULT))
return Clist_TrayIconSetBaseInfo(g_clistApi.pfnGetIconFromStatusMode(0, szChangedProto, Proto_GetStatus(szChangedProto)), (char*)szChangedProto);
else {
Clist_TrayIconDestroy(g_clistApi.hwndContactList);
@@ -521,7 +521,7 @@ int fnTrayCalcChanged(const char *szChangedProto, int averageMode, int netProtoC
break;
case SETTING_TRAYICON_SINGLE:
- ptrA szProto(db_get_sa(0, "CList", "PrimaryStatus"));
+ ptrA szProto(db_get_sa(0, MODULENAME, "PrimaryStatus"));
return Clist_TrayIconSetBaseInfo(g_clistApi.pfnGetIconFromStatusMode(0, szProto, szProto ? Proto_GetStatus(szProto) : CallService(MS_CLIST_GETSTATUSMODE, 0, 0)), szProto);
}
}
@@ -582,10 +582,10 @@ int fnTrayIconPauseAutoHide(WPARAM, LPARAM)
initcheck 0;
mir_cslock lck(trayLockCS);
- if (db_get_b(0, "CList", "AutoHide", SETTING_AUTOHIDE_DEFAULT)) {
+ if (db_get_b(0, MODULENAME, "AutoHide", SETTING_AUTOHIDE_DEFAULT)) {
if (GetActiveWindow() != g_clistApi.hwndContactList) {
KillTimer(nullptr, autoHideTimerId);
- autoHideTimerId = SetTimer(nullptr, 0, 1000 * db_get_w(0, "CList", "HideTime", SETTING_HIDETIME_DEFAULT), TrayIconAutoHideTimer);
+ autoHideTimerId = SetTimer(nullptr, 0, 1000 * db_get_w(0, MODULENAME, "HideTime", SETTING_HIDETIME_DEFAULT), TrayIconAutoHideTimer);
}
}
return 0;
@@ -656,9 +656,9 @@ INT_PTR fnTrayIconProcessMessage(WPARAM wParam, LPARAM lParam)
break;
case WM_ACTIVATE:
- if (db_get_b(0, "CList", "AutoHide", SETTING_AUTOHIDE_DEFAULT)) {
+ if (db_get_b(0, MODULENAME, "AutoHide", SETTING_AUTOHIDE_DEFAULT)) {
if (LOWORD(msg->wParam) == WA_INACTIVE)
- autoHideTimerId = SetTimer(nullptr, 0, 1000 * db_get_w(0, "CList", "HideTime", SETTING_HIDETIME_DEFAULT), TrayIconAutoHideTimer);
+ autoHideTimerId = SetTimer(nullptr, 0, 1000 * db_get_w(0, MODULENAME, "HideTime", SETTING_HIDETIME_DEFAULT), TrayIconAutoHideTimer);
else
KillTimer(nullptr, autoHideTimerId);
}
diff --git a/src/mir_app/src/copyright.h b/src/mir_app/src/copyright.h
new file mode 100644
index 0000000000..29b0f97206
--- /dev/null
+++ b/src/mir_app/src/copyright.h
@@ -0,0 +1,2 @@
+
+#define LEGAL_COPYRIGHT "Copyright © 2000-11 Miranda IM, 2012-22 Miranda NG team. This software is released under the terms of the GNU General Public License.\0"
diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h
index f181ae7729..b6005fac19 100644
--- a/src/mir_app/src/resource.h
+++ b/src/mir_app/src/resource.h
@@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
-// Used by w:\miranda-ng\src\mir_app\res\resource.rc
+// Used by W:\miranda-ng\src\mir_app\res\resource.rc
//
#define IDC_AUTHICON 1
#define IDC_NOTOALL 3
@@ -322,6 +322,9 @@
#define IDC_SELECTCRYPT_COMBO 1110
#define IDC_CRYPTOPROVIDER_DESCR 1111
#define IDC_NUMBER 1113
+#define IDC_BLINKTIME 1114
+#define IDC_BLINKSPIN 1115
+#define IDC_ENABLE_TRAY_BLINK 1116
#define IDC_FINDWHAT 1131
#define IDC_FIND 1132
#define IDC_FILE 1133
@@ -698,8 +701,6 @@
#define IDI_POPUP 40088
#define IDI_NOPOPUP 40089
-#define LEGAL_COPYRIGHT "Copyright © 2000-11 Miranda IM, 2012-22 Miranda NG team. This software is released under the terms of the GNU General Public License.\0"
-
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
diff --git a/src/mir_app/src/stdafx.h b/src/mir_app/src/stdafx.h
index 9e8bb456c8..e40748c95a 100644
--- a/src/mir_app/src/stdafx.h
+++ b/src/mir_app/src/stdafx.h
@@ -104,6 +104,7 @@ typedef struct SslHandle *HSSL;
typedef struct GlobalLogSettingsBase GlobalLogSettings;
#include <m_chat_int.h>
+#include "copyright.h"
#include "resource.h"
struct CMPlugin : public PLUGIN<CMPlugin>