summaryrefslogtreecommitdiff
path: root/plugins/Sessions/Src/LoadSessions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Sessions/Src/LoadSessions.cpp')
-rw-r--r--plugins/Sessions/Src/LoadSessions.cpp454
1 files changed, 227 insertions, 227 deletions
diff --git a/plugins/Sessions/Src/LoadSessions.cpp b/plugins/Sessions/Src/LoadSessions.cpp
index de9e428d0a..690ff664d2 100644
--- a/plugins/Sessions/Src/LoadSessions.cpp
+++ b/plugins/Sessions/Src/LoadSessions.cpp
@@ -1,227 +1,227 @@
-/*
-Copyright (C) 2012-22 Miranda NG team (https://miranda-ng.org)
-
-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 version 2
-of the License.
-
-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, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "stdafx.h"
-
-static bool g_bDontShow, g_bStartup;
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-class CLoadSessionDlg : public CDlgBase
-{
- CSession *pSession = nullptr;
-
- CTimer timerShow, timerLoad;
- CCtrlCombo m_list;
- CCtrlButton btnDelete;
-
-public:
- CLoadSessionDlg() :
- CDlgBase(g_plugin, IDD_WLCMDIALOG),
- m_list(this, IDC_LIST),
- btnDelete(this, IDC_SESSDEL),
- timerLoad(this, TIMERID_LOAD),
- timerShow(this, TIMERID_SHOW)
- {
- btnDelete.OnClick = Callback(this, &CLoadSessionDlg::onClick_Delete);
-
- m_list.OnSelChanged = Callback(this, &CLoadSessionDlg::onSelChange_List);
-
- timerLoad.OnEvent = Callback(this, &CLoadSessionDlg::onTimer_Load);
- timerShow.OnEvent = Callback(this, &CLoadSessionDlg::onTimer_Show);
- }
-
- bool OnInitDialog() override
- {
- g_hDlg = m_hwnd;
-
- LoadSessionToCombobox(m_list, false);
- LoadSessionToCombobox(m_list, true);
- m_list.SetCurSel(0);
- pSession = (CSession *)m_list.GetItemData(0);
-
- int iDelay = g_plugin.getWord("StartupModeDelay", 1500);
- if (g_bDontShow == TRUE)
- timerLoad.Start(iDelay);
- else {
- LoadPosition(m_hwnd, "LoadDlg");
- if (g_bStartup)
- timerShow.Start(iDelay);
- else
- Show();
- }
-
- return true;
- }
-
- bool OnApply() override
- {
- if (!LoadSession(pSession))
- return true;
-
- return false;
- }
-
- void OnDestroy() override
- {
- SavePosition(m_hwnd, "LoadDlg");
- g_hDlg = nullptr;
- }
-
- void onTimer_Load(CTimer *pTimer)
- {
- pTimer->Stop();
- LoadSession(pSession);
- g_bDontShow = g_bStartup = false;
- Close();
- }
-
- void onTimer_Show(CTimer *pTimer)
- {
- pTimer->Stop();
- Show();
- g_bStartup = FALSE;
- }
-
- void onSelChange_List(CCtrlCombo *)
- {
- int index = m_list.GetCurSel();
- if (index != CB_ERR)
- pSession = (CSession*)m_list.GetItemData(index);
- }
-
- void onClick_Delete(CCtrlButton *)
- {
- if (pSession == nullptr) {
- if (session_list_recovered[0]) {
- for (int i = 0; session_list_recovered[i]; i++)
- g_plugin.setByte(session_list_recovered[i], "wasInLastSession", 0);
- memset(session_list_recovered, 0, sizeof(session_list_recovered));
- }
- g_bIncompletedSave = 0;
- }
- else pSession->remove();
-
- m_list.ResetContent();
- LoadSessionToCombobox(m_list, false);
- LoadSessionToCombobox(m_list, true);
-
- m_list.SetCurSel(0);
- btnDelete.Enable(m_list.GetCount() != 0);
- }
-};
-
-INT_PTR OpenSessionsManagerWindow(WPARAM, LPARAM)
-{
- if (g_hDlg) {
- ShowWindow(g_hDlg, SW_SHOW);
- return 0;
- }
-
- if (g_bIncompletedSave || g_arDateSessions.getCount() || g_arUserSessions.getCount()) {
- (new CLoadSessionDlg())->Create();
- return 0;
- }
-
- if (g_bOtherWarnings)
- MessageBox(nullptr, TranslateT("No sessions to open"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
- return 1;
-}
-
-void CALLBACK LaunchSessions()
-{
- int startup = g_plugin.getByte("StartupMode", 3);
- if (startup == 1 || (startup == 3 && g_bLastSessionPresent)) {
- g_bStartup = true;
- (new CLoadSessionDlg())->Create();
- }
- else if (startup == 2 && g_bLastSessionPresent) {
- g_bDontShow = true;
- (new CLoadSessionDlg())->Create();
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-INT_PTR LoadLastSession(WPARAM, LPARAM)
-{
- int cnt = g_arDateSessions.getCount();
- if (g_bLastSessionPresent && cnt)
- return LoadSession(&g_arDateSessions[cnt-1]);
-
- if (g_bOtherWarnings)
- MessageBox(nullptr, TranslateT("Last Sessions is empty"), TranslateT("Sessions Manager"), MB_OK);
- return 0;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Load session dialog
-
-int LoadSession(CSession *pSession)
-{
- int dup = 0;
- int hidden[255] = { '0' };
-
- MCONTACT session_list_t[255] = {};
- if (session_list_recovered[0] && pSession == nullptr)
- memcpy(session_list_t, session_list_recovered, sizeof(session_list_t));
- else {
- int i = 0;
- for (auto &cc : pSession->contacts)
- session_list_t[i++] = cc;
- }
-
- int i = 0, j = 0;
- // TODO: change to "switch"
- while (session_list_t[i] != 0) {
- if (CheckForDuplicate(session_list, session_list_t[i]) == -1)
- Clist_ContactDoubleClicked(session_list_t[i]);
- else if (g_bWarnOnHidden) {
- if (!CheckContactVisibility(session_list_t[i])) {
- hidden[j] = i + 1;
- j++;
- }
- dup++;
- }
- i++;
- }
-
- if (i == 0) {
- if (g_bOtherWarnings)
- MessageBox(nullptr, TranslateT("No contacts to open"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
- return 1;
- }
-
- if (dup == i) {
- if (!hidden[i]) {
- if (g_bOtherWarnings)
- MessageBox(nullptr, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
- return 1;
- }
- if (!g_bWarnOnHidden && g_bOtherWarnings) {
- MessageBox(nullptr, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
- return 1;
- }
- if (g_bWarnOnHidden) {
- if (IDYES == MessageBox(nullptr, TranslateT("This Session already opened (but probably hidden).\nDo you want to show hidden contacts?"), TranslateT("Sessions Manager"), MB_YESNO | MB_ICONQUESTION))
- for (j = 0; hidden[j] != 0; j++)
- Clist_ContactDoubleClicked(session_list_t[hidden[j] - 1]);
- }
- }
-
- return 0;
-}
+/*
+Copyright (C) 2012-23 Miranda NG team (https://miranda-ng.org)
+
+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 version 2
+of the License.
+
+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, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
+
+static bool g_bDontShow, g_bStartup;
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+class CLoadSessionDlg : public CDlgBase
+{
+ CSession *pSession = nullptr;
+
+ CTimer timerShow, timerLoad;
+ CCtrlCombo m_list;
+ CCtrlButton btnDelete;
+
+public:
+ CLoadSessionDlg() :
+ CDlgBase(g_plugin, IDD_WLCMDIALOG),
+ m_list(this, IDC_LIST),
+ btnDelete(this, IDC_SESSDEL),
+ timerLoad(this, TIMERID_LOAD),
+ timerShow(this, TIMERID_SHOW)
+ {
+ btnDelete.OnClick = Callback(this, &CLoadSessionDlg::onClick_Delete);
+
+ m_list.OnSelChanged = Callback(this, &CLoadSessionDlg::onSelChange_List);
+
+ timerLoad.OnEvent = Callback(this, &CLoadSessionDlg::onTimer_Load);
+ timerShow.OnEvent = Callback(this, &CLoadSessionDlg::onTimer_Show);
+ }
+
+ bool OnInitDialog() override
+ {
+ g_hDlg = m_hwnd;
+
+ LoadSessionToCombobox(m_list, false);
+ LoadSessionToCombobox(m_list, true);
+ m_list.SetCurSel(0);
+ pSession = (CSession *)m_list.GetItemData(0);
+
+ int iDelay = g_plugin.getWord("StartupModeDelay", 1500);
+ if (g_bDontShow == TRUE)
+ timerLoad.Start(iDelay);
+ else {
+ LoadPosition(m_hwnd, "LoadDlg");
+ if (g_bStartup)
+ timerShow.Start(iDelay);
+ else
+ Show();
+ }
+
+ return true;
+ }
+
+ bool OnApply() override
+ {
+ if (!LoadSession(pSession))
+ return true;
+
+ return false;
+ }
+
+ void OnDestroy() override
+ {
+ SavePosition(m_hwnd, "LoadDlg");
+ g_hDlg = nullptr;
+ }
+
+ void onTimer_Load(CTimer *pTimer)
+ {
+ pTimer->Stop();
+ LoadSession(pSession);
+ g_bDontShow = g_bStartup = false;
+ Close();
+ }
+
+ void onTimer_Show(CTimer *pTimer)
+ {
+ pTimer->Stop();
+ Show();
+ g_bStartup = FALSE;
+ }
+
+ void onSelChange_List(CCtrlCombo *)
+ {
+ int index = m_list.GetCurSel();
+ if (index != CB_ERR)
+ pSession = (CSession*)m_list.GetItemData(index);
+ }
+
+ void onClick_Delete(CCtrlButton *)
+ {
+ if (pSession == nullptr) {
+ if (session_list_recovered[0]) {
+ for (int i = 0; session_list_recovered[i]; i++)
+ g_plugin.setByte(session_list_recovered[i], "wasInLastSession", 0);
+ memset(session_list_recovered, 0, sizeof(session_list_recovered));
+ }
+ g_bIncompletedSave = 0;
+ }
+ else pSession->remove();
+
+ m_list.ResetContent();
+ LoadSessionToCombobox(m_list, false);
+ LoadSessionToCombobox(m_list, true);
+
+ m_list.SetCurSel(0);
+ btnDelete.Enable(m_list.GetCount() != 0);
+ }
+};
+
+INT_PTR OpenSessionsManagerWindow(WPARAM, LPARAM)
+{
+ if (g_hDlg) {
+ ShowWindow(g_hDlg, SW_SHOW);
+ return 0;
+ }
+
+ if (g_bIncompletedSave || g_arDateSessions.getCount() || g_arUserSessions.getCount()) {
+ (new CLoadSessionDlg())->Create();
+ return 0;
+ }
+
+ if (g_bOtherWarnings)
+ MessageBox(nullptr, TranslateT("No sessions to open"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
+ return 1;
+}
+
+void CALLBACK LaunchSessions()
+{
+ int startup = g_plugin.getByte("StartupMode", 3);
+ if (startup == 1 || (startup == 3 && g_bLastSessionPresent)) {
+ g_bStartup = true;
+ (new CLoadSessionDlg())->Create();
+ }
+ else if (startup == 2 && g_bLastSessionPresent) {
+ g_bDontShow = true;
+ (new CLoadSessionDlg())->Create();
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+INT_PTR LoadLastSession(WPARAM, LPARAM)
+{
+ int cnt = g_arDateSessions.getCount();
+ if (g_bLastSessionPresent && cnt)
+ return LoadSession(&g_arDateSessions[cnt-1]);
+
+ if (g_bOtherWarnings)
+ MessageBox(nullptr, TranslateT("Last Sessions is empty"), TranslateT("Sessions Manager"), MB_OK);
+ return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Load session dialog
+
+int LoadSession(CSession *pSession)
+{
+ int dup = 0;
+ int hidden[255] = { '0' };
+
+ MCONTACT session_list_t[255] = {};
+ if (session_list_recovered[0] && pSession == nullptr)
+ memcpy(session_list_t, session_list_recovered, sizeof(session_list_t));
+ else {
+ int i = 0;
+ for (auto &cc : pSession->contacts)
+ session_list_t[i++] = cc;
+ }
+
+ int i = 0, j = 0;
+ // TODO: change to "switch"
+ while (session_list_t[i] != 0) {
+ if (CheckForDuplicate(session_list, session_list_t[i]) == -1)
+ Clist_ContactDoubleClicked(session_list_t[i]);
+ else if (g_bWarnOnHidden) {
+ if (!CheckContactVisibility(session_list_t[i])) {
+ hidden[j] = i + 1;
+ j++;
+ }
+ dup++;
+ }
+ i++;
+ }
+
+ if (i == 0) {
+ if (g_bOtherWarnings)
+ MessageBox(nullptr, TranslateT("No contacts to open"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
+ return 1;
+ }
+
+ if (dup == i) {
+ if (!hidden[i]) {
+ if (g_bOtherWarnings)
+ MessageBox(nullptr, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
+ return 1;
+ }
+ if (!g_bWarnOnHidden && g_bOtherWarnings) {
+ MessageBox(nullptr, TranslateT("This Session already opened"), TranslateT("Sessions Manager"), MB_OK | MB_ICONWARNING);
+ return 1;
+ }
+ if (g_bWarnOnHidden) {
+ if (IDYES == MessageBox(nullptr, TranslateT("This Session already opened (but probably hidden).\nDo you want to show hidden contacts?"), TranslateT("Sessions Manager"), MB_YESNO | MB_ICONQUESTION))
+ for (j = 0; hidden[j] != 0; j++)
+ Clist_ContactDoubleClicked(session_list_t[hidden[j] - 1]);
+ }
+ }
+
+ return 0;
+}