示例#1
0
static void TlenRegisterIcons()
{
	hEventSkin2IconsChanged = HookEvent_Ex(ME_SKIN2_ICONSCHANGED, IcoLibIconsChanged);
	if (hEventSkin2IconsChanged) {
		char iconName[256];
		char path[MAX_PATH];
		SKINICONDESC sid = { 0 };
		GetModuleFileNameA(hInst, path, MAX_PATH);
		sid.cbSize = sizeof(SKINICONDESC);
		sid.cx = sid.cy = 16;
		sid.pszSection = jabberModuleName;
		sid.pszDefaultFile = path;
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_TLEN);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_TLEN;
		sid.pszDescription = GetIconDescription(TLEN_IDI_TLEN);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_MAIL);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_MAIL;
		sid.pszDescription = GetIconDescription(TLEN_IDI_MAIL);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_MUC);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_MUC;
		sid.pszDescription = GetIconDescription(TLEN_IDI_MUC);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_CHATS);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_CHATS;
		sid.pszDescription = GetIconDescription(TLEN_IDI_CHATS);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_GRANT);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_GRANT;
		sid.pszDescription = GetIconDescription(TLEN_IDI_GRANT);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_REQUEST);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_REQUEST;
		sid.pszDescription = GetIconDescription(TLEN_IDI_REQUEST);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_VOICE);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_VOICE;
		sid.pszDescription = GetIconDescription(TLEN_IDI_VOICE);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_MICROPHONE);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_MICROPHONE;
		sid.pszDescription = GetIconDescription(TLEN_IDI_MICROPHONE);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
		GetIconName(iconName, sizeof(iconName), TLEN_IDI_SPEAKER);
		sid.pszName = (char *) iconName;
		sid.iDefaultIndex = -IDI_SPEAKER;
		sid.pszDescription = GetIconDescription(TLEN_IDI_SPEAKER);
		CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
	}
	TlenLoadIcons();
}
示例#2
0
static int ModulesLoaded(WPARAM wParam, LPARAM lParam)
{
	char str[128];
	JabberWsInit();
	//JabberSslInit();
	TlenMUCInit();
	HookEvent_Ex(ME_USERINFO_INITIALISE, TlenUserInfoInit);
	sprintf(str, "%s", TranslateT("Incoming mail"));
	SkinAddNewSoundEx("TlenMailNotify", jabberModuleName, str);
	sprintf(str, "%s", TranslateT("Alert"));
	SkinAddNewSoundEx("TlenAlertNotify", jabberModuleName, str);
	sprintf(str, "%s", TranslateT("Voice chat"));
	SkinAddNewSoundEx("TlenVoiceNotify", jabberModuleName, str);
	return 0;
}
示例#3
0
int __declspec(dllexport) Load(PLUGINLINK *link)
{
	PROTOCOLDESCRIPTOR pd;
	HANDLE hContact;
	char s[256];
	char text[_MAX_PATH];
	char *p, *q;
	char *szProto;
	CLISTMENUITEM mi, clmi;
	DBVARIANT dbv;

	pluginLink = link;
	memoryManagerInterface.cbSize = sizeof(struct MM_INTERFACE);
	CallService(MS_SYSTEM_GET_MMI,0,(LPARAM)&memoryManagerInterface);

	GetModuleFileName(hInst, text, sizeof(text));
	p = strrchr(text, '\\');
	p++;
	q = strrchr(p, '.');
	*q = '\0';
	jabberProtoName = mir_strdup(p);
	_strupr(jabberProtoName);

	jabberModuleName = mir_strdup(jabberProtoName);
	_strlwr(jabberModuleName);
	jabberModuleName[0] = toupper(jabberModuleName[0]);

	JabberLog("Setting protocol/module name to '%s/%s'", jabberProtoName, jabberModuleName);

	DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0);
	jabberMainThreadId = GetCurrentThreadId();
	//hLibSSL = NULL;
