int Chat_ModulesLoaded(WPARAM wParam,LPARAM lParam) { char* mods[3] = { "Chat", "ChatFonts" }; CallService( "DBEditorpp/RegisterModule", (WPARAM)mods, 2 ); RegisterChatFonts(); OptionsInit(); LoadIcons(); { CLISTMENUITEM mi = { 0 }; mi.cbSize = sizeof(mi); mi.position = -2000090001; mi.flags = CMIF_DEFAULT | CMIF_ICONFROMICOLIB; mi.icolibItem = LoadSkinnedIconHandle( SKINICON_CHAT_JOIN ); mi.pszName = LPGEN("&Join"); mi.pszService = "GChat/JoinChat"; hJoinMenuItem = ( HANDLE )CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) & mi); mi.position = -2000090000; mi.flags = CMIF_NOTOFFLINE | CMIF_ICONFROMICOLIB; mi.icolibItem = LoadSkinnedIconHandle( SKINICON_CHAT_LEAVE ); mi.pszName = LPGEN("&Leave"); mi.pszService = "GChat/LeaveChat"; hLeaveMenuItem = ( HANDLE )CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) & mi); } CList_SetAllOffline(TRUE, NULL); return 0; }
static void SetVisibility(MCONTACT hContact, int apparentMode, bool clear) { if (hContact == NULL) return; char *proto = GetContactProto(hContact); if (IsEmpty(proto)) return; if (apparentMode <= 0) apparentMode = db_get_w(hContact, proto, "ApparentMode", 0); HANDLE hExtraIcon, hIcolib = NULL; if (db_get_b(hContact, proto, "ChatRoom", 0)) { // Is chat hExtraIcon = hExtraChat; if (apparentMode == ID_STATUS_OFFLINE) hIcolib = Skin_GetIconHandle("ChatActivity"); } else { // Not chat hExtraIcon = hExtraVisibility; if (apparentMode == ID_STATUS_OFFLINE) hIcolib = LoadSkinnedIconHandle(SKINICON_OTHER_INVISIBLE_ALL); else if (apparentMode == ID_STATUS_ONLINE) hIcolib = LoadSkinnedIconHandle(SKINICON_OTHER_VISIBLE_ALL); } if (hIcolib != NULL || clear) { ExtraIcon *extra = GetExtraIcon(hExtraIcon); if (extra) extra->setIcon((int)hExtraIcon, hContact, hIcolib); } }
static int TSAPI LoadFromIconLib() { for (int n = 0; n < SIZEOF(ICONBLOCKS); n++) for (int i=0; i < ICONBLOCKS[n].nItems; i++) *(ICONBLOCKS[n].idesc[i].phIcon) = Skin_GetIcon(ICONBLOCKS[n].idesc[i].szName); PluginConfig.g_buttonBarIcons[0] = LoadSkinnedIcon(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIcons[1] = LoadSkinnedIcon(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[0] = LoadSkinnedIconHandle(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[1] = LoadSkinnedIconHandle(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIconHandles[20] = LoadSkinnedIconHandle(SKINICON_OTHER_USERDETAILS); PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING] = PluginConfig.g_buttonBarIcons[12] = LoadSkinnedIcon(SKINICON_OTHER_TYPING); PluginConfig.g_IconChecked = LoadSkinnedIcon(SKINICON_OTHER_TICK); PluginConfig.g_IconUnchecked = LoadSkinnedIcon(SKINICON_OTHER_NOTICK); PluginConfig.g_IconFolder = LoadSkinnedIcon(SKINICON_OTHER_GROUPOPEN); PluginConfig.g_iconOverlayEnabled = Skin_GetIcon("tabSRMM_overlay_enabled"); PluginConfig.g_iconOverlayDisabled = Skin_GetIcon("tabSRMM_overlay_disabled"); PluginConfig.g_iconClock = Skin_GetIcon("tabSRMM_clock_symbol"); CacheMsgLogIcons(); M.BroadcastMessage(DM_LOADBUTTONBARICONS, 0, 0); return 0; }
static int ModulesLoaded(WPARAM, LPARAM) { LoadChatIcons(); HookEvent(ME_SMILEYADD_OPTIONSCHANGED, SmileyOptionsChanged); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PrebuildContactMenu); CLISTMENUITEM mi = { sizeof(mi) }; mi.position = -2000090001; mi.flags = CMIF_DEFAULT; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_CHAT_JOIN); mi.pszName = LPGEN("&Join chat"); mi.pszService = "GChat/JoinChat"; hJoinMenuItem = Menu_AddContactMenuItem(&mi); mi.position = -2000090000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_CHAT_LEAVE); mi.flags = CMIF_NOTOFFLINE; mi.pszName = LPGEN("&Leave chat"); mi.pszService = "GChat/LeaveChat"; hLeaveMenuItem = Menu_AddContactMenuItem(&mi); ci.SetAllOffline(TRUE, NULL); return 0; }
void InitSubGroupMenus(void) { CreateServiceFunction("CLISTMENUSSubGroup/ExecService",SubGroupMenuExecService); CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu",FreeOwnerDataSubGroupMenu); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuonAddService",SubGroupMenuonAddService); CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy",GroupMenuExecProxy); CreateServiceFunction("CList/AddSubGroupMenuItem",AddSubGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVESUBGROUPMENUITEM,RemoveSubGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDSUBGROUP,BuildSubGroupMenu); hPreBuildSubGroupMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDSUBGROUPMENU); HookEvent(ME_CLIST_PREBUILDSUBGROUPMENU,OnBuildSubGroupMenu); //SubGroup menu hSubGroupMenuObject = MO_CreateMenuObject("SubGroupMenu", LPGEN("Subgroup menu"), 0, "CLISTMENUSSubGroup/ExecService"); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_USERDEFINEDITEMS, TRUE); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSSubGroup/SubGroupMenuonAddService"); //add exit command to menu GroupMenuParam gmp; CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 1000; mi.hIcon = ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&New SubGroup"); gmp.lParam = 0;gmp.wParam = POPUP_NEWSUBGROUP; hNewSubGroupMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 1001; mi.hIcon = NULL; mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Hide Offline Users in here"); gmp.lParam = 0;gmp.wParam = POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 900001; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_RENAME); //LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_RENAME)); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Rename Group"); gmp.lParam = 0;gmp.wParam = POPUP_RENAMEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 900002; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); //LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_DELETE)); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Delete Group"); gmp.lParam = 0;gmp.wParam = POPUP_DELETEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); }
int CVkProto::OnModulesLoaded(WPARAM wParam, LPARAM lParam) { // Chats GCREGISTER gcr = { sizeof(gcr) }; gcr.ptszDispName = m_tszUserName; gcr.pszModule = m_szModuleName; gcr.nColors = SIZEOF(sttColors); gcr.pColors = sttColors; CallServiceSync(MS_GC_REGISTER, NULL, (LPARAM)&gcr); CreateProtoService(PS_CREATECHAT, &CVkProto::SvcCreateChat); HookProtoEvent(ME_GC_EVENT, &CVkProto::OnChatEvent); HookProtoEvent(ME_GC_BUILDMENU, &CVkProto::OnGcMenuHook); char szService[100]; mir_snprintf(szService, sizeof(szService), "%s%s", m_szModuleName, PS_CREATECHAT); CLISTMENUITEM mi = { sizeof(mi) }; mi.flags = CMIF_CHILDPOPUP; mi.hParentMenu = MO_GetProtoRootMenu(m_szModuleName); mi.pszService = szService; mi.position = 10009; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_CHAT_JOIN); mi.pszName = LPGEN("Create new chat"); Menu_AddProtoMenuItem(&mi); return 0; }
void DefaultExtraIcons_Load() { hExtraChat = ExtraIcon_Register("chat_activity", LPGEN("Chat activity"), "ChatActivity"); hExtraVisibility = ExtraIcon_Register("visibility", "Visibility", LoadSkinnedIconName(SKINICON_OTHER_VISIBLE_ALL)); hExtraGender = ExtraIcon_Register("gender", "Gender", "gender_male"); hExtraProto = ExtraIcon_Register("protocol", "Account", LoadSkinnedIconName(SKINICON_OTHER_ACCMGR), &ProtocolRebuildIcons, &ProtocolApplyIcon, &ProtocolOnClick); for (int i = 0; i < SIZEOF(infos); i++) { Info &p = infos[i]; p.hIcolib = LoadSkinnedIconHandle(p.iSkinIcon); if (p.OnClick) p.hExtraIcon = ExtraIcon_Register(p.name, p.desc, LoadSkinnedIconName(p.iSkinIcon), DefaultOnClick, (LPARAM)&p); else p.hExtraIcon = ExtraIcon_Register(p.name, p.desc, LoadSkinnedIconName(p.iSkinIcon)); } for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { SetExtraIcons(hContact); SetVisibility(hContact, -1, false); SetGender(hContact, -1, false); } HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SettingChanged); }
void gg_links_instancemenu_init() { CreateServiceFunction(GGS_MENUCHOOSE, gg_menuchoose); hInstanceMenu = MO_CreateMenuObject("GGAccountChooser", LPGEN("Gadu-Gadu account chooser"), 0, GGS_MENUCHOOSE); TMO_MenuItem tmi = {0}; tmi.cbSize = sizeof(tmi); tmi.pszName = "Cancel"; tmi.position = 9999999; tmi.hIcolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); CallService(MO_ADDNEWMENUITEM, (WPARAM)hInstanceMenu, (LPARAM)&tmi); }
void CDropbox::InitializeMenus() { CLISTMENUITEM mi = { 0 }; mi.cbSize = sizeof(CLISTMENUITEM); mi.flags = CMIF_TCHAR; mi.pszService = MODULE"/SendFilesToDropbox"; mi.ptszName = LPGENT("Send files to Dropbox"); mi.position = -2000020000 + CMI_SEND_FILES; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_FILE); contactMenuItems[CMI_SEND_FILES] = Menu_AddContactMenuItem(&mi); CreateServiceFunctionObj(mi.pszService, SendFilesToDropbox, this); }
// Hook called after init static int MainInit(WPARAM wparam,LPARAM lparam) { InitProtocolData(); // Add options to menu CLISTMENUITEM mi = { sizeof(mi) }; mi.popupPosition = 500050000; mi.flags = CMIF_ROOTPOPUP | CMIF_TCHAR; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_USERDETAILS); mi.ptszName = LPGENT("My Details"); HANDLE hMenuRoot = Menu_AddMainMenuItem(&mi); mi.flags = CMIF_CHILDPOPUP | CMIF_TCHAR; mi.ptszPopupName = (TCHAR *)hMenuRoot; mi.popupPosition = 0; mi.icolibItem = NULL; if (protocols->CanSetAvatars()) { mi.position = 100001; mi.ptszName = LPGENT("Set My Avatar..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYAVATARUI, Menu_SetMyAvatarUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYAVATARUI; Menu_AddMainMenuItem(&mi); } mi.position = 100002; mi.ptszName = LPGENT("Set My Nickname..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYNICKNAMEUI, Menu_SetMyNicknameUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYNICKNAMEUI; Menu_AddMainMenuItem(&mi); mi.position = 100003; mi.ptszName = LPGENT("Set My Status Message..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYSTATUSMESSAGEUI, Menu_SetMyStatusMessageUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYSTATUSMESSAGEUI; Menu_AddMainMenuItem(&mi); // Set protocols to show frame mi.position = 200001; mi.ptszName = LPGENT("Show next account"); mi.pszService = MS_MYDETAILS_SHOWNEXTPROTOCOL; Menu_AddMainMenuItem(&mi); InitFrames(); if ( Skin_GetIcon("LISTENING_TO_ICON") == NULL) Icon_Register(hInst, LPGEN("Contact List"), iconList, 1); Icon_Register(hInst, LPGEN("My Details"), iconList+1, SIZEOF(iconList)-1); return 0; }
// Hook called after init static int MainInit(WPARAM, LPARAM) { g_bAvsExist = ServiceExists(MS_AV_GETMYAVATAR) != 0; g_bFramesExist = ServiceExists(MS_CLIST_FRAMES_ADDFRAME) != 0; InitProtocolData(); // Add options to menu CLISTMENUITEM mi = { sizeof(mi) }; mi.popupPosition = 500050000; mi.flags = CMIF_ROOTPOPUP | CMIF_TCHAR; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_USERDETAILS); mi.ptszName = LPGENT("My details"); HANDLE hMenuRoot = Menu_AddMainMenuItem(&mi); mi.flags = CMIF_CHILDPOPUP | CMIF_TCHAR; mi.ptszPopupName = (TCHAR *)hMenuRoot; mi.popupPosition = 0; mi.icolibItem = NULL; if (protocols->CanSetAvatars()) { mi.position = 100001; mi.ptszName = LPGENT("Set my avatar..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYAVATARUI, Menu_SetMyAvatarUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYAVATARUI; Menu_AddMainMenuItem(&mi); } mi.position = 100002; mi.ptszName = LPGENT("Set my nickname..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYNICKNAMEUI, Menu_SetMyNicknameUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYNICKNAMEUI; Menu_AddMainMenuItem(&mi); mi.position = 100003; mi.ptszName = LPGENT("Set my status message..."); CreateServiceFunction("MENU_" MS_MYDETAILS_SETMYSTATUSMESSAGEUI, Menu_SetMyStatusMessageUI); mi.pszService = "MENU_" MS_MYDETAILS_SETMYSTATUSMESSAGEUI; Menu_AddMainMenuItem(&mi); // Set protocols to show frame mi.position = 200001; mi.ptszName = LPGENT("Show next account"); mi.pszService = MS_MYDETAILS_SHOWNEXTPROTOCOL; Menu_AddMainMenuItem(&mi); InitFrames(); return 0; }
void CSteamProto::InitMenus() { hChooserMenu = MO_CreateMenuObject("SkypeAccountChooser", LPGEN("Steam menu chooser"), 0, "Steam/MenuChoose"); ////////////////////////////////////////////////////////////////////////////////////// // Contact menu initialization CLISTMENUITEM mi = { 0 }; mi.cbSize = sizeof(CLISTMENUITEM); mi.flags = CMIF_TCHAR; // "Request authorization" mi.pszService = MODULE "/AuthRequest"; mi.ptszName = LPGENT("Request authorization"); mi.position = -201001000 + CMI_AUTH_REQUEST; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); contactMenuItems[CMI_AUTH_REQUEST] = Menu_AddContactMenuItem(&mi); CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::AuthRequestCommand>); // "Block" mi.pszService = MODULE "/Block"; mi.ptszName = LPGENT("Block"); mi.position = -201001001 + CMI_BLOCK; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); contactMenuItems[CMI_BLOCK] = Menu_AddContactMenuItem(&mi); CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::BlockCommand>); mi.flags |= CMIF_NOTOFFLINE; // "Join to game" mi.pszService = MODULE "/JoinToGame"; mi.ptszName = LPGENT("Join to game"); mi.position = -200001000 + CMI_JOIN_GAME; mi.icolibItem = NULL; contactMenuItems[CMI_JOIN_GAME] = Menu_AddContactMenuItem(&mi); CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::JoinToGameCommand>); }
void MSN_InitContactMenu(void) { char servicefunction[100]; strcpy(servicefunction, "MSN"); char* tDest = servicefunction + strlen(servicefunction); CLISTMENUITEM mi = {0}; mi.cbSize = sizeof(mi); mi.flags = CMIF_ICONFROMICOLIB; mi.pszService = servicefunction; strcpy(tDest, MSN_BLOCK); hBlockCom = CreateServiceFunction(servicefunction, MsnMenuBlockCommand); mi.position = -500050000; mi.icolibItem = GetIconHandle(IDI_MSNBLOCK); mi.pszName = LPGEN("&Block"); hBlockMenuItem = (HGENMENU)MSN_CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi); strcpy(tDest, MSN_VIEW_PROFILE); hViewProfile = CreateServiceFunction(servicefunction, MsnMenuViewProfile); mi.position = -500050003; mi.icolibItem = GetIconHandle(IDI_PROFILE); mi.pszName = LPGEN("View &Profile"); hLiveSpaceMenuItem = (HGENMENU)MSN_CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi); strcpy(tDest, MSN_NETMEETING); hNetMeeting = CreateServiceFunction(servicefunction, MsnMenuSendNetMeeting); mi.flags = CMIF_ICONFROMICOLIB | CMIF_NOTOFFLINE; mi.position = -500050002; mi.icolibItem = GetIconHandle(IDI_NETMEETING); mi.pszName = LPGEN("&Start Netmeeting"); hNetmeetingMenuItem = (HGENMENU)MSN_CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM)&mi); strcpy(tDest, "/SendHotmail"); hSendHotMail = CreateServiceFunction(servicefunction, MsnMenuSendHotmail); mi.position = -2000010005; mi.flags = CMIF_ICONFROMICOLIB | CMIF_HIDDEN; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_SENDEMAIL); mi.pszName = LPGEN("Open &Hotmail Inbox"); hOpenInboxMenuItem = (HGENMENU)CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); hPrebuildMenuHook = HookEvent(ME_CLIST_PREBUILDCONTACTMENU, MSN_OnPrebuildContactMenu); }
void gg_links_instancemenu_init() { char service[MAXMODULELABELLENGTH]; TMenuParam mnu = {0}; TMO_MenuItem tmi = {0}; mir_snprintf(service, sizeof(service), GGS_MENUCHOOSE, GGDEF_PROTO); hServiceMenuChoose = CreateServiceFunction(service, gg_menuchoose); mnu.cbSize = sizeof(mnu); mnu.name = "GGAccountChooser"; mnu.ExecService = service; hInstanceMenu = (HANDLE)CallService(MO_CREATENEWMENUOBJECT, 0, (LPARAM)&mnu); tmi.cbSize = sizeof(tmi); tmi.flags = CMIF_ICONFROMICOLIB; tmi.pszName = "Cancel"; tmi.position = 9999999; tmi.hIcolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); CallService(MO_ADDNEWMENUITEM, (WPARAM)hInstanceMenu, (LPARAM)&tmi); }
void GroupMenus_Init(void) { Icon_RegisterT(g_hInst, LPGENT("Contact list"), &iconItem, 1); 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("CLISTMENUSGroup/CreateGroupHelper", CreateGroupHelper); CreateServiceFunction("CList/AddGroupMenuItem", AddGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDGROUP, BuildGroupMenu); 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.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_EXIT); mi.pszName = LPGEN("E&xit"); AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 500; mi.pszService = MS_CLIST_SHOWHIDE; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_SHOWHIDE); mi.pszName = LPGEN("&Hide/show"); hHideShowMainMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 200000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_FINDUSER); mi.pszService = "FindAdd/FindAddCommand"; mi.pszName = LPGEN("&Find/add contacts..."); AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 300000; mi.pszService = ""; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_MAINMENU); // eternity #004 mi.pszName = LPGEN("&Main menu"); hGroupMainMenuItemProxy = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 300100; mi.pszService = ""; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_STATUS); // eternity #004 mi.pszName = LPGEN("&Status"); hGroupStatusMenuItemProxy = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 400000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService = "Options/OptionsCommand"; mi.pszName = LPGEN("&Options..."); AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 500000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService = "Help/AboutCommand"; mi.pszName = LPGEN("&About"); AddGroupMenuItem(0, (LPARAM)&mi); mi.flags = 0; mi.position = 100000; mi.icolibItem = iconItem.hIcolib; mi.pszService = "CLISTMENUSGroup/CreateGroupHelper"; mi.pszName = LPGEN("&New group"); hNewGroupMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); DestroyIcon_protect(mi.hIcon); mi.position = 100001; mi.hIcon = NULL; mi.icolibItem = 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); mi.position = 100002; mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; mi.pszName = LPGEN("Hide &offline users out here"); hHideOfflineUsersOutHereMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 100003; mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; mi.pszName = LPGEN("Hide &empty groups"); hHideEmptyGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); mi.position = 100004; mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; mi.pszName = LPGEN("Disable &groups"); hDisableGroupsMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); }
void InitSubGroupMenus(void) { CreateServiceFunction("CLISTMENUSSubGroup/ExecService", SubGroupMenuExecService); CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu", FreeOwnerDataSubGroupMenu); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuonAddService", SubGroupMenuonAddService); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuCheckService", SubGroupMenuCheckService); CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy", GroupMenuExecProxy); CreateServiceFunction("CList/AddSubGroupMenuItem", AddSubGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDSUBGROUP, BuildSubGroupMenu); HookEvent(ME_CLIST_PREBUILDSUBGROUPMENU, OnBuildSubGroupMenu); // SubGroup menu hSubGroupMenuObject = MO_CreateMenuObject("SubGroupMenu", LPGEN("Subgroup menu"), 0, "CLISTMENUSSubGroup/ExecService"); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_USERDEFINEDITEMS, TRUE); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_FREE_SERVICE, "CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "CLISTMENUSSubGroup/SubGroupMenuonAddService"); MO_SetMenuObjectParam(hSubGroupMenuObject, OPT_MENUOBJECT_SET_CHECK_SERVICE, "CLISTMENUSSubGroup/SubGroupMenuCheckService"); // add exit command to menu GroupMenuParam gmp; CLISTMENUITEM mi = { sizeof(mi) }; mi.position = 1000; mi.icolibItem = iconItem.hIcolib; mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&New subgroup"); gmp.lParam = 0; gmp.wParam = POPUP_NEWSUBGROUP; hNewSubGroupMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); DestroyIcon_protect(mi.hIcon); mi.position = 1001; mi.hIcon = NULL; mi.icolibItem = NULL; mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Hide offline users in here"); gmp.lParam = 0; gmp.wParam = POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); mi.position = 1002; mi.hIcon = NULL; mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Show offline users in here"); gmp.lParam = 0; gmp.wParam = POPUP_GROUPSHOWOFFLINE; hShowOfflineUsersHereMenuItem = (HGENMENU)AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 900001; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_RENAME); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Rename group"); gmp.lParam = 0; gmp.wParam = POPUP_RENAMEGROUP; AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); mi.position = 900002; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&Delete group"); gmp.lParam = 0; gmp.wParam = POPUP_DELETEGROUP; AddSubGroupMenuItem((WPARAM)&gmp, (LPARAM)&mi); }
void TlenProtocol::initMenuItems() { char text[_MAX_PATH]; strncpy_s(text, sizeof(text), m_szModuleName, _TRUNCATE); char *pSvcName = text + strlen(text); CLISTMENUITEM mi = { sizeof(mi) }, clmi = { sizeof(clmi) }; clmi.flags = CMIM_FLAGS | CMIF_GRAYED; mi.pszContactOwner = m_szModuleName; mi.popupPosition = 500090000; strcpy(text, m_szModuleName); mi.pszService = text; mi.ptszName = m_tszUserName; mi.position = -1999901009; mi.hParentMenu = HGENMENU_ROOT; mi.flags = CMIF_ROOTPOPUP | CMIF_TCHAR; mi.icolibItem = GetIconHandle(IDI_TLEN); hMenuRoot = Menu_AddMainMenuItem(&mi); mi.flags = CMIF_CHILDPOPUP; //mi.pszPopupName = (char *)hMenuRoot; mi.hParentMenu = (HGENMENU)hMenuRoot; hMenuChats = NULL; // "Multi-User Conference" strcpy(pSvcName, "/MainMenuMUC"); CreateProtoService(pSvcName, &TlenProtocol::MUCMenuHandleMUC); mi.pszName = LPGEN("Multi-User Conference"); mi.position = 2000050002; mi.icolibItem = GetIconHandle(IDI_MUC); mi.pszService = text; hMenuMUC = Menu_AddMainMenuItem(&mi); Menu_ModifyItem(hMenuMUC, &clmi); strcpy(pSvcName, "/MainMenuInbox"); CreateProtoService(pSvcName, &TlenProtocol::MenuHandleInbox); mi.pszName = LPGEN("Tlen Mail"); mi.position = 2000050003; mi.icolibItem = GetIconHandle(IDI_MAIL); mi.pszService = text; hMenuInbox = Menu_AddMainMenuItem(&mi); mi.hParentMenu = NULL; // "Send picture" strcpy(pSvcName, "/SendPicture"); CreateProtoService(pSvcName, &TlenProtocol::ContactMenuHandleSendPicture); mi.pszName = LPGEN("Send picture"); mi.position = -2000019030; mi.icolibItem = GetIconHandle(IDI_IMAGE); hMenuPicture = Menu_AddContactMenuItem(&mi); // "Invite to MUC" strcpy(pSvcName, "/ContactMenuMUC"); CreateProtoService(pSvcName, &TlenProtocol::MUCContactMenuHandleMUC); mi.pszName = LPGEN("Multi-User Conference"); mi.position = -2000019020; mi.icolibItem = GetIconHandle(IDI_MUC); hMenuContactMUC = Menu_AddContactMenuItem(&mi); // "Invite to voice chat" strcpy(pSvcName, "/ContactMenuVoice"); CreateProtoService(pSvcName, &TlenProtocol::VoiceContactMenuHandleVoice); mi.pszName = LPGEN("Voice Chat"); mi.position = -2000019010; mi.icolibItem = GetIconHandle(IDI_VOICE); hMenuContactVoice = Menu_AddContactMenuItem(&mi); // "Request authorization" strcpy(pSvcName, "/RequestAuth"); CreateProtoService(pSvcName, &TlenProtocol::ContactMenuHandleRequestAuth); mi.pszName = LPGEN("Request authorization"); mi.position = -2000001001; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); hMenuContactRequestAuth = Menu_AddContactMenuItem(&mi); // "Grant authorization" strcpy(pSvcName, "/GrantAuth"); CreateProtoService(pSvcName, &TlenProtocol::ContactMenuHandleGrantAuth); mi.pszName = LPGEN("Grant authorization"); mi.position = -2000001000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_GRANT); hMenuContactGrantAuth = Menu_AddContactMenuItem(&mi); }
void CB_InitDefaultButtons() { BBButton bbd = { 0 }; bbd.cbSize = sizeof(BBButton); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISARROWBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_PROTOCOL; bbd.dwDefPos = 10; bbd.hIcon = LoadSkinnedIconHandle(SKINICON_OTHER_CONNECTING); bbd.pszModuleName = "Tabsrmm"; bbd.ptszTooltip = LPGENT("Protocol Button"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISARROWBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_NAME; bbd.dwDefPos = 20; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[20]; bbd.ptszTooltip = LPGENT("Info button"); CB_AddButton(0, (LPARAM)&bbd); if (PluginConfig.g_SmileyAddAvail) { bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_SMILEYBTN; bbd.iButtonWidth = 0; bbd.dwDefPos = 30; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[9]; bbd.ptszTooltip = LPGENT("Insert Emoticon"); CB_AddButton(0, (LPARAM)&bbd); } bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISPUSHBUTTON | BBBF_CANBEHIDDEN | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FONTBOLD; bbd.dwDefPos = 40; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[10]; bbd.ptszTooltip = LPGENT("Bold text"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISPUSHBUTTON | BBBF_CANBEHIDDEN | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FONTITALIC; bbd.dwDefPos = 50; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[11]; bbd.ptszTooltip = LPGENT("Italic text"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISPUSHBUTTON | BBBF_CANBEHIDDEN | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FONTUNDERLINE; bbd.dwDefPos = 60; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[12]; bbd.ptszTooltip = LPGENT("Underlined text"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISPUSHBUTTON | BBBF_CANBEHIDDEN | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FONTSTRIKEOUT; bbd.dwDefPos = 70; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[15]; bbd.ptszTooltip = LPGENT("Strike-through text"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_CANBEHIDDEN | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FONTFACE; bbd.dwDefPos = 80; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[14]; bbd.ptszTooltip = LPGENT("Select font color"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_ISARROWBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDOK; bbd.dwDefPos = 10; bbd.iButtonWidth = 51; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[6]; bbd.ptszTooltip = LPGENT("Send message\nClick dropdown arrow for sending options"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_SAVE; bbd.dwDefPos = 20; bbd.iButtonWidth = 0; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[8]; bbd.ptszTooltip = LPGENT("Close session"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_QUOTE; bbd.dwDefPos = 30; bbd.iButtonWidth = 0; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[4]; bbd.ptszTooltip = LPGENT("Quote last message OR selected text"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_TIME; bbd.dwDefPos = 40; bbd.iButtonWidth = 0; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[2]; bbd.ptszTooltip = LPGENT("Message Log Options"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_HISTORY; bbd.dwDefPos = 50; bbd.iButtonWidth = 0; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[0]; bbd.ptszTooltip = LPGENT("View User's History"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_PIC; bbd.dwDefPos = 60; bbd.iButtonWidth = 0; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[7]; bbd.ptszTooltip = LPGENT("Edit user notes"); CB_AddButton(0, (LPARAM)&bbd); //chat buttons bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISDUMMYBUTTON; bbd.dwButtonID = 1; bbd.pszModuleName = "tb_splitter"; bbd.dwDefPos = 31; bbd.iButtonWidth = 22; bbd.hIcon = 0; bbd.pszTooltip = 0; CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISDUMMYBUTTON; bbd.dwButtonID = 2; bbd.dwDefPos = 22; bbd.iButtonWidth = 22; bbd.hIcon = 0; bbd.pszTooltip = 0; CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISDUMMYBUTTON; bbd.dwButtonID = 3; bbd.dwDefPos = 71; bbd.iButtonWidth = 22; bbd.hIcon = 0; bbd.pszTooltip = 0; CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON | BBBF_ISPUSHBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_BKGCOLOR; bbd.pszModuleName = "Tabsrmm"; bbd.dwDefPos = 81; bbd.iButtonWidth = 22; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[16]; bbd.ptszTooltip = LPGENT("Change background color"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_SHOWNICKLIST; bbd.dwDefPos = 22; bbd.iButtonWidth = 22; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[19]; bbd.ptszTooltip = LPGENT("Toggle nick list"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_FILTER; bbd.dwDefPos = 24; bbd.iButtonWidth = 22; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[18]; bbd.ptszTooltip = LPGENT("Event filter - right click to setup, left click to activate/deactivate"); CB_AddButton(0, (LPARAM)&bbd); bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID; bbd.dwButtonID = IDC_CHANMGR; bbd.dwDefPos = 33; bbd.iButtonWidth = 22; bbd.hIcon = PluginConfig.g_buttonBarIconHandles[17]; bbd.ptszTooltip = LPGENT("Channel manager"); CB_AddButton(0, (LPARAM)&bbd); BB_RegisterSeparators(); }
int FacebookProto::OnBuildStatusMenu(WPARAM, LPARAM) { char text[200]; mir_strncpy(text, m_szModuleName, 100); char *tDest = text + strlen(text); CLISTMENUITEM mi = { sizeof(mi) }; mi.pszService = text; HGENMENU hRoot = MO_GetProtoRootMenu(m_szModuleName); if (hRoot == NULL) { CLISTMENUITEM miRoot = { sizeof(miRoot) }; miRoot.popupPosition = 500085000; miRoot.hParentMenu = HGENMENU_ROOT; miRoot.flags = CMIF_ROOTPOPUP | CMIF_TCHAR | CMIF_KEEPUNTRANSLATED | (this->isOnline() ? 0 : CMIF_GRAYED); miRoot.icolibItem = GetIconHandle("facebook"); miRoot.ptszName = m_tszUserName; hRoot = m_hMenuRoot = Menu_AddProtoMenuItem(&miRoot); } else { if (m_hMenuRoot) CallService(MO_REMOVEMENUITEM, (WPARAM)m_hMenuRoot, 0); m_hMenuRoot = NULL; } mi.flags = CMIF_CHILDPOPUP | (this->isOnline() ? 0 : CMIF_GRAYED); mi.position = 201001; mi.hParentMenu = hRoot; //CreateProtoService(m_szModuleName,"/Mind",&FacebookProto::OnMind,this); strcpy(tDest, "/Mind"); mi.pszName = LPGEN("Share status..."); mi.icolibItem = GetIconHandle("mind"); m_hStatusMind = Menu_AddProtoMenuItem(&mi); //CreateProtoService("/VisitProfile",&FacebookProto::VisitProfile); strcpy(tDest, "/VisitProfile"); mi.flags = CMIF_CHILDPOPUP; mi.pszName = LPGEN("Visit profile"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_URL); // TODO RM: remember and properly free in destructor? /*m_hStatusMind = */Menu_AddProtoMenuItem(&mi); //CreateProtoService("/VisitNotifications", &FacebookProto::VisitNotifications); strcpy(tDest, "/VisitNotifications"); mi.pszName = LPGEN("Visit notifications"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_URL); Menu_AddProtoMenuItem(&mi); // Services... mi.pszName = LPGEN("Services..."); strcpy(tDest, "/Services"); mi.flags = CMIF_CHILDPOPUP | (this->isOnline() ? 0 : CMIF_GRAYED); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_HELP); m_hMenuServicesRoot = Menu_AddProtoMenuItem(&mi); CreateProtoService("/RefreshBuddyList", &FacebookProto::RefreshBuddyList); strcpy(tDest, "/RefreshBuddyList"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Refresh Buddy List"); mi.pszPopupName = LPGEN("Services"); mi.icolibItem = GetIconHandle("friendship"); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); CreateProtoService("/CheckFriendRequests", &FacebookProto::CheckFriendRequests); strcpy(tDest, "/CheckFriendRequests"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Check Friends Requests"); mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); CreateProtoService("/CheckNewsfeeds", &FacebookProto::CheckNewsfeeds); strcpy(tDest, "/CheckNewsfeeds"); mi.flags = CMIF_ROOTHANDLE; mi.pszName = LPGEN("Check Newsfeeds"); mi.pszPopupName = LPGEN("Services"); mi.icolibItem = GetIconHandle("newsfeed"); mi.hParentMenu = m_hMenuServicesRoot; Menu_AddProtoMenuItem(&mi); return 0; }
void InitContactMenus() { HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PrebuildContactMenu); CLISTMENUITEM mi = { sizeof(mi) }; mi.position = -2000006000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_EVENT_URL); mi.pszName = LPGEN("Visit profile"); mi.pszService = "FacebookProto/VisitProfile"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::VisitProfile>); g_hContactMenuVisitProfile = Menu_AddContactMenuItem(&mi); mi.position = -2000006001; mi.icolibItem = GetIconHandle("friendship"); mi.pszName = LPGEN("Visit friendship details"); mi.pszService = "FacebookProto/VisitFriendship"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::VisitFriendship>); g_hContactMenuVisitFriendship = Menu_AddContactMenuItem(&mi); mi.position = -2000006002; mi.icolibItem = GetIconHandle("conversation"); mi.pszName = LPGEN("Visit conversation"); mi.pszService = "FacebookProto/VisitConversation"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::VisitConversation>); g_hContactMenuVisitConversation = Menu_AddContactMenuItem(&mi); mi.position = -2000006003; mi.icolibItem = GetIconHandle("mind"); mi.pszName = LPGEN("Share status..."); mi.pszService = "FacebookProto/Mind"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::OnMind>); g_hContactMenuPostStatus = Menu_AddContactMenuItem(&mi); mi.position = -2000006004; mi.icolibItem = GetIconHandle("poke"); mi.pszName = LPGEN("Poke"); mi.pszService = "FacebookProto/Poke"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::Poke>); g_hContactMenuPoke = Menu_AddContactMenuItem(&mi); mi.position = -2000006010; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REVOKE); mi.pszName = LPGEN("Cancel friendship"); mi.pszService = "FacebookProto/CancelFriendship"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::CancelFriendship>); g_hContactMenuAuthRevoke = Menu_AddContactMenuItem(&mi); mi.position = -2000006011; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REVOKE); mi.pszName = LPGEN("Cancel friendship request"); mi.pszService = "FacebookProto/CancelFriendshipRequest"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::OnCancelFriendshipRequest>); g_hContactMenuAuthCancel = Menu_AddContactMenuItem(&mi); mi.position = -2000006012; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); mi.pszName = LPGEN("Request friendship"); mi.pszService = "FacebookProto/RequestFriendship"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::RequestFriendship>); g_hContactMenuAuthAsk = Menu_AddContactMenuItem(&mi); mi.position = -2000006013; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_GRANT); mi.pszName = LPGEN("Approve friendship"); mi.pszService = "FacebookProto/ApproveFriendship"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::ApproveFriendship>); g_hContactMenuAuthGrant = Menu_AddContactMenuItem(&mi); mi.position = -2000006014; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REVOKE); mi.pszName = LPGEN("Deny friendship request"); mi.pszService = "FacebookProto/DenyFriendship"; CreateServiceFunction(mi.pszService, GlobalService<&FacebookProto::DenyFriendship>); g_hContactMenuAuthDeny = Menu_AddContactMenuItem(&mi); }
void g_MenuInit(void) { /////////////// // Contact menu HookEvent(ME_CLIST_PREBUILDCONTACTMENU, IcqPrebuildContactMenu); // Contact menu initialization char str[MAXMODULELABELLENGTH], *pszDest = str + 3; strcpy(str, "ICQ"); CLISTMENUITEM mi = { sizeof(mi) }; mi.pszService = str; // "Request authorization" strcpy(pszDest, MS_REQ_AUTH); CreateServiceFunction(str, IcqMenuHandleRequestAuth ); mi.pszName = LPGEN("Request authorization"); mi.position = 1000030000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REQUEST); g_hContactMenuItems[ICMI_AUTH_REQUEST] = Menu_AddContactMenuItem(&mi); // "Grant authorization" strcpy(pszDest, MS_GRANT_AUTH); CreateServiceFunction(str, IcqMenuHandleGrantAuth); mi.pszName = LPGEN("Grant authorization"); mi.position = 1000029999; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_GRANT); g_hContactMenuItems[ICMI_AUTH_GRANT] = Menu_AddContactMenuItem(&mi); // "Revoke authorization" strcpy(pszDest, MS_REVOKE_AUTH); CreateServiceFunction(str, IcqMenuHandleRevokeAuth); mi.pszName = LPGEN("Revoke authorization"); mi.position = 1000029998; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_REVOKE); g_hContactMenuItems[ICMI_AUTH_REVOKE] = Menu_AddContactMenuItem(&mi); // "Add to server list" strcpy(pszDest, MS_ICQ_ADDSERVCONTACT); CreateServiceFunction(str, IcqMenuHandleAddServContact); mi.pszName = LPGEN("Add to server list"); mi.position = -2049999999; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_AUTH_ADD); g_hContactMenuItems[ICMI_ADD_TO_SERVLIST] = Menu_AddContactMenuItem(&mi); // "Show custom status details" strcpy(pszDest, MS_XSTATUS_SHOWDETAILS); CreateServiceFunction(str, IcqMenuHandleXStatusDetails); mi.pszName = LPGEN("Show custom status details"); mi.position = -2000004999; mi.icolibItem = 0; g_hContactMenuItems[ICMI_XSTATUS_DETAILS] = Menu_AddContactMenuItem(&mi); // "Open ICQ profile" strcpy(pszDest, MS_OPEN_PROFILE); CreateServiceFunction(str, IcqMenuHandleOpenProfile); mi.pszName = LPGEN("Open ICQ profile"); mi.position = 1000029997; g_hContactMenuItems[ICMI_OPEN_PROFILE] = Menu_AddContactMenuItem(&mi); }
void SetupIcoLib() { iconList[0].hIcolib = LoadSkinnedIconHandle(SKINICON_OTHER_HISTORY); Icon_Register(hInst, LPGEN("Avatar History"), iconList+1, SIZEOF(iconList)-1); IcoLibUpdateMenus(); }
void GroupMenus_Init(void) { TMenuParam tmp; OptParam op; HICON hicon; BOOL needFree; hicon=CLUI_LoadIconFromExternalFile("clisticons.dll",2,TRUE,TRUE,"NewGroup","Contact List","New Group",-IDI_NEWGROUP2,&needFree); NewGroupIconidx=hicon?ImageList_AddIcon(hCListImages,hicon ):-1; if (needFree) DestroyIcon_protect(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(MS_CLIST_ADDGROUPMENUITEM,AddGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVEGROUPMENUITEM,RemoveGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDGROUP,BuildGroupMenu); ModernHookEvent(ME_CLIST_PREBUILDGROUPMENU,OnBuildGroupMenu); InitSubGroupMenus(); //Group menu memset(&tmp,0,sizeof(tmp)); tmp.cbSize=sizeof(tmp); tmp.CheckService=NULL; tmp.ExecService="CLISTMENUSGroup/ExecService"; tmp.name=LPGEN("GroupMenu"); hGroupMenuObject=(HANDLE)CallService(MO_CREATENEWMENUOBJECT,(WPARAM)0,(LPARAM)&tmp); op.Handle=hGroupMenuObject; op.Setting=OPT_USERDEFINEDITEMS; op.Value=TRUE; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_FREE_SERVICE; op.Value=(INT_PTR)"CLISTMENUSGroup/FreeOwnerDataGroupMenu"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_ONADD_SERVICE; op.Value=(INT_PTR)"CLISTMENUSGroup/GroupMenuonAddService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); { //add exit command to menu CLISTMENUITEM mi; GroupMenuParam gmp; memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1900000; mi.pszService="CloseAction"; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_EXIT); mi.pszName=LPGEN("E&xit"); mi.flags=CMIF_ICONFROMICOLIB; AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=500; mi.pszService=MS_CLIST_SHOWHIDE; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_SHOWHIDE); mi.pszName=LPGEN("&Hide/Show"); mi.flags=CMIF_ICONFROMICOLIB; hHideShowMainMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=200000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_FINDUSER); mi.pszService="FindAdd/FindAddCommand"; mi.pszName=LPGEN("&Find/Add Contacts..."); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=300000; mi.pszService=""; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_MAINMENU); // eternity #004 mi.pszName=LPGEN("&Main Menu"); mi.flags=CMIF_ICONFROMICOLIB; // eternity #004 hGroupMainMenuItemProxy=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); // eternity #004 memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=300100; mi.pszService=""; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_STATUS); // eternity #004 mi.pszName=LPGEN("&Status"); mi.flags=CMIF_ICONFROMICOLIB; // eternity #004 hGroupStatusMenuItemProxy=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); // eternity #004 memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=400000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService="Options/OptionsCommand"; mi.pszName=LPGEN("&Options..."); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=500000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService="Help/AboutCommand"; mi.pszName=LPGEN("&About"); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100000; mi.hIcon=ske_ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService=MS_CLIST_GROUPCREATE; mi.pszName=LPGEN("&New Group"); hNewGroupMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); 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=(HANDLE)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=(HANDLE)AddGroupMenuItem((WPARAM)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=(HANDLE)AddGroupMenuItem((WPARAM)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=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); ModernHookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged); //MS_CLIST_GROUPCREATE }; }
void InitSubGroupMenus(void) { TMenuParam tmp; OptParam op; CreateServiceFunction("CLISTMENUSSubGroup/ExecService",SubGroupMenuExecService); CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu",FreeOwnerDataSubGroupMenu); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuonAddService",SubGroupMenuonAddService); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuCheckService",SubGroupMenuCheckService); CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy",GroupMenuExecProxy); //CreateServiceFunction("CLISTMENUSSubGroup/HideSubGroupsHelper",HideSubGroupsHelper); //CreateServiceFunction("CLISTMENUSSubGroup/UseSubGroupsHelper",UseSubGroupsHelper); //CreateServiceFunction("CLISTMENUSSubGroup/HideOfflineRootHelper",HideOfflineRootHelper); CreateServiceFunction(MS_CLIST_ADDSUBGROUPMENUITEM,AddSubGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVESUBGROUPMENUITEM,RemoveSubGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDSUBGROUP,BuildSubGroupMenu); ModernHookEvent(ME_CLIST_PREBUILDSUBGROUPMENU,OnBuildSubGroupMenu); //SubGroup menu memset(&tmp,0,sizeof(tmp)); tmp.cbSize=sizeof(tmp); tmp.CheckService=NULL; tmp.ExecService="CLISTMENUSSubGroup/ExecService"; tmp.name=LPGEN("SubGroupMenu"); hSubGroupMenuObject=(HANDLE)CallService(MO_CREATENEWMENUOBJECT,(WPARAM)0,(LPARAM)&tmp); op.Handle=hSubGroupMenuObject; op.Setting=OPT_USERDEFINEDITEMS; op.Value=TRUE; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_FREE_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_ONADD_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/SubGroupMenuonAddService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_CHECK_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/SubGroupMenuCheckService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); { //add exit command to menu CLISTMENUITEM mi; GroupMenuParam gmp; memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1000; mi.hIcon=ske_ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&New SubGroup"); gmp.lParam=0;gmp.wParam=POPUP_NEWSUBGROUP; hNewSubGroupMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1001; mi.hIcon=NULL; mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Hide Offline Users in here"); gmp.lParam=0; gmp.wParam=POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1002; mi.hIcon=NULL; mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Show Offline Users in here"); gmp.lParam=0; gmp.wParam=POPUP_GROUPSHOWOFFLINE; hShowOfflineUsersHereMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=900001; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_RENAME); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Rename Group"); gmp.lParam=0;gmp.wParam=POPUP_RENAMEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=900002; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Delete Group"); gmp.lParam=0;gmp.wParam=POPUP_DELETEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); //MS_CLIST_SubGroupCREATE }; }
void InitGroupMenus(void) { 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.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_EXIT); 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.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_SHOWHIDE); mi.pszName = LPGEN("&Hide/show"); hHideShowMainMenuItem = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 200000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_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.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_MAINMENU); mi.pszName = LPGEN("&Main menu"); hGroupMainMenuItemProxy = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 300100; mi.pszService = ""; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_STATUS); mi.pszName = LPGEN("&Status"); hGroupStatusMenuItemProxy = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 390100; mi.pszService = ""; mi.icolibItem = iconItem[1].hIcolib; mi.pszName = LPGEN("Appearance"); hAppearanceMenuItemProxy = (HGENMENU)AddGroupMenuItem(0, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 400000; mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_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.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService = "CLN/About"; mi.pszName = LPGEN("&About the contact list..."); AddGroupMenuItem(0, (LPARAM)&mi); memset(&mi, 0, sizeof(mi)); mi.cbSize = sizeof(mi); mi.position = 100000; mi.icolibItem = iconItem[0].hIcolib; mi.pszService = "CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName = LPGEN("&New group"); gmp.lParam = 0; gmp.wParam = POPUP_NEWGROUP; hNewGroupMenuItem = (HGENMENU)AddGroupMenuItem((WPARAM)&gmp, (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); } }