Mercurial > pidgin
diff finch/gntblist.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | f5e193735392 |
children |
line wrap: on
line diff
--- a/finch/gntblist.c Sat Jun 02 02:30:13 2012 +0000 +++ b/finch/gntblist.c Sat Jun 02 02:30:49 2012 +0000 @@ -50,6 +50,7 @@ #include "gntmenu.h" #include "gntmenuitem.h" #include "gntmenuitemcheck.h" +#include "gntmenuutil.h" #include "gntpounce.h" #include "gntstyle.h" #include "gnttree.h" @@ -169,7 +170,7 @@ if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { PurpleBuddy *buddy = (PurpleBuddy*)node; - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (!purple_buddy_get_contact(buddy)) return FALSE; /* When a new buddy is added and show-offline is set */ if (PURPLE_BUDDY_IS_ONLINE(buddy)) @@ -329,11 +330,11 @@ static FinchBlistNode * create_finch_blist_node(PurpleBlistNode *node, gpointer row) { - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (!fnode) { fnode = g_new0(FinchBlistNode, 1); fnode->signed_timer = 0; - FINCH_SET_DATA(node, fnode); + purple_blist_node_set_ui_data(node, fnode); } fnode->row = row; return fnode; @@ -342,13 +343,13 @@ static void reset_blist_node_ui_data(PurpleBlistNode *node) { - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (fnode == NULL) return; if (fnode->signed_timer) purple_timeout_remove(fnode->signed_timer); g_free(fnode); - FINCH_SET_DATA(node, NULL); + purple_blist_node_set_ui_data(node, NULL); } static int @@ -381,7 +382,7 @@ get_blist_node_flag(PurpleBlistNode *node) { GntTextFormatFlags flag = 0; - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (ggblist->tagged && g_list_find(ggblist->tagged, node)) flag |= GNT_TEXT_FLAG_BOLD; @@ -390,7 +391,7 @@ flag |= GNT_TEXT_FLAG_BLINK; else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); - fnode = FINCH_GET_DATA(node); + fnode = purple_blist_node_get_ui_data(node); if (fnode && fnode->signed_timer) flag |= GNT_TEXT_FLAG_BLINK; } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { @@ -406,7 +407,7 @@ node = purple_blist_node_get_sibling_next(node)) { PurpleBlistNode *pnode; pnode = purple_contact_get_priority_buddy((PurpleContact*)node); - fnode = FINCH_GET_DATA(node); + fnode = purple_blist_node_get_ui_data(node); if (fnode && fnode->signed_timer) { flag |= GNT_TEXT_FLAG_BLINK; break; @@ -433,7 +434,7 @@ PurpleBlistNode *node; for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)contact)); node; node = purple_blist_node_get_sibling_next(node)) { - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) || (fnode && fnode->signed_timer)) return TRUE; @@ -465,7 +466,7 @@ static void add_node(PurpleBlistNode *node, FinchBlist *ggblist) { - if (FINCH_GET_DATA(node)) + if (purple_blist_node_get_ui_data(node)) return; if (!ggblist->manager->can_add_node(node)) @@ -502,7 +503,7 @@ FinchBlist *ggblist = FINCH_GET_DATA(list); PurpleBlistNode *parent; - if (ggblist == NULL || FINCH_GET_DATA(node) == NULL) + if (ggblist == NULL || purple_blist_node_get_ui_data(node) == NULL) return; if (PURPLE_BLIST_NODE_IS_GROUP(node) && ggblist->new_group) { @@ -543,7 +544,7 @@ if (ggblist->window == NULL) return; - if (FINCH_GET_DATA(node)!= NULL) { + if (purple_blist_node_get_ui_data(node)!= NULL) { gnt_tree_change_text(GNT_TREE(ggblist->tree), node, 0, get_display_name(node)); gnt_tree_sort_row(GNT_TREE(ggblist->tree), node); @@ -560,7 +561,7 @@ } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { add_node(node, FINCH_GET_DATA(list)); } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { - if (FINCH_GET_DATA(node)== NULL) { + if (purple_blist_node_get_ui_data(node)== NULL) { /* The core seems to expect the UI to add the buddies. */ for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node)) add_node(node, FINCH_GET_DATA(list)); @@ -663,7 +664,7 @@ purple_blist_add_buddy(buddy, NULL, grp, NULL); } - purple_account_add_buddy_with_invite(account, buddy, invite); + purple_account_add_buddy(account, buddy, invite); } static void @@ -839,7 +840,7 @@ /* Select the group */ if (ggblist->tree) { - FinchBlistNode *fnode = FINCH_GET_DATA((PurpleBlistNode*)grp); + FinchBlistNode *fnode = purple_blist_node_get_ui_data((PurpleBlistNode*)grp); if (!fnode) add_node((PurpleBlistNode*)grp, ggblist); gnt_tree_set_selected(GNT_TREE(ggblist->tree), grp); @@ -887,7 +888,7 @@ { gpointer parent; PurpleBlistNode *node = (PurpleBlistNode *)group; - if (FINCH_GET_DATA(node)) + if (purple_blist_node_get_ui_data(node)) return; parent = ggblist->manager->find_parent((PurpleBlistNode*)group); create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group, @@ -960,7 +961,7 @@ { gpointer parent; PurpleBlistNode *node = (PurpleBlistNode *)chat; - if (FINCH_GET_DATA(node)) + if (purple_blist_node_get_ui_data(node)) return; if (!purple_account_is_connected(purple_chat_get_account(chat))) return; @@ -979,7 +980,7 @@ PurpleBlistNode *node = (PurpleBlistNode*)contact; const char *name; - if (FINCH_GET_DATA(node)) + if (purple_blist_node_get_ui_data(node)) return; name = get_display_name(node); @@ -1002,7 +1003,7 @@ PurpleBlistNode *node = (PurpleBlistNode *)buddy; PurpleContact *contact; - if (FINCH_GET_DATA(node)) + if (purple_blist_node_get_ui_data(node)) return; contact = purple_buddy_get_contact(buddy); @@ -1060,7 +1061,7 @@ purple_buddy_get_account(buddy), purple_buddy_get_name(buddy)); } else { - FinchConv *ggconv = FINCH_GET_DATA(conv); + FinchConv *ggconv = FINCH_CONV(conv); gnt_window_present(ggconv->window); } finch_conversation_set_active(conv); @@ -1072,43 +1073,6 @@ } static void -context_menu_callback(GntMenuItem *item, gpointer data) -{ - PurpleMenuAction *action = data; - PurpleBlistNode *node = ggblist->cnode; - if (action) { - void (*callback)(PurpleBlistNode *, gpointer); - callback = (void (*)(PurpleBlistNode *, gpointer))action->callback; - if (callback) - callback(node, action->data); - else - return; - } -} - -static void -gnt_append_menu_action(GntMenu *menu, PurpleMenuAction *action, gpointer parent) -{ - GList *list; - GntMenuItem *item; - - if (action == NULL) - return; - - item = gnt_menuitem_new(action->label); - if (action->callback) - gnt_menuitem_set_callback(GNT_MENU_ITEM(item), context_menu_callback, action); - gnt_menu_add_item(menu, GNT_MENU_ITEM(item)); - - if (action->children) { - GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP); - gnt_menuitem_set_submenu(item, GNT_MENU(sub)); - for (list = action->children; list; list = list->next) - gnt_append_menu_action(GNT_MENU(sub), list->data, action); - } -} - -static void append_proto_menu(GntMenu *menu, PurpleConnection *gc, PurpleBlistNode *node) { GList *list; @@ -1123,10 +1087,8 @@ PurpleMenuAction *act = (PurpleMenuAction *) list->data; if (!act) continue; - act->data = node; - gnt_append_menu_action(menu, act, NULL); - g_signal_connect_swapped(G_OBJECT(menu), "destroy", - G_CALLBACK(purple_menu_action_free), act); + purple_menu_action_set_data(act, node); + gnt_append_menu_action(menu, act, node); } } @@ -1136,8 +1098,6 @@ { PurpleMenuAction *action = purple_menu_action_new(label, callback, data, NULL); gnt_append_menu_action(menu, action, NULL); - g_signal_connect_swapped(G_OBJECT(menu), "destroy", - G_CALLBACK(purple_menu_action_free), action); } static void @@ -1216,7 +1176,7 @@ autojoin_toggled(GntMenuItem *item, gpointer data) { PurpleMenuAction *action = data; - purple_blist_node_set_bool(action->data, "gnt-autojoin", + purple_blist_node_set_bool(purple_menu_action_get_data(action), "gnt-autojoin", gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item))); } @@ -1224,7 +1184,8 @@ create_chat_menu(GntMenu *menu, PurpleChat *chat) { PurpleMenuAction *action = purple_menu_action_new(_("Auto-join"), NULL, chat, NULL); - GntMenuItem *check = gnt_menuitem_check_new(action->label); + GntMenuItem *check = gnt_menuitem_check_new( + purple_menu_action_get_label(action)); gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(check), purple_blist_node_get_bool((PurpleBlistNode*)chat, "gnt-autojoin")); gnt_menu_add_item(menu, check); @@ -1268,7 +1229,7 @@ { PurpleNotifyUserInfo *info = purple_notify_user_info_new(); gpointer uihandle; - purple_notify_user_info_add_pair(info, _("Information"), _("Retrieving...")); + purple_notify_user_info_add_pair_plaintext(info, _("Information"), _("Retrieving...")); uihandle = purple_notify_userinfo(conn, name, info, NULL, NULL); purple_notify_user_info_destroy(info); @@ -1375,9 +1336,7 @@ for (iter = purple_blist_node_get_extended_menu(node); iter; iter = g_list_delete_link(iter, iter)) { - gnt_append_menu_action(menu, iter->data, NULL); - g_signal_connect_swapped(G_OBJECT(menu), "destroy", - G_CALLBACK(purple_menu_action_free), iter->data); + gnt_append_menu_action(menu, iter->data, node); } } @@ -1557,7 +1516,7 @@ if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { PurpleContact *c = (PurpleContact*)node; name = purple_contact_get_alias(c); - if (c->totalsize > 1) + if (purple_contact_get_contact_size(c, TRUE) > 1) sec = _("Removing this contact will also remove all the buddies in the contact"); } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { name = purple_buddy_get_name((PurpleBuddy*)node); @@ -1783,15 +1742,13 @@ presence = purple_buddy_get_presence(buddy); if (!full || g_utf8_collate(purple_buddy_get_name(buddy), alias)) { - char *esc = g_markup_escape_text(alias, -1); - purple_notify_user_info_add_pair(user_info, _("Nickname"), esc); - g_free(esc); + purple_notify_user_info_add_pair_plaintext(user_info, _("Nickname"), alias); } tmp = g_strdup_printf("%s (%s)", purple_account_get_username(account), purple_account_get_protocol_name(account)); - purple_notify_user_info_add_pair(user_info, _("Account"), tmp); + purple_notify_user_info_add_pair_plaintext(user_info, _("Account"), tmp); g_free(tmp); prpl = purple_find_prpl(purple_account_get_protocol_id(account)); @@ -1806,7 +1763,7 @@ time_t idle = purple_presence_get_idle_time(pre); if (idle > 0) { char *st = purple_str_seconds_to_string(time(NULL) - idle); - purple_notify_user_info_add_pair(user_info, _("Idle"), st); + purple_notify_user_info_add_pair_plaintext(user_info, _("Idle"), st); g_free(st); } } @@ -2543,7 +2500,7 @@ buddy_recent_signed_on_off(gpointer data) { PurpleBlistNode *node = data; - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); purple_timeout_remove(fnode->signed_timer); fnode->signed_timer = 0; @@ -2563,7 +2520,7 @@ buddy_signed_on_off_cb(gpointer data) { PurpleBlistNode *node = data; - FinchBlistNode *fnode = FINCH_GET_DATA(node); + FinchBlistNode *fnode = purple_blist_node_get_ui_data(node); if (!ggblist || !fnode) return FALSE;