//	hWndListGcLog = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0);

	TlenRegisterIcons();
	TlenLoadOptions();

	HookEvent_Ex(ME_OPT_INITIALISE, TlenOptInit);
	HookEvent_Ex(ME_SYSTEM_MODULESLOADED, ModulesLoaded);
	HookEvent_Ex(ME_SYSTEM_PRESHUTDOWN, PreShutdown);

	sprintf(s, "%s/%s", jabberProtoName, "Nudge");
	hTlenNudge = CreateHookableEvent(s);

	// Register protocol module
	ZeroMemory(&pd, sizeof(PROTOCOLDESCRIPTOR));
	pd.cbSize = sizeof(PROTOCOLDESCRIPTOR);
	pd.szName = jabberProtoName;
	pd.type = PROTOTYPE_PROTOCOL;
	CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM) &pd);


	memset(&mi, 0, sizeof(CLISTMENUITEM));
	mi.cbSize = sizeof(CLISTMENUITEM);
	memset(&clmi, 0, sizeof(CLISTMENUITEM));
	clmi.cbSize = sizeof(CLISTMENUITEM);
	clmi.flags = CMIM_FLAGS | CMIF_GRAYED;

	mi.pszPopupName = jabberModuleName;
	mi.popupPosition = 500090000;

	wsprintf(text, "%s/MainMenuChats", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenMUCMenuHandleChats);
	mi.pszName = TranslateT("Tlen Chats");
	mi.position = 2000050001;
	mi.hIcon = tlenIcons[TLEN_IDI_CHATS];
	mi.pszService = text;
	hMenuChats = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi);
	CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuChats, (LPARAM) &clmi);

	// "Multi-User Conference"
	wsprintf(text, "%s/MainMenuMUC", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenMUCMenuHandleMUC);
	mi.pszName = TranslateT("Multi-User Conference");
	mi.position = 2000050002;
	mi.hIcon = tlenIcons[TLEN_IDI_MUC];
	mi.pszService = text;
	hMenuMUC = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi);
	CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuMUC, (LPARAM) &clmi);

	wsprintf(text, "%s/MainMenuInbox", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenMenuHandleInbox);
	mi.pszName = TranslateT("Tlen Inbox");
	mi.position = 2000050003;
	mi.hIcon = tlenIcons[TLEN_IDI_MAIL];
	mi.pszService = text;
	hMenuInbox = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi);

	// "Invite to MUC"
	sprintf(text, "%s/ContactMenuMUC", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenMUCContactMenuHandleMUC);
	mi.pszName = TranslateT("Multi-User Conference");
	mi.position = -2000020000;
	mi.hIcon = tlenIcons[TLEN_IDI_MUC];
	mi.pszService = text;
	mi.pszContactOwner = jabberProtoName;
	hMenuContactMUC = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	// "Invite to voice chat"
	sprintf(text, "%s/ContactMenuVoice", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenVoiceContactMenuHandleVoice);
	mi.pszName = TranslateT("Voice Chat");
	mi.position = -2000018000;
	mi.hIcon = tlenIcons[TLEN_IDI_VOICE];
	mi.pszService = text;
	mi.pszContactOwner = jabberProtoName;
	hMenuContactVoice = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	// "Request authorization"
	sprintf(text, "%s/RequestAuth", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenContactMenuHandleRequestAuth);
	mi.pszName = TranslateT("Request authorization");
	mi.position = -2000001001;
	mi.hIcon = tlenIcons[TLEN_IDI_REQUEST];
	mi.pszService = text;
	mi.pszContactOwner = jabberProtoName;
	hMenuContactRequestAuth = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	// "Grant authorization"
	sprintf(text, "%s/GrantAuth", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenContactMenuHandleGrantAuth);
	mi.pszName = TranslateT("Grant authorization");
	mi.position = -2000001000;
	mi.hIcon = tlenIcons[TLEN_IDI_GRANT];
	mi.pszService = text;
	mi.pszContactOwner = jabberProtoName;
	hMenuContactGrantAuth = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	// "Send picture"
	sprintf(text, "%s/SendPicture", jabberModuleName);
	CreateServiceFunction_Ex(text, TlenContactMenuHandleSendPicture);
	mi.pszName = TranslateT("Send picture");
//	clmi.flags = CMIM_FLAGS | CMIF_NOTOFFLINE;// | CMIF_GRAYED;
	mi.position = -2000001002;
	mi.hIcon = tlenIcons[TLEN_IDI_GRANT];
	mi.pszService = text;
	mi.pszContactOwner = jabberProtoName;
	//CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); //hMenuContactGrantAuth = (HANDLE)

	mi.position = -2000020000;
	mi.flags = CMIF_NOTONLINE;
	mi.hIcon = LoadSkinnedIcon(SKINICON_EVENT_FILE);
	mi.pszName = TranslateT("&File");
	mi.pszService = MS_FILE_SENDFILE;
	mi.pszContactOwner = jabberProtoName;
	hMenuContactFile = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi);

	HookEvent_Ex(ME_CLIST_PREBUILDCONTACTMENU, TlenPrebuildContactMenu);

	if (!DBGetContactSetting(NULL, jabberProtoName, "LoginServer", &dbv)) {
		DBFreeVariant(&dbv);
	} else {
		DBWriteContactSettingString(NULL, jabberProtoName, "LoginServer", "tlen.pl");
	}
	if (!DBGetContactSetting(NULL, jabberProtoName, "ManualHost", &dbv)) {
		DBFreeVariant(&dbv);
	} else {
		DBWriteContactSettingString(NULL, jabberProtoName, "ManualHost", "s1.tlen.pl");
	}

	// Set all contacts to offline
	hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
	while (hContact != NULL) {
		szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0);
		if(szProto!=NULL && !strcmp(szProto, jabberProtoName)) {
			if (DBGetContactSettingWord(hContact, jabberProtoName, "Status", ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE) {
				DBWriteContactSettingWord(hContact, jabberProtoName, "Status", ID_STATUS_OFFLINE);
			}
		}
		hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0);
	}

	streamId = NULL;
	jabberThreadInfo = NULL;
	jabberConnected = FALSE;
	jabberOnline = FALSE;
	jabberStatus = ID_STATUS_OFFLINE;
	memset((char *) &modeMsgs, 0, sizeof(JABBER_MODEMSGS));
	//jabberModeMsg = NULL;
	jabberCodePage = CP_ACP;

	InitializeCriticalSection(&mutex);
	InitializeCriticalSection(&modeMsgMutex);

	srand((unsigned) time(NULL));
	JabberSerialInit();
	JabberIqInit();
	JabberListInit();
	JabberSvcInit();

	return 0;
}
void HookEvents(void)
{
	HookEvent_Ex(ME_CLIST_PREBUILDCONTACTMENU, CList_PrebuildContactMenu);
}
示例#5
0
BOOL TlenMUCInit(void)
{
	HookEvent_Ex(ME_MUCC_EVENT, TlenMUCHandleEvent);
	return 0;
}