summaryrefslogtreecommitdiff
path: root/plugins/StatusManager/src/AdvancedAutoAway
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-06-19 12:43:27 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-06-19 12:43:27 +0300
commit0fb39531240a0a23e92c0456fe72e26027740696 (patch)
tree8b85028b680b6951f8afa369297adfc93baef79a /plugins/StatusManager/src/AdvancedAutoAway
parentaef4307d04fb8d8bbc05921d45d97a63e627fb4d (diff)
StatusManager:
- project structure linearized; - AAA flag "Use same settings wasn't saved across Miranda starts; - perversion with declaring static arrays in commonstatus.h removed
Diffstat (limited to 'plugins/StatusManager/src/AdvancedAutoAway')
-rw-r--r--plugins/StatusManager/src/AdvancedAutoAway/aaa_msgoptions.cpp188
-rw-r--r--plugins/StatusManager/src/AdvancedAutoAway/aaa_options.cpp461
-rw-r--r--plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp553
-rw-r--r--plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.h46
4 files changed, 0 insertions, 1248 deletions
diff --git a/plugins/StatusManager/src/AdvancedAutoAway/aaa_msgoptions.cpp b/plugins/StatusManager/src/AdvancedAutoAway/aaa_msgoptions.cpp
deleted file mode 100644
index 2f4228af74..0000000000
--- a/plugins/StatusManager/src/AdvancedAutoAway/aaa_msgoptions.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- AdvancedAutoAway Plugin for Miranda-IM (www.miranda-im.org)
- Copyright 2003-2006 P. Boon
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "..\stdafx.h"
-
-struct AAMSGSETTING
-{
- short useCustom;
- int status;
- char* msg;
-};
-
-char *StatusModeToDbSetting(int status, const char *suffix);
-
-void DisableDialog(HWND hwndDlg)
-{
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUS), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSMSG), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADUSECUSTOM), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADUSEMIRANDA), FALSE);
-}
-
-INT_PTR CALLBACK DlgProcAutoAwayMsgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static AAMSGSETTING** settings;
- static int last, count;
-
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- {
- ShowWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), ServiceExists(MS_VARS_SHOWHELP) ? SW_SHOW : SW_HIDE);
- count = 0;
- last = -1;
-
- PROTOACCOUNT** proto;
- int protoCount = 0;
- Proto_EnumAccounts(&protoCount, &proto);
- if (protoCount <= 0) {
- DisableDialog(hwndDlg);
- break;
- }
-
- DWORD protoModeMsgFlags = 0;
- for (int i = 0; i < protoCount; i++)
- if (CallProtoService(proto[i]->szModuleName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND & ~PF1_INDIVMODEMSG)
- protoModeMsgFlags |= CallProtoService(proto[i]->szModuleName, PS_GETCAPS, PFLAGNUM_3, 0);
-
- if (protoModeMsgFlags == 0) {
- DisableDialog(hwndDlg);
- break;
- }
-
- settings = (AAMSGSETTING**)mir_alloc(sizeof(AAMSGSETTING*));
- count = 0;
- for (int i = 0; i < _countof(statusModeList); i++) {
- if (!(protoModeMsgFlags & Proto_Status2Flag(statusModeList[i])))
- continue;
-
- int j = SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_ADDSTRING, 0, (LPARAM)Clist_GetStatusModeDescription(statusModeList[i], 0));
- SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_SETITEMDATA, j, statusModeList[i]);
- settings = (AAMSGSETTING**)mir_realloc(settings, (count + 1) * sizeof(AAMSGSETTING*));
- settings[count] = (AAMSGSETTING*)mir_alloc(sizeof(AAMSGSETTING));
- settings[count]->status = statusModeList[i];
-
- DBVARIANT dbv;
- if (!db_get(0, AAAMODULENAME, StatusModeToDbSetting(statusModeList[i], SETTING_STATUSMSG), &dbv)) {
- settings[count]->msg = (char*)mir_alloc(mir_strlen(dbv.pszVal) + 1);
- mir_strcpy(settings[count]->msg, dbv.pszVal);
- db_free(&dbv);
- }
- else settings[count]->msg = nullptr;
-
- settings[count]->useCustom = db_get_b(0, AAAMODULENAME, StatusModeToDbSetting(statusModeList[i], SETTING_MSGCUSTOM), FALSE);
- count += 1;
- }
- SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_SETCURSEL, 0, 0);
- SendMessage(hwndDlg, WM_COMMAND, MAKEWPARAM(IDC_STATUS, CBN_SELCHANGE), 0);
- }
- break;
-
- case WM_COMMAND:
- if (((HIWORD(wParam) == EN_CHANGE) || (HIWORD(wParam) == BN_CLICKED)) && ((HWND)lParam == GetFocus()))
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- switch (LOWORD(wParam)) {
- case IDC_RADUSEMIRANDA:
- CheckDlgButton(hwndDlg, IDC_RADUSECUSTOM, BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_RADUSEMIRANDA) ? BST_CHECKED : BST_UNCHECKED);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSMSG), IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM));
- EnableWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM));
- settings[SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_GETCURSEL, 0, 0)]->useCustom = IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM);
- break;
-
- case IDC_RADUSECUSTOM:
- CheckDlgButton(hwndDlg, IDC_RADUSEMIRANDA, BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM) ? BST_CHECKED : BST_UNCHECKED);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSMSG), IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM));
- EnableWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM));
- settings[SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_GETCURSEL, 0, 0)]->useCustom = IsDlgButtonChecked(hwndDlg, IDC_RADUSECUSTOM);
- break;
-
- case IDC_STATUS:
- if (HIWORD(wParam) == CBN_SELCHANGE) {
- int i = SendDlgItemMessage(hwndDlg, IDC_STATUS, CB_GETCURSEL, 0, 0);
- int len = SendDlgItemMessage(hwndDlg, IDC_STATUSMSG, WM_GETTEXTLENGTH, 0, 0);
- if (last != -1) {
- if (settings[last]->msg == nullptr)
- settings[last]->msg = (char*)mir_alloc(len + 1);
- else
- settings[last]->msg = (char*)mir_realloc(settings[last]->msg, len + 1);
- GetDlgItemTextA(hwndDlg, IDC_STATUSMSG, settings[last]->msg, (len + 1));
- }
-
- if (i != -1) {
- if (settings[i]->msg != nullptr)
- SetDlgItemTextA(hwndDlg, IDC_STATUSMSG, settings[i]->msg);
- else {
- ptrW msgw((wchar_t*)CallService(MS_AWAYMSG_GETSTATUSMSGW, settings[i]->status, 0));
- SetDlgItemText(hwndDlg, IDC_STATUSMSG, (msgw != nullptr) ? msgw : L"");
- }
-
- if (settings[i]->useCustom) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSMSG), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), TRUE);
- CheckDlgButton(hwndDlg, IDC_RADUSECUSTOM, BST_CHECKED);
- CheckDlgButton(hwndDlg, IDC_RADUSEMIRANDA, BST_UNCHECKED);
- }
- else {
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSMSG), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_VARIABLESHELP), FALSE);
- CheckDlgButton(hwndDlg, IDC_RADUSEMIRANDA, BST_CHECKED);
- CheckDlgButton(hwndDlg, IDC_RADUSECUSTOM, BST_UNCHECKED);
- }
- }
- last = i;
- }
- break;
-
- case IDC_VARIABLESHELP:
- CallService(MS_VARS_SHOWHELP, (WPARAM)GetDlgItem(hwndDlg, IDC_STATUSMSG), 0);
- break;
- }
- break;
-
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->code) {
- case PSN_WIZFINISH:
- AAALoadOptions();
- break;
-
- case PSN_APPLY:
- SendMessage(hwndDlg, WM_COMMAND, MAKEWPARAM(IDC_STATUS, CBN_SELCHANGE), 0);
- for (int i = 0; i < count; i++) {
- db_set_b(0, AAAMODULENAME, StatusModeToDbSetting(settings[i]->status, SETTING_MSGCUSTOM), (BYTE)settings[i]->useCustom);
- if ((settings[i]->useCustom) && (settings[i]->msg != nullptr) && (settings[i]->msg[0] != '\0'))
- db_set_s(0, AAAMODULENAME, StatusModeToDbSetting(settings[i]->status, SETTING_STATUSMSG), settings[i]->msg);
- }
- break;
- }
- break;
-
- case WM_DESTROY:
- for (int i = 0; i < count; i++) {
- mir_free(settings[i]->msg);
- mir_free(settings[i]);
- }
- mir_free(settings);
- break;
- }
-
- return FALSE;
-}
diff --git a/plugins/StatusManager/src/AdvancedAutoAway/aaa_options.cpp b/plugins/StatusManager/src/AdvancedAutoAway/aaa_options.cpp
deleted file mode 100644
index 2176847926..0000000000
--- a/plugins/StatusManager/src/AdvancedAutoAway/aaa_options.cpp
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
-AdvancedAutoAway Plugin for Miranda-IM (www.miranda-im.org)
-Copyright 2003-2006 P. Boon
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#include "..\stdafx.h"
-
-int LoadAutoAwaySetting(SMProto &autoAwaySetting, char* protoName);
-
-INT_PTR CALLBACK DlgProcAutoAwayMsgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
-static BOOL bSettingSame = FALSE;
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Dialog service functions
-
-static int WriteAutoAwaySetting(SMProto &autoAwaySetting, char *protoName)
-{
- char setting[128];
- mir_snprintf(setting, "%s_OptionFlags", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.optionFlags);
- mir_snprintf(setting, "%s_AwayTime", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.awayTime);
- mir_snprintf(setting, "%s_NATime", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.naTime);
- mir_snprintf(setting, "%s_StatusFlags", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.statusFlags);
- mir_snprintf(setting, "%s_Lv1Status", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.lv1Status);
- mir_snprintf(setting, "%s_Lv2Status", protoName);
- db_set_w(0, AAAMODULENAME, setting, (WORD)autoAwaySetting.lv2Status);
-
- return 0;
-}
-
-static void SetDialogItems(HWND hwndDlg, SMProto *setting)
-{
- bool bSetNA = (setting->optionFlags & FLAG_SETNA) != 0;
-
- bool bIsTimed = (setting->optionFlags & FLAG_ONMOUSE) != 0;
- bool bSaver = (setting->optionFlags & FLAG_ONSAVER) != 0;
- bool bFullScr = (setting->optionFlags & FLAG_FULLSCREEN) != 0;
- bool bOnLock = (setting->optionFlags & FLAG_ONLOCK) != 0;
- bool bOnTS = (setting->optionFlags & FLAG_ONTS) != 0;
- bool bAnyOption = bIsTimed | bSaver | bFullScr | bOnLock | bOnTS;
-
- CheckDlgButton(hwndDlg, IDC_FULLSCREEN, bFullScr ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SCREENSAVE, bSaver ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ONLOCK, (setting->optionFlags & FLAG_ONLOCK) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ONTSDISCONNECT, bOnTS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_TIMED, bIsTimed ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_SETNA, bSetNA ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_CONFIRM, (setting->optionFlags & FLAG_CONFIRM) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_RESETSTATUS, (setting->optionFlags & FLAG_RESET) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_ENTERIDLE, (setting->optionFlags & FLAG_ENTERIDLE) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MONITORMIRANDA, (setting->optionFlags & FLAG_MONITORMIRANDA) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_LV2ONINACTIVE, (setting->optionFlags & FLAG_LV2ONINACTIVE) != 0 ? BST_CHECKED : BST_UNCHECKED);
-
- SetDlgItemInt(hwndDlg, IDC_AWAYTIME, setting->awayTime, FALSE);
- SetDlgItemInt(hwndDlg, IDC_NATIME, setting->naTime, FALSE);
-
- EnableWindow(GetDlgItem(hwndDlg, IDC_SETNA), bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_LV2ONINACTIVE), bIsTimed && bSetNA);
- EnableWindow(GetDlgItem(hwndDlg, IDC_MONITORMIRANDA), bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AWAYTIME), bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_LV1AFTERSTR), bIsTimed);
-
- EnableWindow(GetDlgItem(hwndDlg, IDC_LV1STATUS), bAnyOption);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATUSLIST), bAnyOption);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RESETSTATUS), bAnyOption && IsDlgButtonChecked(hwndDlg, IDC_LV2ONINACTIVE));
- EnableWindow(GetDlgItem(hwndDlg, IDC_CONFIRM), bAnyOption && IsDlgButtonChecked(hwndDlg, IDC_LV2ONINACTIVE) && IsDlgButtonChecked(hwndDlg, IDC_RESETSTATUS));
-
- EnableWindow(GetDlgItem(hwndDlg, IDC_NATIME), bSetNA && bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SETNASTR), bSetNA && bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SETNASTR), bSetNA && bIsTimed);
- EnableWindow(GetDlgItem(hwndDlg, IDC_LV2STATUS), bSetNA && bIsTimed);
-
- EnableWindow(GetDlgItem(hwndDlg, IDC_PROTOCOL), !bSettingSame);
-}
-
-static SMProto* GetSetting(HWND hwndDlg, SMProto *sameSetting)
-{
- if (bSettingSame)
- return sameSetting;
-
- int iItem = SendDlgItemMessage(hwndDlg, IDC_PROTOCOL, CB_GETCURSEL, 0, 0);
- if (iItem == -1)
- return nullptr;
-
- INT_PTR iData = (INT_PTR)SendDlgItemMessage(hwndDlg, IDC_PROTOCOL, CB_GETITEMDATA, iItem, 0);
- return (iData == -1) ? nullptr : (SMProto*)iData;
-}
-
-static void SetDialogStatus(HWND hwndDlg, SMProto *sameSetting)
-{
- SMProto *setting = GetSetting(hwndDlg, sameSetting);
- if (setting == nullptr)
- return;
-
- // create columns
- HWND hList = GetDlgItem(hwndDlg, IDC_STATUSLIST);
- ListView_SetExtendedListViewStyleEx(hList, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES);
-
- LVCOLUMN lvCol = { 0 };
- lvCol.mask = LVCF_WIDTH | LVCF_TEXT;
- lvCol.pszText = TranslateT("Status");
- lvCol.cx = 118;
- ListView_InsertColumn(hList, 0, &lvCol);
-
- // get pointer to settings
- SetDialogItems(hwndDlg, setting);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Rules dialog window procedure
-
-static TProtoSettings optionSettings;
-
-static INT_PTR CALLBACK DlgProcAutoAwayRulesOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static SMProto* sameSetting;
- SMProto *setting;
- static int init;
-
- switch (msg) {
- case WM_INITDIALOG:
- init = TRUE;
- TranslateDialogDefault(hwndDlg);
-
- // copy the settings
- optionSettings = protoList;
-
- sameSetting = (SMProto*)mir_alloc(sizeof(SMProto));
- LoadAutoAwaySetting(*sameSetting, SETTING_ALL);
-
- // fill list from currentProtoSettings
- {
- for (auto &p : optionSettings) {
- int item = SendDlgItemMessage(hwndDlg, IDC_PROTOCOL, CB_ADDSTRING, 0, (LPARAM)p->m_tszAccName);
- SendDlgItemMessage(hwndDlg, IDC_PROTOCOL, CB_SETITEMDATA, item, (LPARAM)p);
- }
- }
- // set cursor to first protocol
- SendDlgItemMessage(hwndDlg, IDC_PROTOCOL, CB_SETCURSEL, 0, 0);
-
- // status list
- SetDialogStatus(hwndDlg, sameSetting);
-
- SendMessage(hwndDlg, WM_COMMAND, (WPARAM)IDC_PROTOCOL, (LPARAM)0x11111111);
- init = FALSE;
- break;
-
- case WM_COMMAND:
- if ((HIWORD(wParam) == EN_CHANGE || HIWORD(wParam) == BN_CLICKED) && (HWND)lParam == GetFocus())
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- setting = GetSetting(hwndDlg, sameSetting);
- if (!setting)
- break;
-
- switch (LOWORD(wParam)) {
- case IDC_PROTOCOL:
- // status listview
- init = TRUE;
- {
- HWND hList = GetDlgItem(hwndDlg, IDC_STATUSLIST);
- ListView_DeleteAllItems(hList);
-
- int flags = 0;
- if (!bSettingSame)
- flags = CallProtoService(setting->m_szName, PS_GETCAPS, PFLAGNUM_2, 0)&~CallProtoService(setting->m_szName, PS_GETCAPS, (WPARAM)PFLAGNUM_5, 0);
-
- LVITEM lvItem = { 0 };
- lvItem.mask = LVIF_TEXT | LVIF_PARAM;
- lvItem.iItem = 0;
- lvItem.iSubItem = 0;
- for (int i = 0; i < _countof(statusModeList); i++) {
- if ((flags & statusModePf2List[i]) || (statusModePf2List[i] == PF2_OFFLINE) || (bSettingSame)) {
- lvItem.pszText = Clist_GetStatusModeDescription(statusModeList[i], 0);
- lvItem.lParam = (LPARAM)statusModePf2List[i];
- ListView_InsertItem(hList, &lvItem);
- ListView_SetCheckState(hList, lvItem.iItem, setting->statusFlags & statusModePf2List[i] ? TRUE : FALSE);
- lvItem.iItem++;
- }
- }
- }
- init = FALSE;
- // status dropdown boxes
- {
- int flags = 0;
- if (!bSettingSame)
- flags = CallProtoService(setting->m_szName, PS_GETCAPS, PFLAGNUM_2, 0)&~CallProtoService(setting->m_szName, PS_GETCAPS, (WPARAM)PFLAGNUM_5, 0);
-
- // clear box and add new status, loop status and check if compatible with proto
- SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_RESETCONTENT, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_RESETCONTENT, 0, 0);
- for (int i = 0; i < _countof(statusModeList); i++) {
- if ((flags & statusModePf2List[i]) || statusModePf2List[i] == PF2_OFFLINE || bSettingSame) {
- wchar_t *statusMode = Clist_GetStatusModeDescription(statusModeList[i], 0);
- int item = SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_ADDSTRING, 0, (LPARAM)statusMode);
- SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_SETITEMDATA, item, (LPARAM)statusModeList[i]);
- item = SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_ADDSTRING, 0, (LPARAM)statusMode);
- SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_SETITEMDATA, item, (LPARAM)statusModeList[i]);
- if (statusModeList[i] == setting->lv1Status) {
- SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_SETCURSEL, (WPARAM)item, 0);
- SetDlgItemText(hwndDlg, IDC_SETNASTR, CMStringW(FORMAT, TranslateT("minutes of %s mode"), statusMode));
- }
- if (statusModeList[i] == setting->lv2Status)
- SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_SETCURSEL, (WPARAM)item, 0);
- }
- }
- }
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_LV1STATUS:
- if (HIWORD(wParam) == CBN_SELCHANGE)
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- setting->lv1Status = (int)SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_LV1STATUS, CB_GETCURSEL, 0, 0), 0);
- SetDlgItemText(hwndDlg, IDC_SETNASTR, CMStringW(FORMAT, TranslateT("minutes of %s mode"), Clist_GetStatusModeDescription(setting->lv1Status, 0)));
- break;
-
- case IDC_LV2STATUS:
- if (HIWORD(wParam) == CBN_SELCHANGE)
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- setting->lv2Status = (int)SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_LV2STATUS, CB_GETCURSEL, 0, 0), 0);
- break;
-
- case IDC_FULLSCREEN:
- setting->optionFlags ^= FLAG_FULLSCREEN;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_SCREENSAVE:
- setting->optionFlags ^= FLAG_ONSAVER;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_ONLOCK:
- setting->optionFlags ^= FLAG_ONLOCK;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_ONTSDISCONNECT:
- setting->optionFlags ^= FLAG_ONTS;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_TIMED:
- setting->optionFlags ^= FLAG_ONMOUSE;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_SETNA:
- setting->optionFlags ^= FLAG_SETNA;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_AWAYTIME:
- setting->awayTime = GetDlgItemInt(hwndDlg, IDC_AWAYTIME, nullptr, FALSE);
- break;
-
- case IDC_NATIME:
- setting->naTime = GetDlgItemInt(hwndDlg, IDC_NATIME, nullptr, FALSE);
- break;
-
- case IDC_LV2ONINACTIVE:
- setting->optionFlags ^= FLAG_LV2ONINACTIVE;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_CONFIRM:
- setting->optionFlags ^= FLAG_CONFIRM;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_RESETSTATUS:
- setting->optionFlags ^= FLAG_RESET;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_MONITORMIRANDA:
- setting->optionFlags ^= FLAG_MONITORMIRANDA;
- SetDialogItems(hwndDlg, setting);
- break;
-
- case IDC_ENTERIDLE:
- setting->optionFlags ^= FLAG_ENTERIDLE;
- SetDialogItems(hwndDlg, setting);
- break;
- }
- break;
-
- case WM_SHOWWINDOW:
- init = TRUE;
-
- if (setting = GetSetting(hwndDlg, sameSetting))
- SetDialogItems(hwndDlg, setting);
-
- SendMessage(hwndDlg, WM_COMMAND, (WPARAM)IDC_PROTOCOL, (LPARAM)0x11111111);
- init = FALSE;
- break;
-
- case WM_NOTIFY:
- switch (((NMHDR*)lParam)->idFrom) {
- case IDC_STATUSLIST:
- if (init)
- break;
-
- switch (((NMHDR*)lParam)->code) {
- case LVN_ITEMCHANGED:
- NMLISTVIEW *nmlv = (NMLISTVIEW*)lParam;
- if (IsWindowVisible(GetDlgItem(hwndDlg, IDC_STATUSLIST)) && ((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK)) {
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- if (setting = GetSetting(hwndDlg, sameSetting)) {
- HWND hList = GetDlgItem(hwndDlg, IDC_STATUSLIST);
- LVITEM lvItem = { 0 };
- lvItem.mask = LVIF_PARAM;
- lvItem.iItem = nmlv->iItem;
- ListView_GetItem(hList, &lvItem);
- int pf2Status = lvItem.lParam;
- if (ListView_GetCheckState(hList, lvItem.iItem))
- setting->statusFlags |= pf2Status;
- else
- setting->statusFlags &= ~pf2Status;
- }
- }
- break;
- }
- break;
- }
-
- switch (((LPNMHDR)lParam)->code) {
- case PSN_WIZFINISH:
- AAALoadOptions();
- break;
-
- case PSN_APPLY:
- if (bSettingSame)
- WriteAutoAwaySetting(*sameSetting, SETTING_ALL);
- else {
- for (auto &it : optionSettings)
- WriteAutoAwaySetting(*it, it->m_szName);
- }
- }
- break;
-
- case WM_DESTROY:
- optionSettings.destroy();
- mir_free(sameSetting);
- break;
- }
- return FALSE;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// General options window procedure
-
-static INT_PTR CALLBACK DlgProcAutoAwayGeneralOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- CheckDlgButton(hwndDlg, IDC_IGNLOCK, db_get_b(0, AAAMODULENAME, SETTING_IGNLOCK, FALSE) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_IGNSYSKEYS, db_get_b(0, AAAMODULENAME, SETTING_IGNSYSKEYS, FALSE) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_IGNALTCOMBO, db_get_b(0, AAAMODULENAME, SETTING_IGNALTCOMBO, FALSE) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MONITORMOUSE, db_get_b(0, AAAMODULENAME, SETTING_MONITORMOUSE, BST_CHECKED) != 0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_MONITORKEYBOARD, db_get_b(0, AAAMODULENAME, SETTING_MONITORKEYBOARD, BST_CHECKED) != 0 ? BST_CHECKED : BST_UNCHECKED);
- SetDlgItemInt(hwndDlg, IDC_AWAYCHECKTIMEINSECS, db_get_w(0, AAAMODULENAME, SETTING_AWAYCHECKTIMEINSECS, 5), FALSE);
- SetDlgItemInt(hwndDlg, IDC_CONFIRMDELAY, db_get_w(0, AAAMODULENAME, SETTING_CONFIRMDELAY, 5), FALSE);
- CheckDlgButton(hwndDlg, bSettingSame ? IDC_SAMESETTINGS : IDC_PERPROTOCOLSETTINGS, BST_CHECKED);
- break;
-
- case WM_COMMAND:
- if ((HIWORD(wParam) == EN_CHANGE || HIWORD(wParam) == BN_CLICKED) && (HWND)lParam == GetFocus())
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
-
- switch (LOWORD(wParam)) {
- case IDC_MONITORMOUSE:
- CheckDlgButton(hwndDlg, IDC_MONITORMOUSE, (((BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_MONITORMOUSE)) && (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_MONITORKEYBOARD))) || (IsDlgButtonChecked(hwndDlg, IDC_MONITORMOUSE)) ? BST_CHECKED : BST_UNCHECKED));
- break;
-
- case IDC_MONITORKEYBOARD:
- CheckDlgButton(hwndDlg, IDC_MONITORKEYBOARD, (((BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_MONITORMOUSE)) && (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_MONITORKEYBOARD))) || (IsDlgButtonChecked(hwndDlg, IDC_MONITORKEYBOARD)) ? BST_CHECKED : BST_UNCHECKED));
- break;
-
- case IDC_SAMESETTINGS:
- case IDC_PERPROTOCOLSETTINGS:
- bSettingSame = IsDlgButtonChecked(hwndDlg, IDC_SAMESETTINGS);
- break;
- }
- break;
-
- case WM_NOTIFY:
- if (((LPNMHDR)lParam)->idFrom == 0) {
- switch (((LPNMHDR)lParam)->code) {
- case PSN_WIZFINISH:
- AAALoadOptions();
- break;
-
- case PSN_APPLY:
- db_set_b(0, AAAMODULENAME, SETTING_IGNLOCK, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_IGNLOCK));
- db_set_b(0, AAAMODULENAME, SETTING_IGNSYSKEYS, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_IGNSYSKEYS));
- db_set_b(0, AAAMODULENAME, SETTING_IGNALTCOMBO, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_IGNALTCOMBO));
- db_set_b(0, AAAMODULENAME, SETTING_SAMESETTINGS, (BYTE)bSettingSame);
- db_set_w(0, AAAMODULENAME, SETTING_AWAYCHECKTIMEINSECS, (WORD)GetDlgItemInt(hwndDlg, IDC_AWAYCHECKTIMEINSECS, nullptr, FALSE));
- db_set_w(0, AAAMODULENAME, SETTING_CONFIRMDELAY, (WORD)GetDlgItemInt(hwndDlg, IDC_CONFIRMDELAY, nullptr, FALSE));
- db_set_b(0, AAAMODULENAME, SETTING_MONITORMOUSE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MONITORMOUSE));
- db_set_b(0, AAAMODULENAME, SETTING_MONITORKEYBOARD, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_MONITORKEYBOARD));
- }
- }
- break;
- }
- return FALSE;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Options initialization procedure
-
-int AutoAwayOptInitialise(WPARAM wParam, LPARAM)
-{
- OPTIONSDIALOGPAGE odp = { 0 };
- odp.position = 1000000000;
- odp.hInstance = g_plugin.getInst();
- odp.flags = ODPF_BOLDGROUPS;
- odp.szGroup.a = LPGEN("Status");
- odp.szTitle.a = LPGEN("Auto away");
-
- odp.szTab.a = LPGEN("General");
- odp.pfnDlgProc = DlgProcAutoAwayGeneralOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_GENAUTOAWAY);
- Options_AddPage(wParam, &odp, AAALangPack);
-
- odp.szTab.a = LPGEN("Rules");
- odp.pfnDlgProc = DlgProcAutoAwayRulesOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_AUTOAWAY);
- Options_AddPage(wParam, &odp, AAALangPack);
-
- odp.szTab.a = LPGEN("Status messages");
- odp.pfnDlgProc = DlgProcAutoAwayMsgOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_AUTOAWAYMSG);
- Options_AddPage(wParam, &odp, AAALangPack);
- return 0;
-}
diff --git a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp b/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp
deleted file mode 100644
index 7981175e5f..0000000000
--- a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- AdvancedAutoAway Plugin for Miranda-IM (www.miranda-im.org)
- Copyright 2003-2006 P. Boon
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
- Some code is copied from Miranda's AutoAway module
-*/
-
-#include "..\stdafx.h"
-
-#ifdef _DEBUG
-#define SECS_PER_MINUTE 20 /* speedup */
-#else
-#define SECS_PER_MINUTE 60 /* default I believe */
-#endif
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-int AAALangPack;
-
-static HANDLE hEvents[3];
-
-static BOOL ignoreLockKeys = FALSE;
-static BOOL ignoreSysKeys = FALSE;
-static BOOL ignoreAltCombo = FALSE;
-static BOOL monitorMouse = TRUE;
-static BOOL monitorKeyboard = TRUE;
-static HWND confirmDialog;
-static int mouseStationaryTimer;
-HHOOK hMirandaMouseHook = nullptr;
-HHOOK hMirandaKeyBoardHook = nullptr;
-#pragma data_seg("Shared")
-DWORD lastInput = 0;
-POINT lastMousePos = { 0 };
-HHOOK hMouseHook = nullptr;
-HHOOK hKeyBoardHook = nullptr;
-#pragma data_seg()
-#pragma comment(linker, "/section:Shared,rws")
-DWORD lastMirandaInput = 0;
-static UINT_PTR hAutoAwayTimer;
-// prototypes
-extern DWORD StatusModeToProtoFlag(int status);
-static int HookWindowsHooks(int hookMiranda, int hookAll);
-static int UnhookWindowsHooks();
-static LRESULT CALLBACK MouseHookFunction(int code, WPARAM wParam, LPARAM lParam);
-static LRESULT CALLBACK KeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam);
-static LRESULT CALLBACK MirandaMouseHookFunction(int code, WPARAM wParam, LPARAM lParam);
-static LRESULT CALLBACK MirandaKeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam);
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
-
-static VOID CALLBACK AutoAwayTimer(HWND hwnd, UINT message, UINT_PTR idEvent, DWORD dwTime);
-extern int AutoAwayOptInitialise(WPARAM wParam, LPARAM lParam);
-extern char *StatusModeToDbSetting(int status, const char *suffix);
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Load from DB
-
-void AAAUnloadOptions()
-{
- UnhookWindowsHooks();
- if (hAutoAwayTimer != 0)
- KillTimer(nullptr, hAutoAwayTimer);
-}
-
-void AAALoadOptions()
-{
- // if bOverride is enabled, samesettings will be ignored (for options loading)
- int monitorMiranda = FALSE; // use windows hooks?
- int monitorAll = FALSE; // use windows hooks?
-
- AAAUnloadOptions();
-
- ignoreLockKeys = db_get_b(0, AAAMODULENAME, SETTING_IGNLOCK, FALSE);
- ignoreSysKeys = db_get_b(0, AAAMODULENAME, SETTING_IGNSYSKEYS, FALSE);
- ignoreAltCombo = db_get_b(0, AAAMODULENAME, SETTING_IGNALTCOMBO, FALSE);
- monitorMouse = db_get_b(0, AAAMODULENAME, SETTING_MONITORMOUSE, TRUE);
- monitorKeyboard = db_get_b(0, AAAMODULENAME, SETTING_MONITORKEYBOARD, TRUE);
- lastInput = lastMirandaInput = GetTickCount();
-
- for (auto &it : protoList) {
- char* protoName;
- if ((db_get_b(0, AAAMODULENAME, SETTING_SAMESETTINGS, 0)))
- protoName = SETTING_ALL;
- else
- protoName = it->m_szName;
- LoadAutoAwaySetting(*it, protoName);
-
- if (it->optionFlags & FLAG_MONITORMIRANDA)
- monitorMiranda = TRUE;
- else if (ignoreLockKeys || ignoreSysKeys || ignoreAltCombo || (monitorMouse != monitorKeyboard))
- monitorAll = TRUE;
- }
-
- HookWindowsHooks(monitorMiranda, monitorAll);
- hAutoAwayTimer = SetTimer(nullptr, 0, db_get_w(0, AAAMODULENAME, SETTING_AWAYCHECKTIMEINSECS, 5) * 1000, AutoAwayTimer);
-}
-
-int LoadAutoAwaySetting(SMProto &autoAwaySetting, char* protoName)
-{
- char setting[128];
- mir_snprintf(setting, "%s_OptionFlags", protoName);
- autoAwaySetting.optionFlags = db_get_w(0, AAAMODULENAME, setting, FLAG_LV2ONINACTIVE | FLAG_RESET | FLAG_ENTERIDLE);
- mir_snprintf(setting, "%s_AwayTime", protoName);
- autoAwaySetting.awayTime = db_get_w(0, AAAMODULENAME, setting, SETTING_AWAYTIME_DEFAULT);
- mir_snprintf(setting, "%s_NATime", protoName);
- autoAwaySetting.naTime = db_get_w(0, AAAMODULENAME, setting, SETTING_NATIME_DEFAULT);
- mir_snprintf(setting, "%s_StatusFlags", protoName);
- autoAwaySetting.statusFlags = db_get_w(0, AAAMODULENAME, setting, StatusModeToProtoFlag(ID_STATUS_ONLINE) | StatusModeToProtoFlag(ID_STATUS_FREECHAT));
-
- int flags;
- if (db_get_b(0, AAAMODULENAME, SETTING_SAMESETTINGS, 0))
- flags = 0xFFFFFF;
- else
- flags = CallProtoService(protoName, PS_GETCAPS, PFLAGNUM_2, 0)&~CallProtoService(protoName, PS_GETCAPS, (WPARAM)PFLAGNUM_5, 0);
- mir_snprintf(setting, "%s_Lv1Status", protoName);
- autoAwaySetting.lv1Status = db_get_w(0, AAAMODULENAME, setting, (flags&StatusModeToProtoFlag(ID_STATUS_AWAY)) ? ID_STATUS_AWAY : ID_STATUS_OFFLINE);
- mir_snprintf(setting, "%s_Lv2Status", protoName);
- autoAwaySetting.lv2Status = db_get_w(0, AAAMODULENAME, setting, (flags&StatusModeToProtoFlag(ID_STATUS_NA)) ? ID_STATUS_NA : ID_STATUS_OFFLINE);
-
- return 0;
-}
-
-static int ProcessProtoAck(WPARAM, LPARAM lParam)
-{
- ACKDATA *ack = (ACKDATA*)lParam;
- if (ack->type != ACKTYPE_STATUS || ack->result != ACKRESULT_SUCCESS)
- return 0;
-
- log_debugA("ProcessProtoAck: ack->szModule: %s", ack->szModule);
- for (auto &it : protoList) {
- log_debugA("chk: %s", it->m_szName);
- if (!mir_strcmp(it->m_szName, ack->szModule)) {
- log_debugA("ack->szModule: %s p.statusChanged: %d", ack->szModule, it->bStatusChanged);
- if (!it->bStatusChanged)
- it->bManualStatus = true;
-
- it->bStatusChanged = false;
- }
- }
-
- return 0;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Account control event
-
-static char* status2descr(int status)
-{
- switch (status) {
- case ACTIVE: return "ACTIVE";
- case STATUS1_SET: return "STATUS1_SET";
- case STATUS2_SET: return "STATUS2_SET";
- case SET_ORGSTATUS: return "SET_ORGSTATUS";
- case HIDDEN_ACTIVE: return "HIDDEN_ACTIVE";
- }
- return "ERROR";
-}
-
-static int changeState(SMProto &setting, int mode, STATES newState)
-{
- if (setting.curState == newState)
- return 0;
-
- setting.oldState = setting.curState;
- setting.curState = newState;
-
- log_debugA("%s state change: %s -> %s", setting.m_szName, status2descr(setting.oldState), status2descr(setting.curState));
-
- if (setting.curState != SET_ORGSTATUS && setting.curState != ACTIVE && setting.bStatusChanged) {
- /* change the awaymessage */
- if (setting.m_szMsg != nullptr) {
- mir_free(setting.m_szMsg);
- setting.m_szMsg = nullptr;
- }
-
- if (db_get_b(0, AAAMODULENAME, StatusModeToDbSetting(setting.aaaStatus, SETTING_MSGCUSTOM), FALSE))
- setting.m_szMsg = db_get_wsa(0, AAAMODULENAME, StatusModeToDbSetting(setting.aaaStatus, SETTING_STATUSMSG));
- }
- else if (setting.m_szMsg != nullptr) {
- mir_free(setting.m_szMsg);
- setting.m_szMsg = nullptr;
- }
-
- if (setting.optionFlags & FLAG_ENTERIDLE) {
- if (newState == ACTIVE) // we're returning back
- Idle_Enter(-1);
- else
- Idle_Enter(mode);
- }
-
- return 0;
-}
-
-static int getIdleMode(int options)
-{
- if ((options & FLAG_ONSAVER) && IsScreenSaverRunning())
- return 1;
-
- if ((options & FLAG_ONLOCK) && IsWorkstationLocked())
- return 2;
-
- if ((options & FLAG_ONTS) && IsTerminalDisconnected())
- return 3;
-
- if ((options & FLAG_FULLSCREEN) && IsFullScreen())
- return 4;
-
- return 0;
-}
-
-static VOID CALLBACK AutoAwayTimer(HWND, UINT, UINT_PTR, DWORD)
-{
- int statusChanged = FALSE;
- int confirm = FALSE;
-
- for (auto &it : protoList) {
- it->aaaStatus = ID_STATUS_DISABLED;
-
- if (it->optionFlags & FLAG_MONITORMIRANDA)
- mouseStationaryTimer = (GetTickCount() - lastMirandaInput) / 1000;
- else {
- LASTINPUTINFO ii = { sizeof(ii) };
- GetLastInputInfo(&ii);
- mouseStationaryTimer = (GetTickCount() - ii.dwTime) / 1000;
- }
-
- int sts1Time = it->awayTime * SECS_PER_MINUTE;
- int sts2Time = it->naTime * SECS_PER_MINUTE;
- int sts1setTime = it->sts1setTimer == 0 ? 0 : (GetTickCount() - it->sts1setTimer) / 1000;
- int currentMode = Proto_GetStatus(it->m_szName);
-
- int mode = getIdleMode(it->optionFlags);
-
- /* check states */
- if (it->curState == ACTIVE) {
- if (((mouseStationaryTimer >= sts1Time && (it->optionFlags & FLAG_ONMOUSE)) || mode) && currentMode != it->lv1Status && it->statusFlags & StatusModeToProtoFlag(currentMode)) {
- if (it->optionFlags & FLAG_ONMOUSE)
- mode = 5;
-
- /* from ACTIVE to STATUS1_SET */
- it->m_lastStatus = it->originalStatusMode = Proto_GetStatus(it->m_szName);
- it->aaaStatus = it->lv1Status;
- it->sts1setTimer = GetTickCount();
- sts1setTime = 0;
- it->bStatusChanged = statusChanged = true;
- changeState(*it, mode, STATUS1_SET);
- }
- else if (mouseStationaryTimer >= sts2Time && currentMode == it->lv1Status && currentMode != it->lv2Status && (it->optionFlags & FLAG_SETNA) && (it->statusFlags & StatusModeToProtoFlag(currentMode))) {
- /* from ACTIVE to STATUS2_SET */
- it->m_lastStatus = it->originalStatusMode = Proto_GetStatus(it->m_szName);
- it->aaaStatus = it->lv2Status;
- it->bStatusChanged = statusChanged = true;
- changeState(*it, mode, STATUS2_SET);
- }
- }
-
- if (it->curState == STATUS1_SET) {
- if ((mouseStationaryTimer < sts1Time && !mode) && !(it->optionFlags & FLAG_RESET)) {
- /* from STATUS1_SET to HIDDEN_ACTIVE */
- changeState(*it, mode, HIDDEN_ACTIVE);
- it->m_lastStatus = Proto_GetStatus(it->m_szName);
- }
- else if (((mouseStationaryTimer < sts1Time) && !mode) &&
- ((it->optionFlags & FLAG_LV2ONINACTIVE) || (!(it->optionFlags & FLAG_SETNA))) &&
- (it->optionFlags & FLAG_RESET)) {
- /* from STATUS1_SET to SET_ORGSTATUS */
- changeState(*it, mode, SET_ORGSTATUS);
- }
- else if ((it->optionFlags & FLAG_SETNA) && sts1setTime >= sts2Time) {
- /* when set STATUS2, currentMode doesn't have to be in the selected status list (statusFlags) */
- /* from STATUS1_SET to STATUS2_SET */
- it->m_lastStatus = Proto_GetStatus(it->m_szName);
- it->aaaStatus = it->lv2Status;
- it->bStatusChanged = statusChanged = true;
- changeState(*it, mode, STATUS2_SET);
- }
- }
-
- if (it->curState == STATUS2_SET) {
- if (mouseStationaryTimer < sts2Time && !mode && (it->optionFlags & FLAG_RESET)) {
- /* from STATUS2_SET to SET_ORGSTATUS */
- changeState(*it, mode, SET_ORGSTATUS);
- }
- else if (mouseStationaryTimer < sts2Time && !mode && !(it->optionFlags & FLAG_RESET)) {
- /* from STATUS2_SET to HIDDEN_ACTIVE */
- /* Remember: after status1 is set, and "only on inactive" is NOT set, it implies !reset. */
- changeState(*it, mode, HIDDEN_ACTIVE);
- it->m_lastStatus = Proto_GetStatus(it->m_szName);
- }
- }
-
- if (it->curState == HIDDEN_ACTIVE) {
- if (it->bManualStatus) {
- /* HIDDEN_ACTIVE to ACTIVE */
- // it->bStatusChanged = false;
- changeState(*it, mode, ACTIVE);
- it->sts1setTimer = 0;
- it->bManualStatus = false;
- }
- else if ((it->optionFlags & FLAG_SETNA) && currentMode == it->lv1Status &&
- currentMode != it->lv2Status && (it->statusFlags & StatusModeToProtoFlag(currentMode)) &&
- (mouseStationaryTimer >= sts2Time || (sts1setTime >= sts2Time && !(it->optionFlags & FLAG_LV2ONINACTIVE)))) {
- /* HIDDEN_ACTIVE to STATUS2_SET */
- it->m_lastStatus = it->originalStatusMode = Proto_GetStatus(it->m_szName);
- it->aaaStatus = it->lv2Status;
- it->bStatusChanged = statusChanged = true;
- changeState(*it, mode, STATUS2_SET);
- }
- }
- if (it->curState == SET_ORGSTATUS) {
- /* SET_ORGSTATUS to ACTIVE */
- it->m_lastStatus = Proto_GetStatus(it->m_szName);
- it->aaaStatus = it->originalStatusMode;
- confirm = (it->optionFlags & FLAG_CONFIRM) ? TRUE : confirm;
- it->bStatusChanged = statusChanged = true;
- changeState(*it, mode, ACTIVE);
- it->sts1setTimer = 0;
- }
- it->bManualStatus = false;
- }
-
- if (confirm || statusChanged) {
- TProtoSettings ps(protoList); // make a copy of data not to pollute main array
- for (auto &it : ps)
- it->m_status = it->aaaStatus;
-
- if (confirm)
- confirmDialog = ShowConfirmDialogEx(&ps, db_get_w(0, AAAMODULENAME, SETTING_CONFIRMDELAY, 5));
- else if (statusChanged)
- SetStatusEx(ps);
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Windows hooks
-
-static int HookWindowsHooks(int hookMiranda, int hookAll)
-{
- if (hookMiranda) {
- if (monitorKeyboard && hMirandaKeyBoardHook == nullptr)
- hMirandaKeyBoardHook = SetWindowsHookEx(WH_KEYBOARD, MirandaKeyBoardHookFunction, nullptr, GetCurrentThreadId());
- if (monitorMouse && hMirandaMouseHook == nullptr)
- hMirandaMouseHook = SetWindowsHookEx(WH_MOUSE, MirandaMouseHookFunction, nullptr, GetCurrentThreadId());
- }
- if (hookAll) {
- if (monitorKeyboard && hKeyBoardHook == nullptr)
- hKeyBoardHook = SetWindowsHookEx(WH_KEYBOARD, KeyBoardHookFunction, nullptr, GetCurrentThreadId());
- if (monitorMouse && hMouseHook == nullptr)
- hMouseHook = SetWindowsHookEx(WH_MOUSE, MouseHookFunction, nullptr, GetCurrentThreadId());
- }
-
- return 0;
-}
-
-static int UnhookWindowsHooks()
-{
- UnhookWindowsHookEx(hMouseHook);
- UnhookWindowsHookEx(hKeyBoardHook);
- UnhookWindowsHookEx(hMirandaMouseHook);
- UnhookWindowsHookEx(hMirandaKeyBoardHook);
-
- hMouseHook = hKeyBoardHook = hMirandaMouseHook = hMirandaKeyBoardHook = nullptr;
- return 0;
-}
-
-static LRESULT CALLBACK MirandaMouseHookFunction(int code, WPARAM wParam, LPARAM lParam)
-{
- if (code >= 0) {
- PMOUSEHOOKSTRUCT mouseInfo = (PMOUSEHOOKSTRUCT)lParam;
- POINT pt = mouseInfo->pt;
-
- /* TioDuke's KeyBoardNotifyExt: only update if a Miranda window is focused */
- DWORD pid;
- GetWindowThreadProcessId(GetForegroundWindow(), &pid);
- if (pid != GetCurrentProcessId())
- return CallNextHookEx(hMirandaMouseHook, code, wParam, lParam);
-
- if (pt.x != lastMousePos.x || pt.y != lastMousePos.y) {
- lastMousePos = pt;
- lastMirandaInput = GetTickCount();
- }
- }
-
- return CallNextHookEx(hMirandaMouseHook, code, wParam, lParam);
-}
-
-static LRESULT CALLBACK MirandaKeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam)
-{
- if (code >= 0) {
- if (ignoreAltCombo) {
- if (((GetKeyState(VK_MENU) < 0) || (wParam == VK_MENU)) ||
- ((GetKeyState(VK_TAB) < 0) || (wParam == VK_TAB)) ||
- ((GetKeyState(VK_SHIFT) < 0) || (wParam == VK_SHIFT)) ||
- ((GetKeyState(VK_CONTROL) < 0) || (wParam == VK_CONTROL)) ||
- ((GetKeyState(VK_ESCAPE) < 0) || (wParam == VK_ESCAPE)) ||
- ((GetKeyState(VK_LWIN) < 0) || (wParam == VK_LWIN)) ||
- ((GetKeyState(VK_RWIN) < 0) || (wParam == VK_RWIN))) {
- return CallNextHookEx(hMirandaKeyBoardHook, code, wParam, lParam);
- }
- }
-
- switch (wParam) {
- case VK_NUMLOCK:
- case VK_CAPITAL:
- case VK_SCROLL:
- if (!ignoreLockKeys)
- lastMirandaInput = GetTickCount();
- break;
-
- case VK_TAB:
- case VK_SHIFT:
- case VK_CONTROL:
- case VK_MENU:
- case VK_ESCAPE:
- case VK_LWIN:
- case VK_RWIN:
- if (!ignoreSysKeys)
- lastMirandaInput = GetTickCount();
- break;
-
- default:
- lastMirandaInput = GetTickCount();
- break;
- }
- }
-
- return CallNextHookEx(hMirandaKeyBoardHook, code, wParam, lParam);
-}
-
-static LRESULT CALLBACK MouseHookFunction(int code, WPARAM wParam, LPARAM lParam)
-{
- if (code >= 0) {
- PMOUSEHOOKSTRUCT mouseInfo = (PMOUSEHOOKSTRUCT)lParam;
- POINT pt = mouseInfo->pt;
-
- /* TioDuke's KeyBoardNotifyExt: also grab clicks */
- if ((wParam >= WM_NCLBUTTONDOWN && wParam <= WM_NCXBUTTONDBLCLK && wParam != 0x00AA) || (wParam >= WM_LBUTTONDOWN && wParam <= WM_XBUTTONDBLCLK))
- lastInput = GetTickCount();
-
- if (pt.x != lastMousePos.x || pt.y != lastMousePos.y) {
- lastMousePos = pt;
- lastInput = GetTickCount();
- }
- }
-
- return CallNextHookEx(hMouseHook, code, wParam, lParam);
-}
-
-static LRESULT CALLBACK KeyBoardHookFunction(int code, WPARAM wParam, LPARAM lParam)
-{
- if (code >= 0) {
- if (ignoreAltCombo) {
- if (((GetKeyState(VK_MENU) < 0) || (wParam == VK_MENU)) ||
- ((GetKeyState(VK_TAB) < 0) || (wParam == VK_TAB)) ||
- ((GetKeyState(VK_SHIFT) < 0) || (wParam == VK_SHIFT)) ||
- ((GetKeyState(VK_CONTROL) < 0) || (wParam == VK_CONTROL)) ||
- ((GetKeyState(VK_ESCAPE) < 0) || (wParam == VK_ESCAPE)) ||
- ((GetKeyState(VK_LWIN) < 0) || (wParam == VK_LWIN)) ||
- ((GetKeyState(VK_RWIN) < 0) || (wParam == VK_RWIN))) {
- return CallNextHookEx(hKeyBoardHook, code, wParam, lParam);
- }
- }
-
- switch (wParam) {
- case VK_NUMLOCK:
- case VK_CAPITAL:
- case VK_SCROLL:
- if (!ignoreLockKeys)
- lastInput = GetTickCount();
- break;
-
- case VK_TAB:
- case VK_SHIFT:
- case VK_CONTROL:
- case VK_MENU:
- case VK_ESCAPE:
- case VK_LWIN:
- case VK_RWIN:
- if (!ignoreSysKeys)
- lastInput = GetTickCount();
- break;
-
- default:
- lastInput = GetTickCount();
- break;
- }
- }
-
- return CallNextHookEx(hKeyBoardHook, code, wParam, lParam);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Inits & stuff
-
-static int AutoAwayShutdown(WPARAM, LPARAM)
-{
- AAAUnloadOptions();
- return 0;
-}
-
-int AAAModuleLoaded(WPARAM, LPARAM)
-{
- hEvents[0] = HookEvent(ME_OPT_INITIALISE, AutoAwayOptInitialise);
- hEvents[1] = HookEvent(ME_SYSTEM_PRESHUTDOWN, AutoAwayShutdown);
- hEvents[2] = HookEvent(ME_PROTO_ACK, ProcessProtoAck);
-
- mouseStationaryTimer = 0;
- lastInput = lastMirandaInput = GetTickCount();
-
- ////////////////////////////////////////////////////////////////////////////////////////
-
- AAALoadOptions();
- return 0;
-}
-
-void AdvancedAutoAwayLoad()
-{
- AAALangPack = GetPluginLangId(MIID_LAST, 0);
-
- if (g_bMirandaLoaded)
- AAAModuleLoaded(0, 0);
- else
- HookEvent(ME_SYSTEM_MODULESLOADED, AAAModuleLoaded);
-}
-
-void AdvancedAutoAwayUnload()
-{
- if (g_bMirandaLoaded)
- AutoAwayShutdown(0, 0);
-
- KillModuleOptions(AAALangPack);
-
- for (auto &it : hEvents) {
- UnhookEvent(it);
- it = nullptr;
- }
-
- protoList.destroy();
-}
diff --git a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.h b/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.h
deleted file mode 100644
index e2d6b4ec61..0000000000
--- a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- AdvancedAutoAway Plugin for Miranda-IM (www.miranda-im.org)
- Copyright 2003-2006 P. Boon
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-#ifndef __ADVANCED_AUTOAWAY_HEADER
-#define __ADVANCED_AUTOAWAY_HEADER
-
-#define AAAMODULENAME "AdvancedAutoAway"
-#define SETTING_IGNLOCK "IgnoreLockKeys"
-#define SETTING_IGNSYSKEYS "IgnoreSysKeys"
-#define SETTING_IGNALTCOMBO "IgnoreAltCombo"
-#define SETTING_SAMESETTINGS "SameAutoAwaySettings"
-#define SETTING_ALL "ALLPROTOS"
-#define SETTING_MSGCUSTOM "Custom"
-#define SETTING_STATUSMSG "Msg"
-#define SETTING_CONFIRMDELAY "ConfirmTimeout"
-#define SETTING_ENTERIDLE "EnterIdle"
-
-#define SETTING_AWAYTIME_DEFAULT 5
-#define SETTING_NATIME_DEFAULT 20
-#define SETTING_AWAYCHECKTIMEINSECS "CheckInterval"
-
-#define SETTING_MONITORMOUSE "MonitorMouse"
-#define SETTING_MONITORKEYBOARD "MonitorKeyboard"
-
-void AdvancedAutoAwayLoad();
-void AdvancedAutoAwayUnload();
-
-int LoadAutoAwaySetting(SMProto&, char *protoName);
-void AAALoadOptions();
-
-#endif