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(); }
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; }
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); }
BOOL TlenMUCInit(void) { HookEvent_Ex(ME_MUCC_EVENT, TlenMUCHandleEvent); return 0; }