summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/StatusManager/src/keepstatus.h10
-rw-r--r--plugins/StatusManager/src/ks_main.cpp22
-rw-r--r--plugins/StatusManager/src/ks_options.cpp39
-rw-r--r--plugins/StatusManager/src/stdafx.h11
4 files changed, 47 insertions, 35 deletions
diff --git a/plugins/StatusManager/src/keepstatus.h b/plugins/StatusManager/src/keepstatus.h
index dbfbc916d8..9eb4bc1f9d 100644
--- a/plugins/StatusManager/src/keepstatus.h
+++ b/plugins/StatusManager/src/keepstatus.h
@@ -21,18 +21,12 @@
#define __KEEPSTATUS_HEADER
#define KSMODULENAME "KeepStatus"
-#define SETTING_CHECKCONNECTION "CheckConnection"
-#define SETTING_MAXRETRIES "MaxRetries"
+
#define SETTING_INCREASEEXPONENTIAL "IncreaseExponential"
-#define SETTING_INITDELAY "InitDelay"
#define SETTING_MAXDELAY "MaxDelay"
-#define SETTING_SHOWCONNECTIONPOPUPS "ShowConnectionPopups"
-#define SETTING_CHKINET "CheckInet"
#define SETTING_CNCOTHERLOC "CancelIfOtherLocation"
#define SETTING_LOGINERR "OnLoginErr"
#define SETTING_LOGINERR_DELAY "OnLoginErrDelay"
-#define SETTING_CONTCHECK "ContinueslyCheck"
-#define SETTING_BYPING "ByPingingHost"
#define SETTING_PINGHOST "HostToPing"
#define SETTING_CHECKAPMRESUME "CheckAPMResume"
#define SETTING_FIRSTOFFLINE "FirstOffline"
@@ -42,8 +36,6 @@
#define DEFAULT_PINGCOUNT 1
#define SETTING_CNTDELAY "CntDelay"
#define STATUSCHANGEDELAY 500 // ms
-#define DEFAULT_MAXRETRIES 0
-#define DEFAULT_INITDELAY 10 // s
#define DEFAULT_MAXDELAY 900 // s
#define AFTERCHECK_DELAY 10000 //ms (divided by 2)
#define CHECKCONTIN_DELAY 10 // s
diff --git a/plugins/StatusManager/src/ks_main.cpp b/plugins/StatusManager/src/ks_main.cpp
index af5322464c..1fffb2c7fc 100644
--- a/plugins/StatusManager/src/ks_main.cpp
+++ b/plugins/StatusManager/src/ks_main.cpp
@@ -19,7 +19,7 @@
#include "stdafx.h"
-CFakePlugin KSPlugin(KSMODULENAME);
+CKSPlugin KSPlugin;
static HANDLE hConnectionEvent = nullptr;
static HANDLE hServices[4], hEvents[2];
@@ -93,18 +93,18 @@ int KSLoadOptions()
{
KSUnloadOptions();
- if (KSPlugin.getByte(SETTING_CHECKCONNECTION, FALSE)) {
- if (KSPlugin.getByte(SETTING_CONTCHECK, FALSE)) {
- if (KSPlugin.getByte(SETTING_BYPING, FALSE)) {
+ if (KSPlugin.bCheckConnection) {
+ if (KSPlugin.bContCheck) {
+ if (KSPlugin.bPingHost) {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
}
StartTimer(IDT_CHECKCONTIN, 0, FALSE);
}
increaseExponential = KSPlugin.getByte(SETTING_INCREASEEXPONENTIAL, FALSE);
- currentDelay = initDelay = 1000 * KSPlugin.getDword(SETTING_INITDELAY, DEFAULT_INITDELAY);
+ currentDelay = initDelay = 1000 * KSPlugin.iInitDelay;
maxDelay = 1000 * KSPlugin.getDword(SETTING_MAXDELAY, DEFAULT_MAXDELAY);
- maxRetries = KSPlugin.getByte(SETTING_MAXRETRIES, 0);
+ maxRetries = KSPlugin.iMaxRetries;
if (maxRetries == 0)
maxRetries = -1;
hProtoAckHook = HookEvent(ME_PROTO_ACK, ProcessProtoAck);
@@ -575,7 +575,7 @@ static void CALLBACK CheckConnectionTimer(HWND, UINT, UINT_PTR, DWORD)
if (increaseExponential)
currentDelay = min(2 * currentDelay, maxDelay);
- if (((KSPlugin.getByte(SETTING_CHKINET, 0)) && (!InternetGetConnectedState(nullptr, 0))) || ((KSPlugin.getByte(SETTING_BYPING, FALSE)) && (!bLastPingResult))) {
+ if ((KSPlugin.bCheckInet && !InternetGetConnectedState(nullptr, 0)) || (KSPlugin.bPingHost && !bLastPingResult)) {
// no network
NotifyEventHooks(hConnectionEvent, (WPARAM)KS_CONN_STATE_RETRYNOCONN, (LPARAM)retryCount + 1);
ProcessPopup(KS_CONN_STATE_RETRYNOCONN, 0);
@@ -670,7 +670,7 @@ static void CheckContinuouslyFunction(void *)
return;
}
- BOOL ping = KSPlugin.getByte(SETTING_BYPING, FALSE);
+ BOOL ping = KSPlugin.bPingHost;
if (ping) {
DBVARIANT dbv;
if (db_get_s(0, KSMODULENAME, SETTING_PINGHOST, &dbv))
@@ -748,7 +748,7 @@ static void CheckContinuouslyFunction(void *)
log_info(0, "KeepStatus: connection lost! (continuesly check)");
NotifyEventHooks(hConnectionEvent, (WPARAM)KS_CONN_STATE_LOST, 0);
ProcessPopup(KS_CONN_STATE_LOST, 0);
- maxRetries = KSPlugin.getByte(SETTING_MAXRETRIES, 0);
+ maxRetries = KSPlugin.iMaxRetries;
if (maxRetries == 0)
maxRetries = -1;
StartTimer(IDT_CHECKCONN, initDelay, FALSE);
@@ -757,7 +757,7 @@ static void CheckContinuouslyFunction(void *)
static VOID CALLBACK CheckContinueslyTimer(HWND, UINT, UINT_PTR, DWORD)
{
- if (KSPlugin.getByte(SETTING_BYPING, FALSE))
+ if (KSPlugin.bPingHost)
mir_forkthread(CheckContinuouslyFunction);
else
CheckContinuouslyFunction(nullptr);
@@ -809,7 +809,7 @@ static wchar_t* GetHumanName(LPARAM lParam)
static int ProcessPopup(int reason, LPARAM lParam)
{
- if (!KSPlugin.getByte(SETTING_SHOWCONNECTIONPOPUPS, FALSE))
+ if (!KSPlugin.bShowPopups)
return -1;
HICON hIcon = nullptr;
diff --git a/plugins/StatusManager/src/ks_options.cpp b/plugins/StatusManager/src/ks_options.cpp
index d2afed8488..6ec621159b 100644
--- a/plugins/StatusManager/src/ks_options.cpp
+++ b/plugins/StatusManager/src/ks_options.cpp
@@ -19,6 +19,17 @@
#include "stdafx.h"
+CKSPlugin::CKSPlugin() :
+ CFakePlugin(KSMODULENAME),
+ iInitDelay(KSMODULENAME, "InitDelay", 10), // in seconds
+ iMaxRetries(KSMODULENAME, "MaxRetries", 0),
+ bPingHost(KSMODULENAME, "ByPingingHost", false),
+ bContCheck(KSMODULENAME, "ContinueslyCheck", false),
+ bCheckInet(KSMODULENAME, "CheckInet", false),
+ bShowPopups(KSMODULENAME, "ShowConnectionPopups", false),
+ bCheckConnection(KSMODULENAME, "CheckConnection", true)
+{}
+
/////////////////////////////////////////////////////////////////////////////////////////
// Basic options
@@ -28,14 +39,14 @@ static INT_PTR CALLBACK DlgProcKSBasicOpts(HWND hwndDlg, UINT msg, WPARAM wParam
case WM_INITDIALOG:
TranslateDialogDefault(hwndDlg);
- SetDlgItemInt(hwndDlg, IDC_MAXRETRIES, KSPlugin.getByte(SETTING_MAXRETRIES, DEFAULT_MAXRETRIES), FALSE);
- SetDlgItemInt(hwndDlg, IDC_INITDELAY, KSPlugin.getDword(SETTING_INITDELAY, DEFAULT_INITDELAY), FALSE);
+ SetDlgItemInt(hwndDlg, IDC_MAXRETRIES, KSPlugin.iMaxRetries, 0);
+ SetDlgItemInt(hwndDlg, IDC_INITDELAY, KSPlugin.iInitDelay, 0);
SetDlgItemTextA(hwndDlg, IDC_PINGHOST, KSPlugin.getMStringA(SETTING_PINGHOST));
- CheckDlgButton(hwndDlg, IDC_CHECKCONNECTION, KSPlugin.getByte(SETTING_CHECKCONNECTION, FALSE) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SHOWCONNECTIONPOPUPS, KSPlugin.getByte(SETTING_SHOWCONNECTIONPOPUPS, FALSE) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_CHKINET, KSPlugin.getByte(SETTING_CHKINET, FALSE) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_CONTCHECK, KSPlugin.getByte(SETTING_CONTCHECK, FALSE) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_BYPING, KSPlugin.getByte(SETTING_BYPING, FALSE) ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hwndDlg, IDC_CHECKCONNECTION, KSPlugin.bCheckConnection);
+ CheckDlgButton(hwndDlg, IDC_SHOWCONNECTIONPOPUPS, KSPlugin.bShowPopups);
+ CheckDlgButton(hwndDlg, IDC_CHKINET, KSPlugin.bCheckInet);
+ CheckDlgButton(hwndDlg, IDC_CONTCHECK, KSPlugin.bContCheck);
+ CheckDlgButton(hwndDlg, IDC_BYPING, KSPlugin.bPingHost);
{
// proto list
HWND hList = GetDlgItem(hwndDlg, IDC_PROTOCOLLIST);
@@ -117,13 +128,13 @@ static INT_PTR CALLBACK DlgProcKSBasicOpts(HWND hwndDlg, UINT msg, WPARAM wParam
break;
case PSN_APPLY:
- KSPlugin.setByte(SETTING_MAXRETRIES, (uint8_t)GetDlgItemInt(hwndDlg, IDC_MAXRETRIES, nullptr, FALSE));
- KSPlugin.setByte(SETTING_CHECKCONNECTION, (uint8_t)IsDlgButtonChecked(hwndDlg, IDC_CHECKCONNECTION));
- KSPlugin.setByte(SETTING_SHOWCONNECTIONPOPUPS, (uint8_t)IsDlgButtonChecked(hwndDlg, IDC_SHOWCONNECTIONPOPUPS));
- KSPlugin.setDword(SETTING_INITDELAY, (uint32_t)GetDlgItemInt(hwndDlg, IDC_INITDELAY, nullptr, FALSE));
- KSPlugin.setByte(SETTING_CHKINET, (uint8_t)IsDlgButtonChecked(hwndDlg, IDC_CHKINET));
- KSPlugin.setByte(SETTING_CONTCHECK, (uint8_t)IsDlgButtonChecked(hwndDlg, IDC_CONTCHECK));
- KSPlugin.setByte(SETTING_BYPING, (uint8_t)IsDlgButtonChecked(hwndDlg, IDC_BYPING));
+ KSPlugin.iMaxRetries = GetDlgItemInt(hwndDlg, IDC_MAXRETRIES, nullptr, FALSE);
+ KSPlugin.bCheckConnection = IsDlgButtonChecked(hwndDlg, IDC_CHECKCONNECTION);
+ KSPlugin.bShowPopups = IsDlgButtonChecked(hwndDlg, IDC_SHOWCONNECTIONPOPUPS);
+ KSPlugin.iInitDelay = GetDlgItemInt(hwndDlg, IDC_INITDELAY, nullptr, FALSE);
+ KSPlugin.bCheckInet = IsDlgButtonChecked(hwndDlg, IDC_CHKINET);
+ KSPlugin.bContCheck = IsDlgButtonChecked(hwndDlg, IDC_CONTCHECK);
+ KSPlugin.bPingHost = IsDlgButtonChecked(hwndDlg, IDC_BYPING);
if (IsDlgButtonChecked(hwndDlg, IDC_BYPING)) {
int len = SendDlgItemMessage(hwndDlg, IDC_PINGHOST, WM_GETTEXTLENGTH, 0, 0);
if (len > 0) {
diff --git a/plugins/StatusManager/src/stdafx.h b/plugins/StatusManager/src/stdafx.h
index 03afaef415..b72e303316 100644
--- a/plugins/StatusManager/src/stdafx.h
+++ b/plugins/StatusManager/src/stdafx.h
@@ -51,12 +51,21 @@ struct CFakePlugin : public CMPluginBase
CFakePlugin(const char *szModuleName);
};
+struct CKSPlugin : public CFakePlugin
+{
+ CKSPlugin();
+
+ CMOption<bool> bCheckConnection, bShowPopups, bCheckInet, bContCheck, bPingHost;
+ CMOption<int> iMaxRetries, iInitDelay;
+};
+
#include "commonstatus.h"
#include "keepstatus.h"
#include "startupstatus.h"
#include "advancedautoaway.h"
-extern CFakePlugin AAAPlugin, KSPlugin, SSPlugin;
+extern CKSPlugin KSPlugin;
+extern CFakePlugin AAAPlugin, SSPlugin;
extern CMOption<bool> g_AAAEnabled, g_KSEnabled, g_SSEnabled;
int OnCommonOptionsInit(WPARAM wParam, LPARAM);