Exemplo n.º 1
0
void InitMirOTRMenu(void)
{
	WNDCLASS wc = { 0 };
	wc.hInstance = hInst;
	wc.lpfnWndProc = PopupMenuWndProc;
	wc.lpszClassName = _T("MirOTRPopupMenuProcessor");
	RegisterClass(&wc);
	hDummyPaintWin = CreateWindowEx(0, _T("MirOTRPopupMenuProcessor"), NULL, 0, 0, 0, 1, 1, 0, 0, hInst, 0);

	CreateServiceFunction("MirOTRMenuExecService", MirOTRMenuExecService);
	CreateServiceFunction("MirOTRMenuCheckService", MirOTRMenuCheckService);

	// menu object
	CreateServiceFunction("MIROTRMENUS/FreeOwnerDataMirOTRMenu", FreeOwnerDataMirOTRMenu);
	CreateServiceFunction("MIROTRMENUS/OnAddMenuItemMirOTRMenu", OnAddMenuItemMirOTRMenu);

	hMirOTRMenuObject = Menu_AddObject("MirOTRMenu", LPGEN("MirOTR menu"), "MirOTRMenuCheckService", "MirOTRMenuExecService");
	Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_FREE_SERVICE, "MIROTRMENUS/FreeOwnerDataMirOTRMenu");
	Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_ONADD_SERVICE, "MIROTRMENUS/OnAddMenuItemMirOTRMenu");

	// menu items
	CMenuItem mi;
	mi.flags = CMIF_DISABLED | CMIF_TCHAR;
	mi.name.t = LPGENT("OTR Status");
	mi.position = 0;
	hStatusInfoItem = AddMirOTRMenuItem(&mi, NULL);

	mi.flags = CMIF_TCHAR | CMIF_NOTPRIVATE | CMIF_NOTUNVERIFIED;
	mi.name.t = LANG_MENU_START;
	mi.position = 100001;
	mi.hIcolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED);
	AddMirOTRMenuItem(&mi, MS_OTR_MENUSTART);

	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED;
	mi.name.t = LANG_MENU_REFRESH;
	mi.position = 100002;
	mi.hIcolibItem = IcoLib_GetIconHandle(ICON_FINISHED);
	AddMirOTRMenuItem(&mi, MS_OTR_MENUREFRESH);

	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE;
	mi.name.t = LANG_MENU_STOP;
	mi.position = 100003;
	mi.hIcolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE);
	AddMirOTRMenuItem(&mi, MS_OTR_MENUSTOP);

	mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED;
	mi.name.t = LANG_MENU_VERIFY;
	mi.position = 200001;
	mi.hIcolibItem = IcoLib_GetIconHandle(ICON_PRIVATE);
	AddMirOTRMenuItem(&mi, MS_OTR_MENUVERIFY);

	mi.flags = CMIF_TCHAR | CMIF_CHECKED;
	mi.name.t = LANG_MENU_TOGGLEHTML;
	mi.position = 300001;
	mi.hIcolibItem = 0;
	hHTMLConvMenuItem = AddMirOTRMenuItem(&mi, MS_OTR_MENUTOGGLEHTML);
}
Exemplo n.º 2
0
void InitFramesMenus(void)
{
	CreateServiceFunction("FrameMenuExecService", FrameMenuExecService);
	CreateServiceFunction("FrameMenuCheckService", FrameMenuCheckService);
	CreateServiceFunction("FrameMenuFreeService", FreeOwnerDataFrameMenu);

	CreateServiceFunction("CList/AddContextFrameMenuItem", AddContextFrameMenuItem);
	CreateServiceFunction(MS_CLIST_MENUBUILDFRAMECONTEXT, BuildContextFrameMenu);
	CreateServiceFunction(MS_CLIST_FRAMEMENUNOTIFY, ContextFrameMenuNotify);
	hPreBuildFrameMenuEvent = CreateHookableEvent(ME_CLIST_PREBUILDFRAMEMENU);

	// frame menu object
	hFrameMenuObject = Menu_AddObject("FrameMenu", LPGEN("Frame menu"), "FrameMenuCheckService", "FrameMenuExecService");
	Menu_ConfigureObject(hFrameMenuObject, MCO_OPT_FREE_SERVICE, "FrameMenuFreeService");
}
Exemplo n.º 3
0
void InitTrayMenus(void)
{
	CreateServiceFunction("CLISTMENUSTRAY/ExecService", TrayMenuExecService);
	CreateServiceFunction("CLISTMENUSTRAY/FreeOwnerDataTrayMenu", FreeOwnerDataTrayMenu);
	CreateServiceFunction("CLISTMENUSTRAY/TrayMenuOnAddService", TrayMenuOnAddService);

	hEventPreBuildTrayMenu = CreateHookableEvent(ME_CLIST_PREBUILDTRAYMENU);

	// Tray menu
	hTrayMenuObject = Menu_AddObject("TrayMenu", LPGEN("Tray menu"), 0, "CLISTMENUSTRAY/ExecService");
	Menu_ConfigureObject(hTrayMenuObject, MCO_OPT_USERDEFINEDITEMS, TRUE);
	Menu_ConfigureObject(hTrayMenuObject, MCO_OPT_FREE_SERVICE, "CLISTMENUSTRAY/FreeOwnerDataTrayMenu");
	Menu_ConfigureObject(hTrayMenuObject, MCO_OPT_ONADD_SERVICE, "CLISTMENUSTRAY/TrayMenuOnAddService");

	// add exit command to menu
	CMenuItem mi;

	SET_UID(mi, 0x6c202553, 0xb4d5, 0x403c, 0xa6, 0x82, 0x2, 0xd8, 0x2b, 0x42, 0xba, 0x9e);
	mi.flags = CMIF_DEFAULT;
	mi.position = 100000;
	mi.pszService = MS_CLIST_SHOWHIDE;
	mi.name.a = LPGEN("&Hide/show");
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_SHOWHIDE);
	Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0x10e9b2f0, 0xeef2, 0x4684, 0xa7, 0xa7, 0xde, 0x7f, 0x2a, 0xb3, 0x5b, 0x30);
	mi.flags = 0;
	mi.position = 200000;
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_FINDUSER);
	mi.pszService = "FindAdd/FindAddCommand";
	mi.name.a = LPGEN("&Find/add contacts...");
	Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0xb6d861bc, 0x9c3f, 0x40d9, 0xaf, 0x58, 0x53, 0x9f, 0x22, 0xe4, 0x77, 0x98);
	mi.position = 300000;
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MAINMENU); // eternity #004
	mi.pszService = "MainMenu/Command";
	mi.name.a = LPGEN("&Main menu");
	hTrayMainMenuItemProxy = Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0xbafb2db6, 0x8994, 0x40f5, 0x8f, 0x34, 0x4, 0xde, 0x67, 0x8e, 0x6e, 0x70);
	mi.position = 300100;
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_STATUS); // eternity #004
	mi.pszService = "GlobalStatus/Command";
	mi.name.a = LPGEN("&Status");
	hTrayStatusMenuItemProxy = Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0x75107441, 0xa2ef, 0x420d, 0x85, 0xd5, 0xf7, 0x40, 0x69, 0xf0, 0xa1, 0x42);
	mi.position = 400000;
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_OPTIONS);
	mi.pszService = "Options/OptionsCommand";
	mi.name.a = LPGEN("&Options...");
	Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0x8cecc833, 0x81ad, 0x499f, 0xb0, 0x44, 0x1, 0x5, 0xf7, 0xe1, 0xe6, 0x7);
	mi.position = 500000;
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_MIRANDA);
	mi.pszService = "Help/AboutCommand";
	mi.name.a = LPGEN("&About");
	Menu_AddTrayMenuItem(&mi);

	SET_UID(mi, 0xdfde6fc7, 0xaef7, 0x40db, 0xb4, 0x15, 0xf4, 0x6d, 0xa8, 0xc4, 0x41, 0x71);
	mi.position = 900000;
	mi.pszService = "CloseAction";
	mi.name.a = LPGEN("E&xit");
	mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_EXIT);
	Menu_AddTrayMenuItem(&mi);
}
Exemplo n.º 4
0
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);
	}
}
Exemplo n.º 5
0
void g_MenuInit(void)
{
    hStatusMenuInit = CreateHookableEvent(ME_JABBER_MENUINIT);

    HookEvent(ME_CLIST_PREBUILDCONTACTMENU, JabberPrebuildContactMenu);

    CreateServiceFunction("Jabber/MenuChoose", JabberMenuChooseService);

    hChooserMenu = Menu_AddObject("JabberAccountChooser", LPGEN("Jabber account chooser"), 0, "Jabber/MenuChoose");
    {
        CMenuItem mi;
        mi.name.a = "Cancel";
        mi.position = 9999999;
        mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_DELETE);
        Menu_AddItem(hChooserMenu, &mi, NULL);
    }

    //////////////////////////////////////////////////////////////////////////////////////
    // Contact menu initialization

    CMenuItem mi;
    mi.flags = CMIF_UNMOVABLE;

    // "Request authorization"
    SET_UID(mi, 0x36375a1f, 0xc142, 0x4d6e, 0xa6, 0x57, 0xe4, 0x76, 0x5d, 0xbc, 0x59, 0x8e);
    mi.name.a = LPGEN("Request authorization");
    mi.position = -2000001000;
    mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_REQUEST);
    mi.pszService = "Jabber/ReqAuth";
    g_hMenuRequestAuth = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuHandleRequestAuth);

    // "Grant authorization"
    SET_UID(mi, 0x4c90452a, 0x869a, 0x4a81, 0xaf, 0xa8, 0x28, 0x34, 0xaf, 0x2b, 0x6b, 0x30);
    mi.pszService = "Jabber/GrantAuth";
    mi.name.a = LPGEN("Grant authorization");
    mi.position = -2000001001;
    mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_GRANT);
    g_hMenuGrantAuth = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuHandleGrantAuth);

    // Revoke auth
    SET_UID(mi, 0x619efdcb, 0x99c0, 0x44a8, 0xbf, 0x28, 0xc3, 0xe0, 0x2f, 0xb3, 0x7e, 0x77);
    mi.pszService = "Jabber/RevokeAuth";
    mi.name.a = LPGEN("Revoke authorization");
    mi.position = -2000001002;
    mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_REVOKE);
    g_hMenuRevokeAuth = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuRevokeAuth);

    // "Convert Chat/Contact"
    SET_UID(mi, 0xa98894ec, 0xbaa6, 0x4e1e, 0x8d, 0x75, 0x72, 0xc, 0xae, 0x25, 0xd8, 0x87);
    mi.pszService = "Jabber/ConvertChatContact";
    mi.name.a = LPGEN("Convert");
    mi.position = -1999901004;
    mi.hIcolibItem = g_GetIconHandle(IDI_USER2ROOM);
    g_hMenuConvert = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuConvertChatContact);

    // "Add to roster"
    SET_UID(mi, 0x3928ba10, 0x69bc, 0x4ec9, 0x96, 0x48, 0xa4, 0x1b, 0xbe, 0x58, 0x4a, 0x7e);
    mi.pszService = "Jabber/AddToRoster";
    mi.name.a = LPGEN("Add to roster");
    mi.position = -1999901005;
    mi.hIcolibItem = Skin_GetIconHandle(SKINICON_AUTH_ADD);
    g_hMenuRosterAdd = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuRosterAdd);

    // "Add to Bookmarks"
    SET_UID(mi, 0x7d06d00b, 0x3a3e, 0x4d65, 0xac, 0xc5, 0x63, 0xe2, 0x60, 0xbe, 0xc6, 0x6);
    mi.pszService = "Jabber/AddToBookmarks";
    mi.name.a = LPGEN("Add to Bookmarks");
    mi.position = -1999901006;
    mi.hIcolibItem = g_GetIconHandle(IDI_BOOKMARKS);
    g_hMenuAddBookmark = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuBookmarkAdd);

    // Login/logout
    SET_UID(mi, 0x7674d540, 0x2638, 0x4958, 0x99, 0xda, 0x8, 0x3f, 0xad, 0x66, 0x8f, 0xed);
    mi.pszService = "Jabber/TransportLogin";
    mi.name.a = LPGEN("Login/logout");
    mi.position = -1999901007;
    mi.hIcolibItem = g_GetIconHandle(IDI_LOGIN);
    g_hMenuLogin = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuTransportLogin);

    // Retrieve nicks
    SET_UID(mi, 0x6adf70d9, 0x6e92, 0x4a4f, 0x90, 0x71, 0x67, 0xa7, 0xaa, 0x1a, 0x19, 0x7a);
    mi.pszService = "Jabber/TransportGetNicks";
    mi.name.a = LPGEN("Resolve nicks");
    mi.position = -1999901008;
    mi.hIcolibItem = g_GetIconHandle(IDI_REFRESH);
    g_hMenuRefresh = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuTransportResolve);

    // Run Commands
    SET_UID(mi, 0x25546e26, 0xc82, 0x4715, 0xb8, 0xca, 0xe5, 0xf7, 0x2a, 0x58, 0x9, 0x2);
    mi.pszService = "Jabber/RunCommands";
    mi.name.a = LPGEN("Commands");
    mi.position = -1999901009;
    mi.hIcolibItem = g_GetIconHandle(IDI_COMMAND);
    g_hMenuCommands = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberContactMenuRunCommands);

    // Send Note
    SET_UID(mi, 0xf4b0cc51, 0xab9, 0x4cf0, 0x96, 0xaa, 0x22, 0xa0, 0x33, 0x9b, 0x56, 0xc5);
    mi.pszService = "Jabber/SendNote";
    mi.name.a = LPGEN("Send Note");
    mi.position = -1999901010;
    mi.hIcolibItem = g_GetIconHandle(IDI_SEND_NOTE);
    g_hMenuSendNote = Menu_AddContactMenuItem(&mi);
    CreateServiceFunction(mi.pszService, JabberMenuSendNote);

    // Direct Presence
    SET_UID(mi,  0x89803943, 0xa87e, 0x4ae9, 0xbf, 0x79, 0xe3, 0xf3, 0xd6, 0x86, 0xf8, 0x3d);
    mi.pszService = "Jabber/DirectPresenceDummySvc";
    mi.name.a = LPGEN("Send Presence");
    mi.position = -1999901011;
    mi.hIcolibItem = g_GetIconHandle(IDI_NOTES);
    g_hMenuDirectPresence[0] = Menu_AddContactMenuItem(&mi);

    UNSET_UID(mi);
    mi.flags |= CMIF_TCHAR;
    mi.root = g_hMenuDirectPresence[0];
    for (int i = 0; i < _countof(PresenceModeArray); i++) {
        char buf[] = "Jabber/DirectPresenceX";
        buf[_countof(buf) - 2] = '0' + i;
        mi.pszService = buf;
        mi.name.t = pcli->pfnGetStatusModeDescription(PresenceModeArray[i].mode, 0);
        mi.position = -1999901000;
        mi.hIcolibItem = Skin_LoadIcon(PresenceModeArray[i].icon);
        g_hMenuDirectPresence[i + 1] = Menu_AddContactMenuItem(&mi);
        CreateServiceFunctionParam(mi.pszService, JabberMenuHandleDirectPresence, PresenceModeArray[i].mode);
    }

    mi.flags &= ~(CMIF_TCHAR);
    mi.root = NULL;

    // Resource selector
    SET_UID(mi, 0x32a7bb9d, 0x4d9, 0x49b3, 0xac, 0x8f, 0x83, 0xb5, 0x6b, 0xff, 0x4f, 0x5);
    mi.pszService = "Jabber/ResourceSelectorDummySvc";
    mi.name.a = LPGEN("Jabber Resource");
    mi.position = -1999901011;
    mi.hIcolibItem = g_GetIconHandle(IDI_JABBER);
    g_hMenuResourcesRoot = Menu_AddContactMenuItem(&mi);

    SET_UID(mi, 0xb8059d69, 0xa927, 0x4d68, 0xb4, 0x88, 0xf7, 0x32, 0x85, 0x50, 0xde, 0x6f);
    mi.pszService = "Jabber/UseResource_last";
    mi.name.a = LPGEN("Last Active");
    mi.position = -1999901000;
    mi.root = g_hMenuResourcesRoot;
    mi.hIcolibItem = g_GetIconHandle(IDI_JABBER);
    g_hMenuResourcesActive = Menu_AddContactMenuItem(&mi);
    CreateServiceFunctionParam(mi.pszService, JabberMenuHandleResource, MENUITEM_LASTSEEN);

    SET_UID(mi,0xf44812ea, 0x4f37, 0x4a57, 0x86, 0xa8, 0x40, 0x51, 0x22, 0x9f, 0xd5, 0xa8);
    mi.pszService = "Jabber/UseResource_server";
    mi.name.a = LPGEN("Server's Choice");
    mi.position = -1999901000;
    mi.hIcolibItem = g_GetIconHandle(IDI_NODE_SERVER);
    g_hMenuResourcesServer = Menu_AddContactMenuItem(&mi);
    CreateServiceFunctionParam(mi.pszService, JabberMenuHandleResource, MENUITEM_SERVER);
}
Exemplo n.º 6
0
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);
	}
}