Mercurial > pidgin
changeset 3314:52db87ab4083
[gaim-migrate @ 3332]
Added "Remove From Roster" (proto-specific edit buddy menu) option.
committer: Tailor Script <tailor@pidgin.im>
author | Jim Seymour <jseymour> |
---|---|
date | Sat, 15 Jun 2002 20:22:28 +0000 |
parents | b0d5ce77f7dd |
children | c685bb6109c7 |
files | src/protocols/jabber/jabber.c |
diffstat | 1 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/protocols/jabber/jabber.c Sat Jun 15 20:21:01 2002 +0000 +++ b/src/protocols/jabber/jabber.c Sat Jun 15 20:22:28 2002 +0000 @@ -2373,6 +2373,27 @@ xmlnode_free(x); } +/* + * Remove a buddy item from the roster entirely + */ +static void jabber_remove_buddy_roster_item(struct gaim_connection *gc, char *name) +{ + xmlnode x, y; + char *realwho; + gjconn gjc = ((struct jabber_data *)gc->proto_data)->gjc; + + if(!name || (realwho = get_realwho(gjc, name, FALSE, NULL)) == NULL) + return; + + x = jutil_iqnew(JPACKET__SET, NS_ROSTER); + y = xmlnode_insert_tag(xmlnode_get_tag(x, "query"), "item"); + xmlnode_put_attrib(y, "jid", realwho); + xmlnode_put_attrib(y, "subscription", "remove"); + gjab_send(((struct jabber_data *)gc->proto_data)->gjc, x); + g_free(realwho); + xmlnode_free(x); +} + static char **jabber_list_icon(int uc) { switch (uc) { @@ -2843,6 +2864,22 @@ return m; } +/* + * Jabber protocol-specific "edit buddy menu" item(s) + */ +static GList *jabber_edit_buddy_menu(struct gaim_connection *gc, char *who) { + GList *m = NULL; + struct proto_buddy_menu *pbm; + + pbm = g_new0(struct proto_buddy_menu, 1); + pbm->label = _("Remove From Roster"); + pbm->callback = jabber_remove_buddy_roster_item; + pbm->gc = gc; + m = g_list_append(m, pbm); + + return m; +} + static GList *jabber_away_states(struct gaim_connection *gc) { GList *m = NULL; @@ -3732,6 +3769,7 @@ ret->actions = jabber_actions; ret->do_action = jabber_do_action; ret->buddy_menu = jabber_buddy_menu; + ret->edit_buddy_menu = jabber_edit_buddy_menu; ret->user_opts = jabber_user_opts; ret->login = jabber_login; ret->close = jabber_close;