/*
Sessions Management plugin for Miranda IM
Copyright (C) 2007-2008 Danil Mozhar
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 3 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, see .
*/
#pragma once
#define _CRT_SECURE_NO_DEPRECATE
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include "Utils.h"
#include "version.h"
#include "Resource.h"
#define MODULENAME "Sessions"
struct CMPlugin : public PLUGIN
{
	CMOption g_lastUserId, g_lastDateId;
	CMOption bExclHidden, bWarnOnHidden, bOtherWarnings, bCrashRecovery;
	CMOption iTrackCount, iStartupDelay;
	CMPlugin();
	void CheckImport();
	int Load() override;
};
/////////////////////////////////////////////////////////////////////////////////////////
struct CSession
{
	int id;
	CMStringW wszName;
	std::vector contacts;
	bool bIsFavorite = false, bIsUser = false;
	void fromString(const char *str);
	std::string toString() const;
	CMStringA getSetting() const;
	void remove();
	void save();
};
extern OBJLIST g_arUserSessions, g_arDateSessions;
/////////////////////////////////////////////////////////////////////////////////////////
int  LoadSession(CSession *pSession);
void CALLBACK LaunchSessions();
INT_PTR CloseCurrentSession(WPARAM, LPARAM);
INT_PTR LoadLastSession(WPARAM, LPARAM);
INT_PTR OpenSessionsManagerWindow(WPARAM, LPARAM);
INT_PTR SaveUserSessionHandles(WPARAM, LPARAM);
extern MCONTACT session_list_recovered[255];
extern MCONTACT session_list[255];
extern HWND g_hDlg, g_hSDlg;
extern bool g_bLastSessionPresent;
extern bool g_bIncompletedSave;
#define TIMERID_SHOW 11
#define TIMERID_LOAD 12