diff options
-rw-r--r-- | plugins/StatusManager/src/keepstatus.h | 10 | ||||
-rw-r--r-- | plugins/StatusManager/src/ks_main.cpp | 22 | ||||
-rw-r--r-- | plugins/StatusManager/src/ks_options.cpp | 39 | ||||
-rw-r--r-- | plugins/StatusManager/src/stdafx.h | 11 |
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); |