void InitGroupMenus(void) { CreateServiceFunction("CLISTMENUSGroup/GroupMenuOnAddService", GroupMenuOnAddService); InitSubGroupMenus(); CMenuItem mi; SET_UID(mi, 0xe386678a, 0x5aee, 0x4bfa, 0xa8, 0x23, 0xd, 0xa0, 0x11, 0x99, 0xb1, 0x98); mi.position = 500; mi.pszService = MS_CLIST_SHOWHIDE; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_SHOWHIDE); mi.name.a = LPGEN("&Hide/show"); Menu_AddGroupMenuItem(&mi); SET_UID(mi, 0xb0f29663, 0x68b6, 0x494c, 0xaf, 0xab, 0xf6, 0x86, 0x45, 0xb8, 0xdb, 0xde); mi.position = 200000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_FINDUSER); mi.pszService = "FindAdd/FindAddCommand"; mi.name.a = LPGEN("&Find/add contacts..."); Menu_AddGroupMenuItem(&mi); SET_UID(mi, 0xff6855b4, 0x8c50, 0x43b7, 0x97, 0x51, 0xc1, 0x28, 0xa3, 0x10, 0x2b, 0x86); mi.position = 300000; mi.pszService = ""; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MAINMENU); mi.name.a = LPGEN("&Main menu"); hGroupMainMenuItemProxy = Menu_AddGroupMenuItem(&mi); SET_UID(mi, 0xba91af46, 0x34e5, 0x4f3a, 0x88, 0x1c, 0xe7, 0xa3, 0x53, 0x58, 0x19, 0xde); mi.position = 300100; mi.pszService = ""; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_STATUS); mi.name.a = LPGEN("&Status"); hGroupStatusMenuItemProxy = Menu_AddGroupMenuItem(&mi); SET_UID(mi, 0xc2895531, 0x98e9, 0x40bc, 0x9b, 0x8e, 0xfb, 0x33, 0xe8, 0xab, 0xcc, 0xef); mi.position = 400000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService = "Options/OptionsCommand"; mi.name.a = LPGEN("&Options..."); Menu_AddGroupMenuItem(&mi); SET_UID(mi, 0x2221068a, 0x285d, 0x490c, 0xb1, 0x95, 0xff, 0x49, 0x75, 0xbc, 0xe4, 0x59); mi.position = 1000000; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService = "Help/AboutCommand"; mi.name.a = LPGEN("&About"); Menu_AddGroupMenuItem(&mi); }
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; SET_UID(mi, 0x2f75bc72, 0xd836, 0x4922, 0x9f, 0xe, 0xed, 0x9e, 0xe7, 0x2b, 0x84, 0xf0); 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); SET_UID(mi, 0xe6269658, 0x69, 0x4094, 0x9b, 0x35, 0x4e, 0x80, 0x29, 0x26, 0xf, 0x8e); 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); SET_UID(mi, 0xeded7371, 0xf6e6, 0x48c3, 0x8c, 0x9e, 0x62, 0xc1, 0xd5, 0xcb, 0x51, 0xbc); mi.position = 500002; mi.pszService = "CLISTMENUSGroup/HideOfflineRootHelper"; mi.name.a = LPGEN("Hide &offline users out here"); hHideOfflineUsersOutHereMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, HideOfflineRootHelper); SET_UID(mi, 0x4c17b9cf, 0x513a, 0x41d8, 0x8d, 0x2b, 0x89, 0x44, 0x81, 0x14, 0x0, 0x91); mi.position = 500003; mi.pszService = "CLISTMENUSGroup/HideGroupsHelper"; mi.name.a = LPGEN("Hide &empty groups"); hHideEmptyGroupsMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, HideGroupsHelper); SET_UID(mi, 0xfcbdbbb1, 0xa553, 0x49ac, 0xa5, 0xdf, 0xb4, 0x81, 0x38, 0xf, 0xa0, 0xc7); mi.position = 500004; mi.pszService = "CLISTMENUSGroup/UseGroupsHelper"; mi.name.a = LPGEN("Disable &groups"); hDisableGroupsMenuItem = Menu_AddGroupMenuItem(&mi); CreateServiceFunction(mi.pszService, UseGroupsHelper); SET_UID(mi, 0xfffb8733, 0xa3e4, 0x4566, 0xa6, 0x6e, 0x4c, 0x4c, 0x7c, 0xe9, 0x56, 0x99); 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; SET_UID(mi, 0xd208f1d2, 0x7220, 0x4d37, 0xb6, 0xe4, 0xd5, 0x4a, 0xe8, 0xa3, 0xf4, 0x53); 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); SET_UID(mi, 0xd85f5ff0, 0x12ca, 0x464d, 0x86, 0x51, 0x53, 0x36, 0x9f, 0x1d, 0x80, 0x45); mi.position = 1001; mi.hIcolibItem = 0; mi.name.a = LPGEN("&Hide offline users in here"); gmp.wParam = POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem = Menu_AddSubGroupMenuItem(&mi, &gmp); SET_UID(mi, 0xf0953dd, 0x5c31, 0x48a4, 0xb4, 0x16, 0x89, 0x5, 0x97, 0xd0, 0x75, 0x3e); mi.position = 900001; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_RENAME); mi.name.a = LPGEN("&Rename group"); gmp.wParam = POPUP_RENAMEGROUP; Menu_AddSubGroupMenuItem(&mi, &gmp); SET_UID(mi, 0xb0d63cda, 0xa743, 0x4cfa, 0xa6, 0x2d, 0x50, 0xc0, 0x90, 0xe7, 0x6a, 0xc4); 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 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); }
/** * This function rebuilds the clist context menu (clist main groupmenu). If user selected to * cascade menus, a root menu item is created which holds the popup for all the other items. * Note: since miranda 0.8 genmenu is part of core (we don't need to check for). * * @param none * * @return nothing **/ void RebuildGroup() { int flag = 0; BYTE item = 0; HGENMENU mhRoot = NULL; HGENMENU mhExIm = NULL; static HGENMENU hMenuItem[3] = { NULL, NULL, NULL }; // load options flag = db_get_b(NULL, MODNAME, SET_MI_GROUP, MCAS_NOTINITIATED); if (flag == MCAS_NOTINITIATED) { flag = MCAS_EXIMPORT | TRUE; db_set_b(NULL, MODNAME, SET_MI_GROUP, flag); } // delete all MenuItems and set all bytes 0 to avoid problems RemoveMenuItems(hMenuItem, _countof(hMenuItem)); // create service name main (prevent to generate {(Null)/Ex-/Import Group} in db) and set pointer to end it char text[200]; mir_strcpy(text, "UserInfo"); CMenuItem mi; mi.pszService = text; switch (flag) { case 3: //cascade off mhRoot = mhExIm = NULL; hMenuItem[item++] = NULL; break; case 5: //cascade all SET_UID(mi, 0xfefe20db, 0x431f, 0x4fef, 0x9d, 0xa6, 0x70, 0xcd, 0x25, 0xf1, 0x2f, 0x1d); mi.position = 250000; mi.hIcolibItem = IcoLib_GetIcon(ICO_COMMON_MAIN); mi.name.a = MODULELONGNAME; mhRoot = Menu_AddGroupMenuItem(&mi); hMenuItem[item++] = mhRoot; mhExIm = mhRoot; break; case 9: //cascade Ex/Import SET_UID(mi, 0x3ec4da1, 0x8a1a, 0x4734, 0xba, 0x99, 0x7, 0x9c, 0x2, 0x46, 0xff, 0xec); mi.position = 250100; mi.hIcolibItem = IcoLib_GetIcon(ICO_BTN_EXIMPORT); mi.name.a = LPGEN("Export/import contact"); mhExIm = Menu_AddGroupMenuItem(&mi); hMenuItem[item++] = mhExIm; mhRoot = NULL; break; default: //disable Menue return; } // VCard's Ex/Import menuitems mi.root = mhExIm; // Export SET_UID(mi, 0x9a0d81ec, 0x6795, 0x421a, 0xb2, 0x79, 0x41, 0xbd, 0xde, 0x29, 0x3b, 0xa4); mi.pszService = MS_USERINFO_VCARD_EXPORTALL; mi.name.a = LPGEN("Export all contacts"); mi.position = 250200; mi.hIcolibItem = IcoLib_GetIcon(ICO_BTN_EXPORT); hMenuItem[item++] = Menu_AddGroupMenuItem(&mi); // Import SET_UID(mi, 0xd6d98c8f, 0x5cdf, 0x4138, 0x88, 0x6c, 0x31, 0x1a, 0x5a, 0x9, 0x56, 0xbb); mi.pszService = MS_USERINFO_VCARD_IMPORTALL; mi.name.a = LPGEN("Import all contacts"); mi.position = 250300; mi.hIcolibItem = IcoLib_GetIcon(ICO_BTN_IMPORT); hMenuItem[item++] = Menu_AddGroupMenuItem(&mi); }
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); } }