comparison pidgin/gtkblist.c @ 20337:91f1465b34e9

applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df through 03251b6e4e7a7bf736ba0023dfe31a49e89d0f42
author Luke Schierer <lschiere@pidgin.im>
date Sun, 21 Oct 2007 04:29:12 +0000
parents 233c423d40d3
children d938cdb2339a
comparison
equal deleted inserted replaced
20336:b93e7be3847b 20337:91f1465b34e9
5012 } 5012 }
5013 5013
5014 static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node) 5014 static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node)
5015 { 5015 {
5016 PurplePresence *presence; 5016 PurplePresence *presence;
5017 GdkPixbuf *status, *avatar, *emblem; 5017 GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
5018 char *mark; 5018 char *mark;
5019 char *idle = NULL; 5019 char *idle = NULL;
5020 gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded; 5020 gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
5021 gboolean selected = (gtkblist->selected_node == node); 5021 gboolean selected = (gtkblist->selected_node == node);
5022 gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); 5022 gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
5023 presence = purple_buddy_get_presence(buddy); 5023 presence = purple_buddy_get_presence(buddy);
5024 5024
5025 if (editing_blist) 5025 if (editing_blist)
5026 return; 5026 return;
5027 5027
5028 status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy, 5028 status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy,
5029 PIDGIN_STATUS_ICON_SMALL); 5029 PIDGIN_STATUS_ICON_SMALL);
5030 5030
5031 /* Speed it up if we don't want buddy icons. */ 5031 /* Speed it up if we don't want buddy icons. */
5032 if(biglist) 5032 if(biglist)
5068 dim_grey(), idle); 5068 dim_grey(), idle);
5069 g_free(idle); 5069 g_free(idle);
5070 idle = i2; 5070 idle = i2;
5071 } 5071 }
5072 } 5072 }
5073
5074 prpl_icon = pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL);
5073 5075
5074 gtk_tree_store_set(gtkblist->treemodel, iter, 5076 gtk_tree_store_set(gtkblist->treemodel, iter,
5075 STATUS_ICON_COLUMN, status, 5077 STATUS_ICON_COLUMN, status,
5076 STATUS_ICON_VISIBLE_COLUMN, TRUE, 5078 STATUS_ICON_VISIBLE_COLUMN, TRUE,
5077 NAME_COLUMN, mark, 5079 NAME_COLUMN, mark,
5079 IDLE_VISIBLE_COLUMN, !biglist && idle, 5081 IDLE_VISIBLE_COLUMN, !biglist && idle,
5080 BUDDY_ICON_COLUMN, avatar, 5082 BUDDY_ICON_COLUMN, avatar,
5081 BUDDY_ICON_VISIBLE_COLUMN, biglist, 5083 BUDDY_ICON_VISIBLE_COLUMN, biglist,
5082 EMBLEM_COLUMN, emblem, 5084 EMBLEM_COLUMN, emblem,
5083 EMBLEM_VISIBLE_COLUMN, (emblem != NULL), 5085 EMBLEM_VISIBLE_COLUMN, (emblem != NULL),
5084 PROTOCOL_ICON_COLUMN, pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL), 5086 PROTOCOL_ICON_COLUMN, prpl_icon,
5085 PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"), 5087 PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
5086 BGCOLOR_COLUMN, NULL, 5088 BGCOLOR_COLUMN, NULL,
5087 CONTACT_EXPANDER_COLUMN, NULL, 5089 CONTACT_EXPANDER_COLUMN, NULL,
5088 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded, 5090 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded,
5089 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, 5091 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
5095 g_object_unref(emblem); 5097 g_object_unref(emblem);
5096 if(status) 5098 if(status)
5097 g_object_unref(status); 5099 g_object_unref(status);
5098 if(avatar) 5100 if(avatar)
5099 g_object_unref(avatar); 5101 g_object_unref(avatar);
5102 if(prpl_icon)
5103 g_object_unref(prpl_icon);
5100 } 5104 }
5101 5105
5102 /* This is a variation on the original gtk_blist_update_contact. Here we 5106 /* This is a variation on the original gtk_blist_update_contact. Here we
5103 can know in advance which buddy has changed so we can just update that */ 5107 can know in advance which buddy has changed so we can just update that */
5104 static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node) 5108 static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node)
5215 5219
5216 chat = (PurpleChat*)node; 5220 chat = (PurpleChat*)node;
5217 5221
5218 if(purple_account_is_connected(chat->account)) { 5222 if(purple_account_is_connected(chat->account)) {
5219 GtkTreeIter iter; 5223 GtkTreeIter iter;
5220 GdkPixbuf *status; 5224 GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
5221 GdkPixbuf *avatar;
5222 GdkPixbuf *emblem;
5223 char *mark; 5225 char *mark;
5224 gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); 5226 gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
5225 const char *name = purple_chat_get_name(chat); 5227 const char *name = purple_chat_get_name(chat);
5226 PurpleConversation *conv = 5228 PurpleConversation *conv =
5227 purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, chat->account); 5229 purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, chat->account);
5244 if (hidden) { 5246 if (hidden) {
5245 char *bold = g_strdup_printf("<b>%s</b>", mark); 5247 char *bold = g_strdup_printf("<b>%s</b>", mark);
5246 g_free(mark); 5248 g_free(mark);
5247 mark = bold; 5249 mark = bold;
5248 } 5250 }
5251
5252 prpl_icon = pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL);
5249 5253
5250 gtk_tree_store_set(gtkblist->treemodel, &iter, 5254 gtk_tree_store_set(gtkblist->treemodel, &iter,
5251 STATUS_ICON_COLUMN, status, 5255 STATUS_ICON_COLUMN, status,
5252 STATUS_ICON_VISIBLE_COLUMN, TRUE, 5256 STATUS_ICON_VISIBLE_COLUMN, TRUE,
5253 BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar, 5257 BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar,
5254 BUDDY_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"), 5258 BUDDY_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"),
5255 EMBLEM_COLUMN, emblem, 5259 EMBLEM_COLUMN, emblem,
5256 EMBLEM_VISIBLE_COLUMN, emblem != NULL, 5260 EMBLEM_VISIBLE_COLUMN, emblem != NULL,
5257 PROTOCOL_ICON_COLUMN, pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL), 5261 PROTOCOL_ICON_COLUMN, prpl_icon,
5258 PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"), 5262 PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
5259 NAME_COLUMN, mark, 5263 NAME_COLUMN, mark,
5260 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, 5264 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
5261 -1); 5265 -1);
5262 5266
5265 g_object_unref(emblem); 5269 g_object_unref(emblem);
5266 if(status) 5270 if(status)
5267 g_object_unref(status); 5271 g_object_unref(status);
5268 if(avatar) 5272 if(avatar)
5269 g_object_unref(avatar); 5273 g_object_unref(avatar);
5274 if(prpl_icon)
5275 g_object_unref(prpl_icon);
5270 } else { 5276 } else {
5271 pidgin_blist_hide_node(list, node, TRUE); 5277 pidgin_blist_hide_node(list, node, TRUE);
5272 } 5278 }
5273 } 5279 }
5274 5280