/* Copyright (c) 2015-17 Miranda NG project (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 . */ #include "stdafx.h" LIST CSkypeProto::Accounts(1, CSkypeProto::CompareAccounts); int CSkypeProto::CompareAccounts(const CSkypeProto *p1, const CSkypeProto *p2) { return mir_wstrcmp(p1->m_tszUserName, p2->m_tszUserName); } CSkypeProto* CSkypeProto::InitAccount(const char *protoName, const wchar_t *userName) { mir_cslock lck(accountsLock); CSkypeProto *proto = new CSkypeProto(protoName, userName); Accounts.insert(proto); return proto; } int CSkypeProto::UninitAccount(CSkypeProto *proto) { mir_cslock lck(accountsLock); Accounts.remove(proto); delete proto; return 0; } CSkypeProto* CSkypeProto::GetContactAccount(MCONTACT hContact) { mir_cslock lck(accountsLock); for (int i = 0; i < Accounts.getCount(); i++) if (mir_strcmpi(GetContactProto(hContact), Accounts[i]->m_szModuleName) == 0) return Accounts[i]; return NULL; } int CSkypeProto::OnAccountLoaded(WPARAM, LPARAM) { SetAllContactsStatus(ID_STATUS_OFFLINE); HookProtoEvent(ME_OPT_INITIALISE, &CSkypeProto::OnOptionsInit); HookProtoEvent(ME_MSG_PRECREATEEVENT, &CSkypeProto::OnPreCreateMessage); HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CSkypeProto::OnDbEventRead); InitDBEvents(); InitPopups(); InitGroupChatModule(); return 0; } INT_PTR CSkypeProto::OnAccountManagerInit(WPARAM, LPARAM lParam) { return (INT_PTR)(CSkypeOptionsMain::CreateAccountManagerPage(this, (HWND)lParam))->GetHwnd(); }