int initContactModule() { hContactSettingChangedHook = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, contactSettingChanged); return 0; }
void InitStatus() { hContactSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, ContactSettingChanged); }
static int KeyBindingsSystemModulesLoaded(WPARAM wParam,LPARAM lParam) { HookEvent(ME_OPT_INITIALISE, KeyBindingsOptionsInit); return 0; }
void InitGroupMenus(void) { CreateServiceFunction("CLISTMENUSGroup/GroupMenuOnAddService", GroupMenu_OnAddService); HookEvent(ME_CLIST_PREBUILDGROUPMENU, OnBuildGroupMenu); // add exit command to menu CMenuItem mi; mi.position = 500; mi.pszService = MS_CLIST_SHOWHIDE; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_SHOWHIDE); mi.name.a = LPGEN("&Hide/show"); hHideShowMainMenuItem = Menu_AddGroupMenuItem(&mi); mi.position = 200000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_FINDUSER); mi.pszService = "FindAdd/FindAddCommand"; mi.name.a = LPGEN("&Find/add contacts..."); Menu_AddGroupMenuItem(&mi); mi.position = 300000; mi.pszService = ""; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MAINMENU); mi.name.a = LPGEN("&Main menu"); hGroupMainMenuItemProxy = Menu_AddGroupMenuItem(&mi); mi.position = 300100; mi.pszService = ""; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_STATUS); mi.name.a = LPGEN("&Status"); hGroupStatusMenuItemProxy = Menu_AddGroupMenuItem(&mi); // Appearance menu mi.position = 390100; mi.hIcolibItem = iconItem[0].hIcolib; mi.name.a = LPGEN("Appearance"); mi.root = Menu_AddGroupMenuItem(&mi); mi.hIcolibItem = NULL; mi.pszService = "CLISTMENUSGroup/CommandHelper"; CreateServiceFunction(mi.pszService, CommandHelper); for (int i = 0; i < _countof(hAppearanceItems); i++) { GroupMenuParam gmp; gmp.wParam = hAppearanceItems[i].command; mi.name.a = hAppearanceItems[i].name; mi.position = hAppearanceItems[i].position; hAppearanceItems[i].hMenu = Menu_AddGroupMenuItem(&mi, &gmp); } mi.root = NULL; mi.position = 400000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService = "Options/OptionsCommand"; mi.name.a = LPGEN("&Options..."); Menu_AddGroupMenuItem(&mi); mi.position = 1000000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService = "CLN/About"; mi.name.a = LPGEN("&About the contact list..."); Menu_AddGroupMenuItem(&mi); }
/** * * called from: MirfoxMiranda.cpp.Load(PLUGINLINK *link) */ void InitOptions() { hEventOptInit = HookEvent(ME_OPT_INITIALISE, OptInit); }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfoEx); // initialize global variables InitVar(); // load options and set defaults LoadOptions(); InitIcons(); // reset the weather data at startup for individual contacts EraseAllInfo(); // load weather update data LoadWIData(true); // set status to online if "Do not display weather condition as protocol status" is enabled old_status = status = ID_STATUS_OFFLINE; // add an event on weather update and error hHookWeatherUpdated = CreateHookableEvent(ME_WEATHER_UPDATED); hHookWeatherError = CreateHookableEvent(ME_WEATHER_ERROR); // initialize options and network HookEvent(ME_OPT_INITIALISE, OptInit); HookEvent(ME_SYSTEM_MODULESLOADED, WeatherInit); HookEvent(ME_DB_CONTACT_DELETED, ContactDeleted); HookEvent(ME_CLIST_DOUBLECLICKED, BriefInfo); HookEvent(ME_WEATHER_UPDATED, WeatherPopup); HookEvent(ME_WEATHER_ERROR, WeatherError); HookEvent(ME_SYSTEM_PRESHUTDOWN, WeatherShutdown); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, BuildContactMenu); hDataWindowList = WindowList_Create(); hWindowList = WindowList_Create(); hUpdateMutex = CreateMutex(NULL, FALSE, NULL); // register weather protocol PROTOCOLDESCRIPTOR pd = { PROTOCOLDESCRIPTOR_V3_SIZE }; pd.szName = WEATHERPROTONAME; pd.type = (opt.NoProtoCondition) ? PROTOTYPE_VIRTUAL : PROTOTYPE_PROTOCOL; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); // initialize weather protocol services InitServices(); // add sound event SkinAddNewSoundExT("weatherupdated", _T(WEATHERPROTONAME), LPGENT("Weather Condition Changed")); SkinAddNewSoundExT("weatheralert", _T(WEATHERPROTONAME), LPGENT("Weather Alert Issued")); // window needed for popup commands TCHAR SvcFunc[100]; mir_sntprintf(SvcFunc, SIZEOF(SvcFunc), _T("%s__PopupWindow"), _T(WEATHERPROTONAME)); hPopupWindow = CreateWindowEx(WS_EX_TOOLWINDOW, _T("static"), SvcFunc, 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hInst, NULL); SetWindowLongPtr(hPopupWindow, GWLP_WNDPROC, (LONG_PTR)PopupWndProc); return 0; }
void InitGroupMenus(void) { HICON hicon = LoadIconFromExternalFile("clisticons.dll",2,TRUE,TRUE,"NewGroup","Contact List","New Group",-IDI_NEWGROUP2,0); NewGroupIconidx = ImageList_AddIcon(hCListImages,hicon ); CreateServiceFunction("CLISTMENUSGroup/ExecService",GroupMenuExecService); CreateServiceFunction("CLISTMENUSGroup/FreeOwnerDataGroupMenu",FreeOwnerDataGroupMenu); CreateServiceFunction("CLISTMENUSGroup/GroupMenuonAddService",GroupMenuonAddService); CreateServiceFunction("CLISTMENUSGroup/HideGroupsHelper",HideGroupsHelper); CreateServiceFunction("CLISTMENUSGroup/UseGroupsHelper",UseGroupsHelper); CreateServiceFunction("CLISTMENUSGroup/HideOfflineRootHelper",HideOfflineRootHelper); CreateServiceFunction("CList/AddGroupMenuItem",AddGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVEGROUPMENUITEM,RemoveGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDGROUP,BuildGroupMenu); hPreBuildGroupMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDGROUPMENU); HookEvent(ME_CLIST_PREBUILDGROUPMENU,OnBuildGroupMenu); InitSubGroupMenus(); // Group menu hGroupMenuObject = MO_CreateMenuObject("GroupMenu", LPGEN("Group menu"), 0, "CLISTMENUSGroup/ExecService"); MO_SetMenuObjectParam(hGroupMenuObject, OPT_USERDEFINEDITEMS, TRUE); MO_SetMenuObjectParam(hGroupMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSGroup/FreeOwnerDataGroupMenu"); MO_SetMenuObjectParam(hGroupMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSGroup/GroupMenuonAddService"); { //add exit command to menu GroupMenuParam gmp; CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 1900000; mi.pszService = "CloseAction"; mi.pszName = LPGEN("E&xit"); AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 500; mi.pszService = MS_CLIST_SHOWHIDE; mi.pszName = LPGEN("&Hide/Show"); hHideShowMainMenuItem = (HANDLE)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 200000; mi.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_FINDUSER)); mi.pszService = "FindAdd/FindAddCommand"; mi.pszName = LPGEN("&Find/Add Contacts..."); AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 300000; mi.pszService = ""; mi.pszName = LPGEN("&Main menu"); hGroupMainMenuItemProxy = (HANDLE)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 300100; mi.pszService = ""; mi.pszName = LPGEN("&Status"); hGroupStatusMenuItemProxy = (HANDLE)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 400000; mi.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_OPTIONS)); mi.pszService = "Options/OptionsCommand"; mi.pszName = LPGEN("&Options..."); AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 500000; mi.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_CLIENTMIRANDA)); mi.pszService = "Help/AboutCommand"; mi.pszName = LPGEN("&About"); //AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100000; mi.hIcon = ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService = MS_CLIST_GROUPCREATE; mi.pszName = LPGEN("&New Group"); hNewGroupMenuItem = (HGENMENU)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100001; mi.hIcon = NULL; mi.pszService = MS_CLIST_SETHIDEOFFLINE; mi.pszName = LPGEN("&Hide Offline Users"); gmp.lParam = 0;gmp.wParam = -1; hHideOfflineUsersMenuItem = (HGENMENU)AddGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100002; mi.hIcon = NULL; mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; mi.pszName = LPGEN("Hide &Offline Users out here"); hHideOfflineUsersOutHereMenuItem = (HGENMENU)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100003; mi.hIcon = NULL; mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; mi.pszName = LPGEN("Hide &Empty Groups"); hHideEmptyGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100004; mi.hIcon = NULL; mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; mi.pszName = LPGEN("Disable &Groups"); hDisableGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0,(LPARAM)&mi); HookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged); } }
void InitOptions() { hOptionsInit = HookEvent(ME_OPT_INITIALISE, NudgeOptInit); }
int MirandaLoaded(WPARAM,LPARAM) { g_wMask = db_get_w(NULL,MOD_NAME,"optsmask",DEFAULTSETTING); RegisterCoreHotKeys(); g_hWinHook = SetWinEventHook(EVENT_OBJECT_CREATE, EVENT_OBJECT_SHOW, NULL, WinEventProc, GetCurrentProcessId(), 0, 0); HookEvent(ME_TTB_MODULELOADED, TopToolbarInit); HookEvent(ME_OPT_INITIALISE, OptsDlgInit); HookEvent(ME_MSG_WINDOWEVENT, MsgWinOpening); HookEvent(ME_PROTO_ACCLISTCHANGED, EnumProtos); HookEvent(ME_MSG_TOOLBARLOADED, TabsrmmButtonsInit); HookEvent(ME_MSG_BUTTONPRESSED, TabsrmmButtonPressed); GetWindowThreadProcessId(pcli->hwndContactList, &g_dwMirandaPID); WNDCLASS winclass = {0}; winclass.lpfnWndProc = ListenWndProc; winclass.hInstance = g_hInstance; winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); winclass.lpszClassName = BOSSKEY_LISTEN_INFO; if (RegisterClass(&winclass)) { g_hListenWindow = CreateWindow(BOSSKEY_LISTEN_INFO,BOSSKEY_LISTEN_INFO,WS_POPUP,0,0,5,5,pcli->hwndContactList,NULL,g_hInstance,NULL); WTSRegisterSessionNotification(g_hListenWindow, 0); } if (IsWinVerVistaPlus()) { hDwmApi = LoadLibrary(_T("dwmapi.dll")); if (hDwmApi) dwmIsCompositionEnabled = (PFNDwmIsCompositionEnabled)GetProcAddress(hDwmApi,"DwmIsCompositionEnabled"); } if (g_wMaskAdv & OPT_MENUITEM) BossKeyMenuItemInit(); // Register token for variables plugin if (ServiceExists(MS_VARS_REGISTERTOKEN)) { TOKENREGISTER tr = {0}; tr.cbSize = sizeof(TOKENREGISTER); tr.memType = TR_MEM_OWNER; tr.flags = TRF_FIELD | TRF_TCHAR | TRF_PARSEFUNC; tr.tszTokenString = _T("bosskeyname"); tr.parseFunctionT = VariablesBossKey; tr.szHelpText = LPGEN("BossKey")"\t"LPGEN("get the BossKey name"); CallService(MS_VARS_REGISTERTOKEN, 0, (LPARAM) &tr); } EnumProtos(0, 0); InitIdleTimer(); if (g_bOldSetting && !(g_wMaskAdv & OPT_RESTORE)) // Restore settings if Miranda was crushed or killed in hidden mode and "Restore hiding on startup after failure" option is disabled RestoreOldSettings(); if ((g_wMaskAdv & OPT_HIDEONSTART) || (g_wMaskAdv & OPT_RESTORE && g_bOldSetting)) BossKeyHideMiranda(0, 0); return 0; }
int CMPlugin::Load() { Clist_GetInterface(); coreCli = g_clistApi; API::onInit(); memset(&cfg::dat, 0, sizeof(cfg::dat)); int iCount = db_get_contact_count(); iCount += 20; if (iCount < 300) iCount = 300; cfg::dat.hMenuNotify = CreatePopupMenu(); cfg::dat.wNextMenuID = 1; cfg::dat.sortTimer = db_get_dw(NULL, "CLC", "SortTimer", 150); cfg::dat.avatarBorder = (COLORREF)db_get_dw(NULL, "CLC", "avatarborder", 0); cfg::dat.avatarRadius = (COLORREF)db_get_dw(NULL, "CLC", "avatarradius", 4); cfg::dat.hBrushAvatarBorder = CreateSolidBrush(cfg::dat.avatarBorder); cfg::dat.avatarSize = db_get_w(NULL, "CList", "AvatarSize", 24); cfg::dat.dualRowMode = db_get_b(NULL, "CLC", "DualRowMode", 0); cfg::dat.avatarPadding = db_get_b(NULL, "CList", "AvatarPadding", 0); cfg::dat.isTransparent = db_get_b(NULL, "CList", "Transparent", 0); cfg::dat.alpha = db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT); cfg::dat.autoalpha = db_get_b(NULL, "CList", "AutoAlpha", SETTING_ALPHA_DEFAULT); cfg::dat.fadeinout = db_get_b(NULL, "CLUI", "FadeInOut", 0); cfg::dat.autosize = db_get_b(NULL, "CLUI", "AutoSize", 0); cfg::dat.bNoOfflineAvatars = db_get_b(NULL, "CList", "NoOfflineAV", 1); cfg::dat.bFullTransparent = db_get_b(NULL, "CLUI", "fulltransparent", 0); cfg::dat.bDblClkAvatars = db_get_b(NULL, "CLC", "dblclkav", 0); cfg::dat.bEqualSections = db_get_b(NULL, "CLUI", "EqualSections", 0); cfg::dat.bCenterStatusIcons = db_get_b(NULL, "CLC", "si_centered", 1); cfg::dat.boldHideOffline = -1; cfg::dat.bSecIMAvail = ServiceExists("SecureIM/IsContactSecured") ? 1 : 0; cfg::dat.bNoTrayTips = db_get_b(NULL, "CList", "NoTrayTips", 0); cfg::dat.bShowLocalTime = db_get_b(NULL, "CLC", "ShowLocalTime", 1); cfg::dat.bShowLocalTimeSelective = db_get_b(NULL, "CLC", "SelectiveLocalTime", 1); cfg::dat.bDontSeparateOffline = db_get_b(NULL, "CList", "DontSeparateOffline", 0); cfg::dat.bShowXStatusOnSbar = db_get_b(NULL, "CLUI", "xstatus_sbar", 0); cfg::dat.bLayeredHack = db_get_b(NULL, "CLUI", "layeredhack", 1); cfg::dat.bFirstRun = db_get_b(NULL, "CLUI", "firstrun", 1); cfg::dat.langPackCP = Langpack_GetDefaultCodePage(); cfg::dat.realTimeSaving = db_get_b(NULL, "CLUI", "save_pos_always", 0); DWORD sortOrder = db_get_dw(NULL, "CList", "SortOrder", SORTBY_NAME); cfg::dat.sortOrder[0] = LOBYTE(LOWORD(sortOrder)); cfg::dat.sortOrder[1] = HIBYTE(LOWORD(sortOrder)); cfg::dat.sortOrder[2] = LOBYTE(HIWORD(sortOrder)); if (cfg::dat.bFirstRun) db_set_b(NULL, "CLUI", "firstrun", 0); ReloadThemedOptions(); Reload3dBevelColors(); cfg::dat.dwFlags = db_get_dw(NULL, "CLUI", "Frameflags", CLUI_FRAME_STATUSICONS | CLUI_FRAME_SHOWBOTTOMBUTTONS | CLUI_FRAME_BUTTONSFLAT | CLUI_FRAME_CLISTSUNKEN); cfg::dat.dwFlags |= (db_get_b(NULL, "CLUI", "ShowSBar", 1) ? CLUI_FRAME_SBARSHOW : 0); cfg::dat.soundsOff = db_get_b(NULL, "Skin", "UseSound", 1) ? 0 : 1; Profile_GetPathW(MAX_PATH, cfg::dat.tszProfilePath); wcslwr(cfg::dat.tszProfilePath); // get the clist interface g_clistApi.hInst = g_plugin.getInst(); g_clistApi.pfnCluiProtocolStatusChanged = CluiProtocolStatusChanged; g_clistApi.pfnCompareContacts = CompareContacts; g_clistApi.pfnCreateClcContact = CreateClcContact; g_clistApi.pfnDocking_ProcessWindowMessage = Docking_ProcessWindowMessage; g_clistApi.pfnGetContactHiddenStatus = CLVM_GetContactHiddenStatus; g_clistApi.pfnGetDefaultFontSetting = GetDefaultFontSetting; g_clistApi.pfnGetRowBottomY = RowHeight::getItemBottomY; g_clistApi.pfnGetRowHeight = RowHeight::getHeight; g_clistApi.pfnGetRowTopY = RowHeight::getItemTopY; g_clistApi.pfnGetRowTotalHeight = RowHeight::getTotalHeight; g_clistApi.pfnGetWindowVisibleState = GetWindowVisibleState; g_clistApi.pfnHitTest = HitTest; g_clistApi.pfnOnCreateClc = OnCreateClc; g_clistApi.pfnPaintClc = PaintClc; g_clistApi.pfnRebuildEntireList = RebuildEntireList; g_clistApi.pfnRowHitTest = RowHeight::hitTest; g_clistApi.pfnScrollTo = ScrollTo; g_clistApi.pfnSetHideOffline = SetHideOffline; g_clistApi.pfnShowHide = ShowHide; g_clistApi.pfnAddContactToGroup = AddContactToGroup; g_clistApi.pfnAddEvent = AddEvent; g_clistApi.pfnRemoveEvent = RemoveEvent; g_clistApi.pfnAddGroup = AddGroup; g_clistApi.pfnAddInfoItemToGroup = AddInfoItemToGroup; g_clistApi.pfnContactListControlWndProc = ContactListControlWndProc; g_clistApi.pfnContactListWndProc = ContactListWndProc; g_clistApi.pfnIconFromStatusMode = IconFromStatusMode; g_clistApi.pfnLoadClcOptions = LoadClcOptions; g_clistApi.pfnProcessExternalMessages = ProcessExternalMessages; g_clistApi.pfnRecalcScrollBar = RecalcScrollBar; g_clistApi.pfnTrayIconProcessMessage = TrayIconProcessMessage; int rc = LoadContactListModule(); if (rc == 0) rc = LoadCLCModule(); LoadCLUIModule(); LoadButtonModule(); HookEvent(ME_SYSTEM_MODULESLOADED, systemModulesLoaded); return rc; }
void InitOptions(void) { /* Option Page */ hHookOptInit=HookEvent(ME_OPT_INITIALISE,ShutdownOptInit); }
void InitGroupMenus(void) { GroupMenuParam gmp = {}; // Group menu CreateServiceFunction("CLISTMENUSGroup/ExecService", GroupMenuExecService); CreateServiceFunction("CLISTMENUSGroup/FreeOwnerDataGroupMenu", FreeOwnerDataGroupMenu); hEventPreBuildGroupMenu = CreateHookableEvent(ME_CLIST_PREBUILDGROUPMENU); HookEvent(ME_CLIST_PREBUILDGROUPMENU, OnBuildGroupMenu); hGroupMenuObject = Menu_AddObject("GroupMenu", LPGEN("Group menu"), 0, "CLISTMENUSGroup/ExecService"); Menu_ConfigureObject(hGroupMenuObject, MCO_OPT_USERDEFINEDITEMS, TRUE); Menu_ConfigureObject(hGroupMenuObject, MCO_OPT_FREE_SERVICE, "CLISTMENUSGroup/FreeOwnerDataGroupMenu"); Menu_ConfigureObject(hGroupMenuObject, MCO_OPT_ONADD_SERVICE, "CLISTMENUSGroup/GroupMenuOnAddService"); { CMenuItem mi; mi.position = 100000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_GROUPADD); mi.pszService = "CLISTMENUSGroup/CreateGroupHelper"; mi.name.a = LPGEN("&New group"); Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, CreateGroupHelper); mi.position = 500001; mi.hIcolibItem = NULL; mi.pszService = MS_CLIST_SETHIDEOFFLINE; mi.name.a = LPGEN("&Hide offline users"); gmp.wParam = -1; hHideOfflineUsersMenuItem = Menu_AddGroupMenuItem(&mi, &gmp); mi.position = 500002; mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; mi.name.a = LPGEN("Hide &offline users out here"); hHideOfflineUsersOutHereMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, HideOfflineRootHelper); mi.position = 500003; mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; mi.name.a = LPGEN("Hide &empty groups"); hHideEmptyGroupsMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, HideGroupsHelper); mi.position = 500004; mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; mi.name.a = LPGEN("Disable &groups"); hDisableGroupsMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, UseGroupsHelper); mi.position = 1900000; mi.pszService = "CloseAction"; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_EXIT); mi.name.a = LPGEN("E&xit"); Menu_AddGroupMenuItem(&mi); } // SubGroup menu CreateServiceFunction("CLISTMENUSSubGroup/ExecService", SubGroupMenuExecService); CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu", FreeOwnerDataSubGroupMenu); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuCheckService", SubGroupMenuCheckService); CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy", GroupMenuExecProxy); hEventPreBuildSubGroupMenu = CreateHookableEvent(ME_CLIST_PREBUILDSUBGROUPMENU); HookEvent(ME_CLIST_PREBUILDSUBGROUPMENU, OnBuildSubGroupMenu); hSubGroupMenuObject = Menu_AddObject("SubGroupMenu", LPGEN("Subgroup menu"), 0, "CLISTMENUSSubGroup/ExecService"); Menu_ConfigureObject(hSubGroupMenuObject, MCO_OPT_USERDEFINEDITEMS, TRUE); Menu_ConfigureObject(hSubGroupMenuObject, MCO_OPT_FREE_SERVICE, "CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"); Menu_ConfigureObject(hSubGroupMenuObject, MCO_OPT_CHECK_SERVICE, "CLISTMENUSSubGroup/SubGroupMenuCheckService"); { CMenuItem mi; mi.position = 1000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_ADD); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.name.a = LPGEN("&New subgroup"); gmp.wParam = POPUP_NEWSUBGROUP; Menu_AddSubGroupMenuItem(&mi, &gmp); mi.position = 1001; mi.hIcolibItem = 0; mi.name.a = LPGEN("&Hide offline users in here"); gmp.wParam = POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem = Menu_AddSubGroupMenuItem(&mi, &gmp); mi.position = 900001; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_RENAME); mi.name.a = LPGEN("&Rename group"); gmp.wParam = POPUP_RENAMEGROUP; Menu_AddSubGroupMenuItem(&mi, &gmp); mi.position = 900002; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_DELETE); mi.name.a = LPGEN("&Delete group"); gmp.wParam = POPUP_DELETEGROUP; Menu_AddSubGroupMenuItem(&mi, &gmp); } }
void RegisterCListFonts() { FontIDT fontid = {0}; ColourIDT colourid = {0}; char idstr[10]; int i; fontid.cbSize = sizeof(FontIDT); fontid.flags = FIDF_ALLOWREREGISTER | FIDF_APPENDNAME | FIDF_NOAS | FIDF_SAVEPOINTSIZE | FIDF_ALLOWEFFECTS; for (i = 0; i <= CLIST_FONTID_MAX; i++) { switch (fontListOrder[i]) { case FONTID_GROUPS: case FONTID_GROUPCOUNTS: fontid.flags &= ~FIDF_CLASSMASK; fontid.flags |= FIDF_CLASSHEADER; break; case FONTID_DIVIDERS: fontid.flags &= ~FIDF_CLASSMASK; fontid.flags |= FIDF_CLASSSMALL; break; default: fontid.flags &= ~FIDF_CLASSMASK; fontid.flags |= FIDF_CLASSGENERAL; break; } strncpy(fontid.dbSettingsGroup, "CLC", sizeof(fontid.dbSettingsGroup)); _tcsncpy(fontid.group, _T("Contact List"), SIZEOF(fontid.group)); _tcsncpy(fontid.name, szClistFontIdDescr[fontListOrder[i]], SIZEOF(fontid.name)); sprintf(idstr, "Font%d", fontListOrder[i]); strncpy(fontid.prefix, idstr, SIZEOF(fontid.prefix)); fontid.order = fontListOrder[i]; CallService(MS_FONT_REGISTERT, (WPARAM)&fontid, 0); } // and colours colourid.cbSize = sizeof(ColourIDT); colourid.order = 0; strncpy(colourid.dbSettingsGroup, "CLC", sizeof(colourid.dbSettingsGroup)); strncpy(colourid.setting, "BkColour", sizeof(colourid.setting)); _tcsncpy(colourid.name, LPGENT("Background"), SIZEOF(colourid.name)); _tcsncpy(colourid.group, LPGENT("Contact List"), SIZEOF(colourid.group)); colourid.defcolour = CLCDEFAULT_BKCOLOUR; CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0); strncpy(colourid.setting, "SelTextColour", sizeof(colourid.setting)); _tcsncpy(colourid.name, LPGENT("Selected Text"), SIZEOF(colourid.name)); colourid.order = 1; colourid.defcolour = CLCDEFAULT_SELTEXTCOLOUR; CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0); strncpy(colourid.setting, "HotTextColour", sizeof(colourid.setting)); _tcsncpy(colourid.name, LPGENT("Hottrack Text"), SIZEOF(colourid.name)); colourid.order = 1; colourid.defcolour = CLCDEFAULT_HOTTEXTCOLOUR; CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0); strncpy(colourid.setting, "QuickSearchColour", sizeof(colourid.setting)); _tcsncpy(colourid.name, LPGENT("Quicksearch Text"), SIZEOF(colourid.name)); colourid.order = 1; colourid.defcolour = CLCDEFAULT_QUICKSEARCHCOLOUR; CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0); HookEvent(ME_FONT_RELOAD, FS_FontsChanged); }
void InitMenuItems() { TCHAR stzName[256]; CMenuItem mi; mi.flags = CMIF_TCHAR; mi.hIcolibItem = iconList[ServerList::FTP_COUNT].hIcolib; mi.position = 3000090001; mi.name.t = LPGENT("FTP File"); hMainMenu = Menu_AddMainMenuItem(&mi); if (opt.bUseSubmenu) hMenu = Menu_AddContactMenuItem(&mi); memset(&mi, 0, sizeof(mi)); mi.name.t = stzName; CMenuItem mi2; mi2.flags = CMIF_TCHAR; mi2.pszService = MS_FTPFILE_CONTACTMENU; for (int i = 0; i < ServerList::FTP_COUNT; i++) { if (DB::getStringF(0, MODULE, "Name%d", i, stzName)) mir_sntprintf(stzName, _countof(stzName), TranslateT("FTP Server %d"), i + 1); mi.flags = CMIF_TCHAR; mi.root = (opt.bUseSubmenu) ? hMenu : 0; mi.hIcolibItem = iconList[i].hIcolib; hSubMenu[i] = Menu_AddContactMenuItem(&mi); Menu_ConfigureItem(hSubMenu[i], MCI_OPT_EXECPARAM, i + 1000); mi.root = hMainMenu; hMainSubMenu[i] = Menu_AddMainMenuItem(&mi); mi2.root = hSubMenu[i]; mi2.pszService = MS_FTPFILE_CONTACTMENU; mi2.name.t = LPGENT("Upload file(s)"); HGENMENU tmp = Menu_AddContactMenuItem(&mi2); Menu_ConfigureItem(tmp, MCI_OPT_EXECPARAM, mi2.position = i + UploadJob::FTP_RAWFILE); mi2.pszService = MS_FTPFILE_MAINMENU; mi2.root = hMainSubMenu[i]; Menu_AddMainMenuItem(&mi2); mi2.root = hSubMenu[i]; mi2.pszService = MS_FTPFILE_CONTACTMENU; mi2.name.t = LPGENT("Zip and upload file(s)"); tmp = Menu_AddContactMenuItem(&mi2); Menu_ConfigureItem(tmp, MCI_OPT_EXECPARAM, i + UploadJob::FTP_ZIPFILE); mi2.pszService = MS_FTPFILE_MAINMENU; mi2.root = hMainSubMenu[i]; Menu_AddMainMenuItem(&mi2); mi2.root = hSubMenu[i]; mi2.pszService = MS_FTPFILE_CONTACTMENU; mi2.name.t = LPGENT("Zip and upload folder"); tmp = Menu_AddContactMenuItem(&mi2); Menu_ConfigureItem(tmp, MCI_OPT_EXECPARAM, i + UploadJob::FTP_ZIPFOLDER); mi2.pszService = MS_FTPFILE_MAINMENU; mi2.root = hMainSubMenu[i]; Menu_AddMainMenuItem(&mi2); } memset(&mi, 0, sizeof(mi)); mi.flags = CMIF_TCHAR; mi.hIcolibItem = iconList[ServerList::FTP_COUNT].hIcolib; mi.position = 3000090001; mi.name.t = LPGENT("FTP File manager"); mi.pszService = MS_FTPFILE_SHOWMANAGER; mi.root = hMainMenu; Menu_AddMainMenuItem(&mi); PrebuildMainMenu(); hPrebuildContactMenu = HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PrebuildContactMenu); }
extern "C" __declspec(dllexport) int Load() { mir_getLP(&pluginInfo); mir_getCLI(); hHttpAcceptConnectionsService = CreateServiceFunction(MS_HTTP_ACCEPT_CONNECTIONS, nToggelAcceptConnections); if (!hHttpAcceptConnectionsService) { MessageBox(NULL, _T("Failed to CreateServiceFunction MS_HTTP_ACCEPT_CONNECTIONS"), MSG_BOX_TITEL, MB_OK); return 1; } hHttpAddChangeRemoveService = CreateServiceFunction(MS_HTTP_ADD_CHANGE_REMOVE, nAddChangeRemoveShare); if (!hHttpAddChangeRemoveService) { MessageBox(NULL, _T("Failed to CreateServiceFunction MS_HTTP_ADD_CHANGE_REMOVE"), MSG_BOX_TITEL, MB_OK); return 1; } hHttpGetShareService = CreateServiceFunction(MS_HTTP_GET_SHARE, nGetShare); if (!hHttpGetShareService) { MessageBox(NULL, _T("Failed to CreateServiceFunction MS_HTTP_GET_SHARE"), MSG_BOX_TITEL, MB_OK); return 1; } hHttpGetAllShares = CreateServiceFunction(MS_HTTP_GET_ALL_SHARES, nHttpGetAllShares); if (!hHttpGetAllShares) { MessageBox(NULL, _T("Failed to CreateServiceFunction MS_HTTP_GET_ALL_SHARES"), MSG_BOX_TITEL, MB_OK); return 1; } hEventSystemInit = HookEvent(ME_SYSTEM_MODULESLOADED, MainInit); if (!hEventSystemInit) { MessageBox(NULL, _T("Failed to HookEvent ME_SYSTEM_MODULESLOADED"), MSG_BOX_TITEL, MB_OK); return 1; } hPreShutdown = HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); if (!hPreShutdown) { MessageBox(NULL, _T("Failed to HookEvent ME_SYSTEM_PRESHUTDOWN"), MSG_BOX_TITEL, MB_OK); return 1; } if (CallService(MS_DB_GETPROFILEPATH, MAX_PATH, (LPARAM)szPluginPath)) { MessageBox(NULL, _T("Failed to retrieve plugin path."), MSG_BOX_TITEL, MB_OK); return 1; } mir_tstrncat(szPluginPath, _T("\\HTTPServer\\"), _countof(szPluginPath) - mir_tstrlen(szPluginPath)); int err = CreateDirectoryTree(szPluginPath); if ((err != 0) && (err != ERROR_ALREADY_EXISTS)) { MessageBox(NULL, _T("Failed to create HTTPServer directory."), MSG_BOX_TITEL, MB_OK); return 1; } nPluginPathLen = (int)mir_strlen(szPluginPath); sLogFilePath = szPluginPath; sLogFilePath += "HTTPServer.log"; if (!bInitMimeHandling()) MessageBox(NULL, "Failed to read configuration file : " szMimeTypeConfigFile, MSG_BOX_TITEL, MB_OK); nMaxUploadSpeed = db_get_dw(NULL, MODULE, "MaxUploadSpeed", nMaxUploadSpeed); nMaxConnectionsTotal = db_get_dw(NULL, MODULE, "MaxConnectionsTotal", nMaxConnectionsTotal); nMaxConnectionsPerUser = db_get_dw(NULL, MODULE, "MaxConnectionsPerUser", nMaxConnectionsPerUser); bLimitOnlyWhenOnline = db_get_b(NULL, MODULE, "LimitOnlyWhenOnline", bLimitOnlyWhenOnline) != 0; indexCreationMode = (eIndexCreationMode)db_get_b(NULL, MODULE, "IndexCreationMode", 2); if (db_get_b(NULL, MODULE, "AddAcceptConMenuItem", 1)) { CMenuItem mi; SET_UID(mi, 0xf0a68784, 0xc30e, 0x4245, 0xb6, 0x2b, 0xb8, 0x71, 0x7e, 0xe6, 0xe1, 0x73); mi.flags = CMIF_TCHAR; mi.hIcolibItem = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SHARE_NEW_FILE)); mi.position = 1000085000; mi.name.a = LPGENT("Enable HTTP server"); mi.pszService = MS_HTTP_ACCEPT_CONNECTIONS; hAcceptConnectionsMenuItem = Menu_AddMainMenuItem(&mi); } if (indexCreationMode == INDEX_CREATION_HTML || indexCreationMode == INDEX_CREATION_DETECT) if (!LoadIndexHTMLTemplate()) { indexCreationMode = INDEX_CREATION_DISABLE; db_set_b(NULL, MODULE, "IndexCreationMode", (BYTE)indexCreationMode); } hEventProtoAck = HookEvent(ME_PROTO_ACK, nProtoAck); return 0; }
void EventHooker::Hook() { handle_ = HookEvent(name_.c_str(), fun_); }
int OnPluginsLoaded(WPARAM wParam,LPARAM lParam) { fprintf(logFile, "Plugins loaded\n"); HookEvent("NWClient/ExoApp/Initialized", OnClientLoaded); return 1; }
BOOL TlenMUCInit(void) { HookEvent(ME_MUCC_EVENT, TlenMUCHandleEvent); return 0; }
void InitOptions() { LoadOptions(); hOptHook = HookEvent(ME_OPT_INITIALISE, InitOptionsCallback); }
int __declspec(dllexport) Load(PLUGINLINK *link) { PROTOCOLDESCRIPTOR pd; HANDLE hContact; char text[_MAX_PATH]; char *p, *q; char *szProto; CLISTMENUITEM mi, clmi; DBVARIANT dbv; GetModuleFileName(hInst, text, sizeof(text)); p = strrchr(text, '\\'); p++; q = strrchr(p, '.'); *q = '\0'; jabberProtoName = _strdup(p); _strupr(jabberProtoName); jabberModuleName = _strdup(jabberProtoName); _strlwr(jabberModuleName); jabberModuleName[0] = toupper(jabberModuleName[0]); JabberLog("Setting protocol/module name to '%s/%s'", jabberProtoName, jabberModuleName); pluginLink = link; DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); jabberMainThreadId = GetCurrentThreadId(); //hLibSSL = NULL; // hWndListGcLog = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); HookEvent(ME_OPT_INITIALISE, TlenOptInit); HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); // 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; // "Multi-User Conference" wsprintf(text, "%s/MainMenuMUC", jabberModuleName); CreateServiceFunction(text, TlenMUCMenuHandleMUC); mi.pszName = Translate("Multi-User Conference"); mi.position = 2000050001; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_TLEN)); mi.pszService = text; hMenuMUC = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuMUC, (LPARAM) &clmi); wsprintf(text, "%s/MainMenuChats", jabberModuleName); CreateServiceFunction(text, TlenMUCMenuHandleChats); mi.pszName = Translate("Tlen Chats..."); mi.position = 2000050002; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_TLEN)); mi.pszService = text; hMenuChats = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuChats, (LPARAM) &clmi); // "Invite to MUC" sprintf(text, "%s/ContactMenuMUC", jabberModuleName); CreateServiceFunction(text, TlenMUCContactMenuHandleMUC); mi.pszName = Translate("Multi-User Conference"); mi.position = -2000020000; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(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(text, TlenVoiceContactMenuHandleVoice); mi.pszName = Translate("Voice Chat"); mi.position = -2000018000; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_MICROPHONE)); mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactVoice = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); // "Request authorization" sprintf(text, "%s/RequestAuth", jabberModuleName); CreateServiceFunction(text, TlenContactMenuHandleRequestAuth); mi.pszName = Translate("Request authorization"); mi.position = -2000001001; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(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(text, TlenContactMenuHandleGrantAuth); mi.pszName = Translate("Grant authorization"); mi.position = -2000001000; mi.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_GRANT)); mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactGrantAuth = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); HookEvent(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; jabberVcardPhotoFileName = NULL; jabberVcardPhotoType = NULL; memset((char *) &modeMsgs, 0, sizeof(JABBER_MODEMSGS)); //jabberModeMsg = NULL; jabberCodePage = CP_ACP; InitializeCriticalSection(&mutex); InitializeCriticalSection(&modeMsgMutex); TlenIconInit(); srand((unsigned) time(NULL)); JabberSerialInit(); JabberIqInit(); JabberListInit(); JabberSvcInit(); return 0; }
static int icqModulesLoaded(WPARAM wParam, LPARAM lParam) { HookEvent(ME_USERINFO_INITIALISE, icqUserInfoInitialise); return 0; }
int CSModuleLoaded(WPARAM wParam, LPARAM lParam) { protoList = (OBJLIST<PROTOCOLSETTINGEX>*)&startupSettings; InitProfileModule(); HookEvent(ME_PROTO_ACCLISTCHANGED, OnAccChanged); HookEvent(ME_OPT_INITIALISE, OptionsInit); /* shutdown hook for normal shutdown */ HookEvent(ME_SYSTEM_OKTOEXIT, OnOkToExit); HookEvent(ME_SYSTEM_PRESHUTDOWN, OnShutdown); /* message window for poweroff */ hMessageWindow = CreateWindowEx(0, _T("STATIC"), NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL); SetWindowLongPtr(hMessageWindow, GWLP_WNDPROC, (LONG_PTR)MessageWndProc); GetProfile(-1, startupSettings); // override with cmdl ProcessCommandLineOptions(startupSettings); if (startupSettings.getCount() == 0) return 0;// no protocols are loaded SetLastStatusMessages(startupSettings); showDialogOnStartup = (showDialogOnStartup || db_get_b(NULL, MODULENAME, SETTING_SHOWDIALOG, 0)); // dial if (showDialogOnStartup || db_get_b(NULL, MODULENAME, SETTING_SETPROFILE, 1)) if (db_get_b(NULL, MODULENAME, SETTING_AUTODIAL, 0)) InternetAutodial(0, NULL); // set the status! if (showDialogOnStartup || db_get_b(NULL, MODULENAME, SETTING_SHOWDIALOG, 0)) CallService(MS_CS_SHOWCONFIRMDLGEX, (WPARAM)&startupSettings, db_get_dw(NULL, MODULENAME, SETTING_DLGTIMEOUT, 5)); else if (db_get_b(NULL, MODULENAME, SETTING_SETPROFILE, 1)) { // set hooks for override if (db_get_b(NULL, MODULENAME, SETTING_OVERRIDE, 1)) { hProtoAckHook = HookEvent(ME_PROTO_ACK, ProcessProtoAck); hCSStatusChangeHook = HookEvent(ME_CS_STATUSCHANGEEX, CSStatusChangeEx); hStatusChangeHook = HookEvent(ME_CLIST_STATUSMODECHANGE, StatusChange); } setStatusTimerId = SetTimer(NULL, 0, db_get_dw(NULL, MODULENAME, SETTING_SETPROFILEDELAY, 500), SetStatusTimed); } // win size and location if (db_get_b(NULL, MODULENAME, SETTING_SETWINLOCATION, 0) || db_get_b(NULL, MODULENAME, SETTING_SETWINSIZE, 0)) { HWND hClist = pcli->hwndContactList; // store in db if (db_get_b(NULL, MODULENAME, SETTING_SETWINLOCATION, 0)) { db_set_dw(NULL, MODULE_CLIST, SETTING_XPOS, db_get_dw(NULL, MODULENAME, SETTING_XPOS, 0)); db_set_dw(NULL, MODULE_CLIST, SETTING_YPOS, db_get_dw(NULL, MODULENAME, SETTING_YPOS, 0)); } if (db_get_b(NULL, MODULENAME, SETTING_SETWINSIZE, 0)) { db_set_dw(NULL, MODULE_CLIST, SETTING_WIDTH, db_get_dw(NULL, MODULENAME, SETTING_WIDTH, 0)); if (!db_get_b(NULL, MODULE_CLUI, SETTING_AUTOSIZE, 0)) db_set_dw(NULL, MODULE_CLIST, SETTING_HEIGHT, db_get_dw(NULL, MODULENAME, SETTING_HEIGHT, 0)); } WINDOWPLACEMENT wndpl = { sizeof(wndpl) }; if (GetWindowPlacement(hClist, &wndpl)) { if (wndpl.showCmd == SW_SHOWNORMAL && !CallService(MS_CLIST_DOCKINGISDOCKED, 0, 0)) { RECT rc; if (GetWindowRect(hClist, &rc)) { int x = rc.left; int y = rc.top; int width = rc.right - rc.left; int height = rc.bottom - rc.top; if (db_get_b(NULL, MODULENAME, SETTING_SETWINLOCATION, 0)) { x = db_get_dw(NULL, MODULENAME, SETTING_XPOS, x); y = db_get_dw(NULL, MODULENAME, SETTING_YPOS, y); } if (db_get_b(NULL, MODULENAME, SETTING_SETWINSIZE, 0)) { width = db_get_dw(NULL, MODULENAME, SETTING_WIDTH, width); if (!db_get_b(NULL, MODULE_CLUI, SETTING_AUTOSIZE, 0)) height = db_get_dw(NULL, MODULENAME, SETTING_HEIGHT, height); } MoveWindow(hClist, x, y, width, height, TRUE); } } } } return 0; }
//===== Load ============================================================================ // Initializes the services provided and the link to those needed // Called when the plugin is loaded into Miranda MIRAPI int Load(void) { DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); mir_getLP(&pluginInfoEx); CreateServiceFunction(MS_POPUP_GETSTATUS, GetStatus); #if defined(_DEBUG) PopupOptions.debug = db_get_b(NULL, MODULNAME, "debug", FALSE); #else PopupOptions.debug = false; #endif LoadGDIPlus(); // Transparent and animation routines hDwmapiDll = LoadLibrary(_T("dwmapi.dll")); MyDwmEnableBlurBehindWindow = 0; if (hDwmapiDll) MyDwmEnableBlurBehindWindow = (HRESULT(WINAPI *)(HWND, DWM_BLURBEHIND *))GetProcAddress(hDwmapiDll, "DwmEnableBlurBehindWindow"); PopupHistoryLoad(); LoadPopupThread(); if (!LoadPopupWnd2()) { MessageBox(0, TranslateT("Error: I could not register the Popup Window class.\r\nThe plugin will not operate."), _T(MODULNAME_LONG), MB_ICONSTOP | MB_OK); return 0; // We couldn't register our Window Class, don't hook any event: the plugin will act as if it was disabled. } RegisterOptPrevBox(); // Register in DBEditor++ UpgradeDb(); HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_OPT_INITIALISE, OptionsInitialize); HookEvent(ME_SYSTEM_PRESHUTDOWN, OkToExit); HookEvent(ME_SYSTEM_SHUTDOWN, OnShutdown); hbmNoAvatar = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_NOAVATAR)); if (!OptionLoaded) LoadOptions(); // Service Functions hEventNotify = CreateHookableEvent(ME_POPUP_FILTER); CreateServiceFunction(MS_POPUP_ADDPOPUP, Popup_AddPopup); CreateServiceFunction(MS_POPUP_ADDPOPUPW, Popup_AddPopupW); CreateServiceFunction(MS_POPUP_ADDPOPUP2, Popup_AddPopup2); CreateServiceFunction(MS_POPUP_CHANGETEXTW, Popup_ChangeTextW); CreateServiceFunction(MS_POPUP_CHANGEW, Popup_ChangeW); CreateServiceFunction(MS_POPUP_CHANGEPOPUP2, Popup_Change2); CreateServiceFunction(MS_POPUP_GETCONTACT, Popup_GetContact); CreateServiceFunction(MS_POPUP_GETPLUGINDATA, Popup_GetPluginData); CreateServiceFunction(MS_POPUP_SHOWMESSAGE, Popup_ShowMessage); CreateServiceFunction(MS_POPUP_SHOWMESSAGEW, Popup_ShowMessageW); CreateServiceFunction(MS_POPUP_QUERY, Popup_Query); CreateServiceFunction(MS_POPUP_REGISTERACTIONS, Popup_RegisterActions); CreateServiceFunction(MS_POPUP_REGISTERNOTIFICATION, Popup_RegisterNotification); CreateServiceFunction(MS_POPUP_UNHOOKEVENTASYNC, Popup_UnhookEventAsync); CreateServiceFunction(MS_POPUP_REGISTERVFX, Popup_RegisterVfx); CreateServiceFunction(MS_POPUP_REGISTERCLASS, Popup_RegisterPopupClass); CreateServiceFunction(MS_POPUP_UNREGISTERCLASS, Popup_UnregisterPopupClass); CreateServiceFunction(MS_POPUP_ADDPOPUPCLASS, Popup_CreateClassPopup); // load icons / create hook InitIcons(); HookEvent(ME_SKIN2_ICONSCHANGED, IconsChanged); // add menu items InitMenuItems(); return 0; }
void InitAlarmWin() { hAlarmWindowList = WindowList_Create(); HookEvent(ME_SYSTEM_MODULESLOADED, AlarmWinModulesLoaded); }
extern "C" int __declspec(dllexport) CListInitialise(PLUGINLINK * link) { int rc = 0; DBVARIANT dbv; int i; char szProfilePath[MAX_PATH]; pluginLink = link; #ifdef _DEBUG _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); #endif mir_getMMI(&mmi); mir_getLI(&li); mir_getTMI(&tmi); mir_getLP( &pluginInfo ); API::onInit(); LoadCLCButtonModule(); RegisterCLUIFrameClasses(); ZeroMemory((void*) &cfg::dat, sizeof(cfg::dat)); int iCount = CallService(MS_DB_CONTACT_GETCOUNT, 0, 0); iCount += 20; if( iCount < 300 ) iCount = 300; cfg::eCache = reinterpret_cast<TExtraCache *>(malloc(sizeof(TExtraCache) * iCount)); ZeroMemory(cfg::eCache, sizeof(struct TExtraCache) * iCount); cfg::nextCacheEntry = 0; cfg::maxCacheEntry = iCount; cfg::init(); cfg::dat.toolbarVisibility = cfg::getDword("CLUI", "TBVisibility", DEFAULT_TB_VISIBILITY); cfg::dat.hMenuButtons = GetSubMenu(LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_CONTEXT)), 3); cfg::dat.hMenuNotify = CreatePopupMenu(); cfg::dat.wNextMenuID = 1; cfg::dat.sortTimer = cfg::getDword("CLC", "SortTimer", 150); cfg::dat.szNoEvents = TranslateTS(szNoevents); cfg::dat.avatarBorder = (COLORREF)cfg::getDword("CLC", "avatarborder", 0); cfg::dat.avatarRadius = (COLORREF)cfg::getDword("CLC", "avatarradius", 4); cfg::dat.hBrushAvatarBorder = CreateSolidBrush(cfg::dat.avatarBorder); cfg::dat.avatarSize = cfg::getWord("CList", "AvatarSize", 24); cfg::dat.dualRowMode = cfg::getByte("CLC", "DualRowMode", 0); cfg::dat.avatarPadding = cfg::getByte("CList", "AvatarPadding", 0); cfg::dat.isTransparent = cfg::getByte("CList", "Transparent", 0); cfg::dat.alpha = cfg::getByte("CList", "Alpha", SETTING_ALPHA_DEFAULT); cfg::dat.autoalpha = cfg::getByte("CList", "AutoAlpha", SETTING_ALPHA_DEFAULT); cfg::dat.fadeinout = cfg::getByte("CLUI", "FadeInOut", 0); cfg::dat.autosize = cfg::getByte("CLUI", "AutoSize", 0); cfg::dat.dwExtraImageMask = cfg::getDword("CLUI", "ximgmask", 0); cfg::dat.bNoOfflineAvatars = cfg::getByte("CList", "NoOfflineAV", 1); cfg::dat.bFullTransparent = cfg::getByte("CLUI", "fulltransparent", 0); cfg::dat.bDblClkAvatars = cfg::getByte("CLC", "dblclkav", 0); cfg::dat.bEqualSections = cfg::getByte("CLUI", "EqualSections", 0); cfg::dat.bCenterStatusIcons = cfg::getByte("CLC", "si_centered", 1); cfg::dat.boldHideOffline = -1; cfg::dat.bSecIMAvail = ServiceExists("SecureIM/IsContactSecured") ? 1 : 0; cfg::dat.bNoTrayTips = cfg::getByte("CList", "NoTrayTips", 0); cfg::dat.bShowLocalTime = cfg::getByte("CLC", "ShowLocalTime", 1); cfg::dat.bShowLocalTimeSelective = cfg::getByte("CLC", "SelectiveLocalTime", 1); cfg::dat.bDontSeparateOffline = cfg::getByte("CList", "DontSeparateOffline", 0); cfg::dat.bShowXStatusOnSbar = cfg::getByte("CLUI", "xstatus_sbar", 0); cfg::dat.bLayeredHack = cfg::getByte("CLUI", "layeredhack", 1); cfg::dat.bFirstRun = cfg::getByte("CLUI", "firstrun", 1); cfg::dat.langPackCP = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); cfg::dat.realTimeSaving = cfg::getByte("CLUI", "save_pos_always", 0); DWORD sortOrder = cfg::getDword("CList", "SortOrder", SORTBY_NAME); cfg::dat.sortOrder[0] = LOBYTE(LOWORD(sortOrder)); cfg::dat.sortOrder[1] = HIBYTE(LOWORD(sortOrder)); cfg::dat.sortOrder[2] = LOBYTE(HIWORD(sortOrder)); if(cfg::dat.bFirstRun) cfg::writeByte("CLUI", "firstrun", 0); if(!cfg::getString(NULL, "CLUI", "exIconOrder", &dbv)) { if(lstrlenA(dbv.pszVal) < EXICON_COUNT) { for(i = 1; i <= EXICON_COUNT; i++) cfg::dat.exIconOrder[i - 1] = i; } else { for(i = 0; i < EXICON_COUNT; i++) if(dbv.pszVal[i] < EXICON_COUNT+1 && dbv.pszVal[i] >0) cfg::dat.exIconOrder[i] = dbv.pszVal[i]; else cfg::dat.exIconOrder[i] = i+1; } DBFreeVariant(&dbv); } else { for(i = 1; i <= EXICON_COUNT; i++) cfg::dat.exIconOrder[i - 1] = i; } ReloadThemedOptions(); FLT_ReadOptions(); Reload3dBevelColors(); himlExtraImages = ImageList_Create(16, 16, ILC_MASK | (IsWinVerXPPlus() ? ILC_COLOR32 : ILC_COLOR16), 30, 2); ImageList_SetIconSize(himlExtraImages, cfg::dat.exIconScale, cfg::dat.exIconScale); cfg::dat.dwFlags = cfg::getDword("CLUI", "Frameflags", CLUI_FRAME_SHOWTOPBUTTONS | CLUI_FRAME_STATUSICONS | CLUI_FRAME_SHOWBOTTOMBUTTONS | CLUI_FRAME_BUTTONSFLAT | CLUI_FRAME_CLISTSUNKEN); cfg::dat.dwFlags |= (cfg::getByte("CLUI", "ShowSBar", 1) ? CLUI_FRAME_SBARSHOW : 0); cfg::dat.soundsOff = cfg::getByte("CLUI", "NoSounds", 0); CallService(MS_DB_GETPROFILEPATH, MAX_PATH, (LPARAM)szProfilePath); #if defined(_UNICODE) MultiByteToWideChar(CP_ACP, 0, szProfilePath, MAX_PATH, cfg::dat.tszProfilePath, MAX_PATH); cfg::dat.tszProfilePath[MAX_PATH - 1] = 0; #else mir_sntprintf(cfg::dat.tszProfilePath, MAX_PATH, "%s", szProfilePath); #endif _tcslwr(cfg::dat.tszProfilePath); if(cfg::getByte("Skin", "UseSound", 0) != cfg::dat.soundsOff) cfg::writeByte("Skin", "UseSound", (BYTE)(cfg::dat.soundsOff ? 0 : 1)); // get the clist interface pcli = ( CLIST_INTERFACE* )CallService(MS_CLIST_RETRIEVE_INTERFACE, 0, (LPARAM)g_hInst); if ( (INT_PTR)pcli == CALLSERVICE_NOTFOUND ) { LBL_Error: MessageBoxA( NULL, "This plugin requires Miranda IM 0.8.0.9 or later", "Fatal error", MB_OK ); return 1; } if ( pcli->version < 6 ) // don't join it with the previous if() goto LBL_Error; pcli->pfnBuildGroupPopupMenu = BuildGroupPopupMenu; pcli->pfnCluiProtocolStatusChanged = CluiProtocolStatusChanged; pcli->pfnCompareContacts = CompareContacts; pcli->pfnCreateClcContact = CreateClcContact; pcli->pfnCreateEvent = fnCreateEvent; pcli->pfnDocking_ProcessWindowMessage = Docking_ProcessWindowMessage; pcli->pfnGetDefaultFontSetting = GetDefaultFontSetting; pcli->pfnGetRowBottomY = RowHeight::getItemBottomY; pcli->pfnGetRowHeight = RowHeight::getHeight; pcli->pfnGetRowTopY = RowHeight::getItemTopY; pcli->pfnGetRowTotalHeight = RowHeight::getTotalHeight; pcli->pfnGetWindowVisibleState = GetWindowVisibleState; pcli->pfnHitTest = HitTest; pcli->pfnLoadContactTree = LoadContactTree; pcli->pfnOnCreateClc = LoadCLUIModule; pcli->pfnPaintClc = PaintClc; pcli->pfnRebuildEntireList = RebuildEntireList; pcli->pfnRowHitTest = RowHeight::hitTest; pcli->pfnScrollTo = ScrollTo; pcli->pfnTrayIconUpdateBase = TrayIconUpdateBase; pcli->pfnSetHideOffline = SetHideOffline; pcli->pfnShowHide = ShowHide; saveAddContactToGroup = pcli->pfnAddContactToGroup; pcli->pfnAddContactToGroup = AddContactToGroup; saveRemoveItemFromGroup = pcli->pfnRemoveItemFromGroup; pcli->pfnRemoveItemFromGroup = RemoveItemFromGroup; saveAddEvent = pcli->pfnAddEvent; pcli->pfnAddEvent = AddEvent; saveRemoveEvent = pcli->pfnRemoveEvent; pcli->pfnRemoveEvent = RemoveEvent; saveAddGroup = pcli->pfnAddGroup; pcli->pfnAddGroup = AddGroup; saveAddInfoItemToGroup = pcli->pfnAddInfoItemToGroup; pcli->pfnAddInfoItemToGroup = AddInfoItemToGroup; saveContactListControlWndProc = pcli->pfnContactListControlWndProc; pcli->pfnContactListControlWndProc = ContactListControlWndProc; saveContactListWndProc = pcli->pfnContactListWndProc; pcli->pfnContactListWndProc = ContactListWndProc; saveIconFromStatusMode = pcli->pfnIconFromStatusMode; pcli->pfnIconFromStatusMode = fnIconFromStatusMode; saveLoadClcOptions = pcli->pfnLoadClcOptions; pcli->pfnLoadClcOptions = LoadClcOptions; saveProcessExternalMessages = pcli->pfnProcessExternalMessages; pcli->pfnProcessExternalMessages = ProcessExternalMessages; saveRecalcScrollBar = pcli->pfnRecalcScrollBar; pcli->pfnRecalcScrollBar = RecalcScrollBar; saveTrayIconProcessMessage = pcli->pfnTrayIconProcessMessage; pcli->pfnTrayIconProcessMessage = TrayIconProcessMessage; rc = LoadContactListModule(); if (rc == 0) rc = LoadCLCModule(); HookEvent(ME_SYSTEM_MODULESLOADED, systemModulesLoaded); return rc; }
int LoadVisibilityModule(void) { HookEvent(ME_OPT_INITIALISE, VisibilityOptInitialise); return 0; }
static int OnModulesLoaded(WPARAM, LPARAM) { posttimerid = SetTimer(NULL, 0, 5, (TIMERPROC)PostRegisterIcons); HookEvent(ME_SKIN2_ICONSCHANGED, OnIconLibChanges); return 0; }