summaryrefslogtreecommitdiff
path: root/protocols/Skype/src/skype_hooks.cpp
blob: 42155750c99b0bd30080d045a7bbcf18dc446f98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "skype_proto.h"

LIST<void> CSkypeProto::hookList(1);

void CSkypeProto::InitHookList()
{
	CSkypeProto::hookList.insert(
		::HookEvent(ME_CLIST_PREBUILDCONTACTMENU, &CSkypeProto::PrebuildContactMenu));
}

void CSkypeProto::UninitHookList()
{
	for (int i = 0; i < CSkypeProto::hookList.getCount(); i++)
		::UnhookEvent(CSkypeProto::hookList[i]);
}

HANDLE CSkypeProto::HookEvent(const char* szEvent, SkypeEventFunc handler)
{
	HANDLE hook = ::HookEventObj(szEvent, (MIRANDAHOOKOBJ)*( void**)&handler, this);
	this->instanceHookList.insert(hook);
	return hook;
}

void CSkypeProto::InitInstanceHookList()
{
	this->HookEvent(ME_OPT_INITIALISE,		&CSkypeProto::OnOptionsInit);
	this->HookEvent(ME_USERINFO_INITIALISE, &CSkypeProto::OnUserInfoInit);

	this->HookEvent(ME_MSG_PRECREATEEVENT,	&CSkypeProto::OnMessagePreCreate);

	this->HookEvent(ME_MSG_BUTTONPRESSED,	&CSkypeProto::OnTabSRMMButtonPressed); 
}

void CSkypeProto::UninitInstanceHookList()
{
	for (int i = 0; i < this->instanceHookList.getCount(); i++)
		::UnhookEvent(this->instanceHookList[i]);
}