int CMsnProto::OnModulesLoaded(WPARAM, LPARAM) { if (msnHaveChatDll) { GCREGISTER gcr = {0}; gcr.cbSize = sizeof(GCREGISTER); gcr.dwFlags = GC_TYPNOTIF | GC_CHANMGR | GC_TCHAR; gcr.iMaxText = 0; gcr.nColors = 16; gcr.pColors = (COLORREF*)crCols; gcr.ptszModuleDispName = m_tszUserName; gcr.pszModule = m_szModuleName; CallServiceSync(MS_GC_REGISTER, 0, (LPARAM)&gcr); HookProtoEvent(ME_GC_EVENT, &CMsnProto::MSN_GCEventHook); HookProtoEvent(ME_GC_BUILDMENU, &CMsnProto::MSN_GCMenuHook); char szEvent[200]; mir_snprintf(szEvent, sizeof szEvent, "%s\\ChatInit", m_szModuleName); hInitChat = CreateHookableEvent(szEvent); HookProtoEvent(szEvent, &CMsnProto::MSN_ChatInit); } HookProtoEvent(ME_IDLE_CHANGED, &CMsnProto::OnIdleChanged); InitPopups(); return 0; }
extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) { pluginLink = link; init_mir_malloc(); CreateServiceFunction(MS_NICKHISTORY_DISABLE, DisableHistory); CreateServiceFunction(MS_NICKHISTORY_ENABLE, EnableHistory); CreateServiceFunction(MS_NICKHISTORY_ENABLED, HistoryEnabled); // Add menu item to enable/disable status message check CLISTMENUITEM mi = {0}; mi.cbSize = sizeof(mi); mi.flags = CMIF_NOTOFFLIST; mi.position = 1000100010; mi.pszName = Translate("Don't log Nickname changes"); mi.pszService = MS_NICKHISTORY_DISABLE; hDisableMenu = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi); mi.pszName = Translate("Log Nickname changes"); mi.pszService = MS_NICKHISTORY_ENABLE; hEnableMenu = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi); // hooks hModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); hPreBuildCMenu = HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PreBuildContactMenu); hSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SettingChanged); InitOptions(); InitPopups(); return 0; }
FacebookProto::FacebookProto(const char* proto_name,const TCHAR* username) : PROTO<FacebookProto>(proto_name, username) { facy.parent = this; signon_lock_ = CreateMutex(NULL, FALSE, NULL); avatar_lock_ = CreateMutex(NULL, FALSE, NULL); log_lock_ = CreateMutex(NULL, FALSE, NULL); update_loop_lock_ = CreateEvent(NULL, FALSE, FALSE, NULL); facy.buddies_lock_ = CreateMutex(NULL, FALSE, NULL); facy.send_message_lock_ = CreateMutex(NULL, FALSE, NULL); facy.fcb_conn_lock_ = CreateMutex(NULL, FALSE, NULL); m_invisible = false; CreateProtoService(PS_CREATEACCMGRUI, &FacebookProto::SvcCreateAccMgrUI); CreateProtoService(PS_GETMYAWAYMSG, &FacebookProto::GetMyAwayMsg); CreateProtoService(PS_GETMYAVATART, &FacebookProto::GetMyAvatar); CreateProtoService(PS_GETAVATARINFOT, &FacebookProto::GetAvatarInfo); CreateProtoService(PS_GETAVATARCAPS, &FacebookProto::GetAvatarCaps); CreateProtoService(PS_GETUNREADEMAILCOUNT, &FacebookProto::GetNotificationsCount); CreateProtoService(PS_JOINCHAT, &FacebookProto::OnJoinChat); CreateProtoService(PS_LEAVECHAT, &FacebookProto::OnLeaveChat); CreateProtoService("/Mind", &FacebookProto::OnMind); HookProtoEvent(ME_CLIST_PREBUILDSTATUSMENU, &FacebookProto::OnBuildStatusMenu); HookProtoEvent(ME_OPT_INITIALISE, &FacebookProto::OnOptionsInit); HookProtoEvent(ME_IDLE_CHANGED, &FacebookProto::OnIdleChanged); HookProtoEvent(ME_TTB_MODULELOADED, &FacebookProto::OnToolbarInit); HookProtoEvent(ME_GC_EVENT, &FacebookProto::OnGCEvent); HookProtoEvent(ME_GC_BUILDMENU, &FacebookProto::OnGCMenuHook); HookProtoEvent(ME_DB_EVENT_MARKED_READ, &FacebookProto::OnDbEventRead); HookProtoEvent(ME_MSG_WINDOWEVENT, &FacebookProto::OnProcessSrmmEvent); db_set_resident(m_szModuleName, "Status"); db_set_resident(m_szModuleName, "IdleTS"); InitHotkeys(); InitPopups(); InitSounds(); // Create standard network connection TCHAR descr[512]; NETLIBUSER nlu = {sizeof(nlu)}; nlu.flags = NUF_INCOMING | NUF_OUTGOING | NUF_HTTPCONNS | NUF_TCHAR; nlu.szSettingsModule = m_szModuleName; mir_sntprintf(descr, SIZEOF(descr), TranslateT("%s server connection"), m_tszUserName); nlu.ptszDescriptiveName = descr; m_hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); if (m_hNetlibUser == NULL) MessageBox(NULL, TranslateT("Unable to get Netlib connection for Facebook"), m_tszUserName, MB_OK); facy.set_handle(m_hNetlibUser); // Set all contacts offline -- in case we crashed SetAllContactStatuses(ID_STATUS_OFFLINE); }
static int ModulesLoaded(WPARAM wParam, LPARAM lParam) { mir_sntprintf(basedir, MAX_REGS(basedir), _T("%s\\Avatars History"), profilePath); hFolder = FoldersRegisterCustomPathT(LPGEN("Avatars"), LPGEN("Avatar History"), PROFILE_PATHT _T("\\") CURRENT_PROFILET _T("\\Avatars History")); InitPopups(); if (ServiceExists(MS_MC_GETPROTOCOLNAME)) metacontacts_proto = (char *) CallService(MS_MC_GETPROTOCOLNAME, 0, 0); // updater plugin support if(ServiceExists(MS_UPDATE_REGISTER)) { Update upd = {0}; char szCurrentVersion[30]; upd.cbSize = sizeof(upd); upd.szComponentName = pluginInfo.shortName; upd.szUpdateURL = UPDATER_AUTOREGISTER; upd.szBetaVersionURL = "http://code.google.com/p/pescuma/downloads/list?q=label:Plugin-AVH"; upd.szBetaChangelogURL = "http://code.google.com/p/pescuma/source/list"; #ifdef _WIN64 upd.pbBetaVersionPrefix = (BYTE *) "Avatar History (x64) "; upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/avatarhistW.%VERSION%-x64.zip"; #elif _UNICODE upd.pbBetaVersionPrefix = (BYTE *) "Avatar History (Unicode) "; upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/avatarhistW.%VERSION%.zip"; #else upd.pbBetaVersionPrefix = (BYTE *) "Avatar History (ANSI) "; upd.szBetaUpdateURL = "http://pescuma.googlecode.com/files/avatarhist.%VERSION%.zip"; #endif upd.cpbBetaVersionPrefix = (int) strlen((char *)upd.pbBetaVersionPrefix); upd.pbVersion = (BYTE *)CreateVersionStringPluginEx(&pluginInfo, szCurrentVersion); upd.cpbVersion = (int) strlen((char *)upd.pbVersion); CallService(MS_UPDATE_REGISTER, 0, (LPARAM)&upd); } if (DBGetContactSettingByte(NULL, MODULE_NAME, "LogToHistory", AVH_DEF_LOGTOHISTORY)) { char *templates[] = { "Avatar change\nchanged his/her avatar", "Avatar removal\nremoved his/her avatar" }; HICON hIcon = createDefaultOverlayedIcon(FALSE); HistoryEvents_RegisterWithTemplates(MODULE_NAME, "avatarchange", "Avatar change", EVENTTYPE_AVATAR_CHANGE, hIcon, HISTORYEVENTS_FORMAT_CHAR | HISTORYEVENTS_FORMAT_WCHAR | HISTORYEVENTS_FORMAT_RICH_TEXT, HISTORYEVENTS_FLAG_SHOW_IM_SRMM | HISTORYEVENTS_FLAG_EXPECT_CONTACT_NAME_BEFORE, GetHistoryEventText, templates, MAX_REGS(templates)); DestroyIcon(hIcon); } hHooks[2] = HookEvent(ME_AV_CONTACTAVATARCHANGED, AvatarChanged); return 0; }
static int ModulesLoaded(WPARAM wParam, LPARAM lParam) { mir_sntprintf(basedir, SIZEOF(basedir), _T("%s\\Avatars History"), profilePath); hFolder = FoldersRegisterCustomPathT( LPGEN("Avatars"), LPGEN("Avatar History"), PROFILE_PATHT _T("\\") CURRENT_PROFILET _T("\\Avatars History")); InitPopups(); HookEvent(ME_AV_CONTACTAVATARCHANGED, AvatarChanged); return 0; }
int CMsnProto::OnModulesLoaded(WPARAM, LPARAM) { GCREGISTER gcr = { 0 }; gcr.cbSize = sizeof(GCREGISTER); gcr.dwFlags = GC_TYPNOTIF | GC_CHANMGR; gcr.iMaxText = 0; gcr.nColors = 16; gcr.pColors = (COLORREF*)crCols; gcr.ptszDispName = m_tszUserName; gcr.pszModule = m_szModuleName; CallServiceSync(MS_GC_REGISTER, 0, (LPARAM)&gcr); HookProtoEvent(ME_GC_EVENT, &CMsnProto::MSN_GCEventHook); HookProtoEvent(ME_GC_BUILDMENU, &CMsnProto::MSN_GCMenuHook); HookProtoEvent(ME_IDLE_CHANGED, &CMsnProto::OnIdleChanged); InitPopups(); return 0; }
int CVkProto::OnModulesLoaded(WPARAM, LPARAM) { // Chats GCREGISTER gcr = { sizeof(gcr) }; gcr.ptszDispName = m_tszUserName; gcr.pszModule = m_szModuleName; gcr.nColors = _countof(sttColors); gcr.pColors = sttColors; CallServiceSync(MS_GC_REGISTER, NULL, (LPARAM)&gcr); CreateProtoService(PS_LEAVECHAT, &CVkProto::OnLeaveChat); CreateProtoService(PS_JOINCHAT, &CVkProto::OnJoinChat); HookProtoEvent(ME_GC_EVENT, &CVkProto::OnChatEvent); HookProtoEvent(ME_GC_BUILDMENU, &CVkProto::OnGcMenuHook); // Other hooks HookProtoEvent(ME_MSG_WINDOWEVENT, &CVkProto::OnProcessSrmmEvent); HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CVkProto::OnDbEventRead); HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CVkProto::OnDbSettingChanged); InitPopups(); InitMenus(); return 0; }
int main( int argc, char *argv[]) { MrmInitialize(); appshell = XtAppInitialize(&appContext,"GreatSPN_Motif",NULL,0,&argc,argv,fallback,NULL,0); #ifdef Linux /* Enables the application to talk with editres. For debug purposes only */ /* XmdRegisterEditres(appshell);*/ #endif OpenHierarchy(); if (MrmRegisterNames (regvec, regnum) != MrmSUCCESS) XtError("can't register names\n"); RegisterArcChangeDialog(); RegisterColorChangeDialog(); RegisterPlaceChangeDialog(); RegisterTransChangeDialog(); RegisterShowDialog(); RegisterResultDialog(); RegisterRateDialog(); RegisterPrintDialog(); RegisterMDGrammarDialog(); RegisterMarkDialog(); RegisterViewLayerDialog(); RegisterEditLayerDialog(); RegisterConsoleDialog(); RegisterCommentDialog(); RegisterZooomMenuCallbacks(); RegisterMenuCallbacks(); RegisterRescale(); RegisterGrid(); RegisterMenuValues(); RegisterOptionsDialog(); RegisterSimulationDialog(); RegisterSwnSimOptionsDialog(); RegisterSwnRGOptionsDialog(); RegisterSwnUnfoldOptionsDialog(); /* puts(" ... start FetchWidget"); fflush(stdout);*/ mainwin = FetchWidget(appshell,"MainWin"); /* puts(" ... start InitMainWindow"); fflush(stdout);*/ InitMainWindow(); /* puts(" ... start InitWorkWindow"); fflush(stdout);*/ InitWorkWindow(); /* puts(" ... start InitFonts"); fflush(stdout);*/ InitFonts(); /* puts(" ... start InitMenuBar"); fflush(stdout);*/ InitMenuBar(); /* puts(" ... start InitPopups"); fflush(stdout);*/ InitPopups(); /* puts(" ... start XtManageChild"); fflush(stdout);*/ XtManageChild( mainwin ); /* puts(" ... start XtRealizeWidget"); fflush(stdout);*/ XtRealizeWidget( appshell ); /* puts(" ... start InitFilesPath"); fflush(stdout);*/ InitFilesPath(); /* puts(" ... start InitGSPNShellErrors"); fflush(stdout);*/ InitGSPNShellErrors(); /* puts(" ... start gdiInitEngine"); fflush(stdout);*/ gdiInitEngine(appshell); /* puts(" ... start gdiInitDrawingAreaGC"); fflush(stdout);*/ gdiInitDrawingAreaGC(); /* puts(" ... start InitOther"); fflush(stdout);*/ InitOther(); /* InitMsgDB(); */ /* puts(" ... start XmUpdateDisplay"); fflush(stdout);*/ XmUpdateDisplay(mainwin); /* puts(" ... start XtAppMainLoop"); fflush(stdout);*/ XtAppMainLoop(appContext); return 0; }
FacebookProto::FacebookProto(const char* proto_name, const TCHAR* username) : PROTO<FacebookProto>(proto_name, username), m_tszDefaultGroup(getTStringA(FACEBOOK_KEY_DEF_GROUP)) { facy.parent = this; signon_lock_ = CreateMutex(NULL, FALSE, NULL); avatar_lock_ = CreateMutex(NULL, FALSE, NULL); log_lock_ = CreateMutex(NULL, FALSE, NULL); update_loop_lock_ = CreateEvent(NULL, FALSE, FALSE, NULL); facy.buddies_lock_ = CreateMutex(NULL, FALSE, NULL); facy.send_message_lock_ = CreateMutex(NULL, FALSE, NULL); facy.fcb_conn_lock_ = CreateMutex(NULL, FALSE, NULL); facy.notifications_lock_ = CreateMutex(NULL, FALSE, NULL); facy.cookies_lock_ = CreateMutex(NULL, FALSE, NULL); // Initialize random seed for this client facy.random_ = ::time(NULL) + PtrToUint(&facy); m_enableChat = DEFAULT_ENABLE_CHATS; // Load custom locale, if set ptrA locale(getStringA(FACEBOOK_KEY_LOCALE)); if (locale != NULL) m_locale = locale; if (m_tszDefaultGroup == NULL) m_tszDefaultGroup = mir_tstrdup(_T("Facebook")); CreateProtoService(PS_CREATEACCMGRUI, &FacebookProto::SvcCreateAccMgrUI); CreateProtoService(PS_GETMYAWAYMSG, &FacebookProto::GetMyAwayMsg); CreateProtoService(PS_GETMYAVATAR, &FacebookProto::GetMyAvatar); CreateProtoService(PS_GETAVATARINFO, &FacebookProto::GetAvatarInfo); CreateProtoService(PS_GETAVATARCAPS, &FacebookProto::GetAvatarCaps); CreateProtoService(PS_GETUNREADEMAILCOUNT, &FacebookProto::GetNotificationsCount); CreateProtoService(PS_JOINCHAT, &FacebookProto::OnJoinChat); CreateProtoService(PS_LEAVECHAT, &FacebookProto::OnLeaveChat); HookProtoEvent(ME_CLIST_PREBUILDSTATUSMENU, &FacebookProto::OnBuildStatusMenu); HookProtoEvent(ME_OPT_INITIALISE, &FacebookProto::OnOptionsInit); HookProtoEvent(ME_IDLE_CHANGED, &FacebookProto::OnIdleChanged); HookProtoEvent(ME_TTB_MODULELOADED, &FacebookProto::OnToolbarInit); HookProtoEvent(ME_GC_EVENT, &FacebookProto::OnGCEvent); HookProtoEvent(ME_GC_BUILDMENU, &FacebookProto::OnGCMenuHook); HookProtoEvent(ME_DB_EVENT_MARKED_READ, &FacebookProto::OnDbEventRead); db_set_resident(m_szModuleName, "IdleTS"); db_set_resident(m_szModuleName, FACEBOOK_KEY_MESSAGE_READ); db_set_resident(m_szModuleName, FACEBOOK_KEY_MESSAGE_READERS); InitHotkeys(); InitPopups(); InitSounds(); // Create standard network connection TCHAR descr[512]; NETLIBUSER nlu = { sizeof(nlu) }; nlu.flags = NUF_INCOMING | NUF_OUTGOING | NUF_HTTPCONNS | NUF_TCHAR; nlu.szSettingsModule = m_szModuleName; mir_sntprintf(descr, TranslateT("%s server connection"), m_tszUserName); nlu.ptszDescriptiveName = descr; m_hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); if (m_hNetlibUser == NULL) { TCHAR error[200]; mir_sntprintf(error, TranslateT("Unable to initialize Netlib for %s."), m_tszUserName); MessageBox(NULL, error, _T("Miranda NG"), MB_OK | MB_ICONERROR); } facy.set_handle(m_hNetlibUser); // Set all contacts offline -- in case we crashed SetAllContactStatuses(ID_STATUS_OFFLINE); // register special type of event // there's no need to declare the special service for getting text // because a blob contains only text DBEVENTTYPEDESCR evtype = { sizeof(evtype) }; evtype.module = m_szModuleName; evtype.eventType = FACEBOOK_EVENTTYPE_CALL; evtype.descr = LPGEN("Video call"); evtype.eventIcon = GetIconHandle("facebook"); evtype.flags = DETF_HISTORY | DETF_MSGWINDOW; CallService(MS_DB_EVENT_REGISTERTYPE, 0, (LPARAM)&evtype); }