Mercurial > pidgin
diff src/protocols/gg/gg.c @ 9030:7ab20f829190
[gaim-migrate @ 9806]
Siege updated the code for creating right-click menu's for
buddies, chats, groups, etc. It uses more stuff from the blist
API and less stuff from multi.h. It also combines the code
for right-click menus for chats, buddies, etc. (all types of
blist nodes). So PRPLs and plugins can easily add right-click
menu options to anything in the buddy list in a clean way.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 23 May 2004 17:27:45 +0000 |
parents | 67421e0dc497 |
children | 7a8aa87164ae |
line wrap: on
line diff
--- a/src/protocols/gg/gg.c Sun May 23 08:06:38 2004 +0000 +++ b/src/protocols/gg/gg.c Sun May 23 17:27:45 2004 +0000 @@ -1,6 +1,6 @@ /* * gaim - Gadu-Gadu Protocol Plugin - * $Id: gg.c 9791 2004-05-22 17:33:38Z lschiere $ + * $Id: gg.c 9806 2004-05-23 17:27:45Z thekingant $ * * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> * @@ -26,8 +26,8 @@ #include "account.h" #include "accountopt.h" +#include "blist.h" #include "debug.h" -#include "multi.h" #include "notify.h" #include "proxy.h" #include "prpl.h" @@ -244,27 +244,35 @@ } /* Enhance these functions, more options and such stuff */ -static GList *agg_buddy_menu(GaimConnection *gc, const char *who) +static GList *agg_buddy_menu(GaimBuddy *buddy) { GList *m = NULL; - struct proto_buddy_menu *pbm; - GaimBuddy *b = gaim_find_buddy(gc->account, who); + GaimBlistNodeAction *act; + static char buf[AGG_BUF_LEN]; + g_snprintf(buf, sizeof(buf), _("Status: %s"), get_away_text(buddy->uc)); - if (!b) { - return m; - } - - pbm = g_new0(struct proto_buddy_menu, 1); - g_snprintf(buf, sizeof(buf), _("Status: %s"), get_away_text(b->uc)); - pbm->label = buf; - pbm->callback = NULL; - pbm->gc = gc; - m = g_list_append(m, pbm); + /* um... this seems silly. since in this pass, I'm only converting + over the menu building, I'm not going to mess with it though */ + /* XXX: shouldn't this be in the tooltip instead? */ + act = gaim_blist_node_action_new(buf, NULL, NULL); + m = g_list_append(m, act); return m; } + +static GList * +agg_blist_node_menu(GaimBlistNode *node) +{ + if(GAIM_BLIST_NODE_IS_BUDDY(node)) { + return agg_buddy_menu((GaimBuddy *) node); + } else { + return NULL; + } +} + + static void agg_load_buddy_list(GaimConnection *gc, char *buddylist) { struct agg_data *gd = (struct agg_data *)gc->proto_data; @@ -1530,7 +1538,7 @@ NULL, NULL, agg_away_states, - agg_buddy_menu, + agg_blist_node_menu, NULL, agg_login, agg_close, @@ -1575,7 +1583,6 @@ NULL, NULL, NULL, - NULL }; static GaimPluginInfo info = @@ -1587,7 +1594,7 @@ NULL, /**< dependencies */ GAIM_PRIORITY_DEFAULT, /**< priority */ - "prpl-gg", /**< id */ + "prpl-gg", /**< id */ "Gadu-Gadu", /**< name */ VERSION, /**< version */ /** summary */ @@ -1613,9 +1620,9 @@ GaimAccountOption *option; option = gaim_account_option_string_new(_("Nick"), "nick", - "Gadu-Gadu User"); + "Gadu-Gadu User"); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, - option); + option); my_protocol = plugin; }