Mercurial > pidgin.yaz
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 |