pidgin/gtkconv.c

changeset 41093
13d97dcd0e67
parent 41089
a7d2978df0b6
child 41096
8883d8d17678
equal deleted inserted replaced
41092:1599afdbe1d7 41093:13d97dcd0e67
2440 } 2440 }
2441 2441
2442 static const char * 2442 static const char *
2443 get_chat_user_status_icon(PurpleChatConversation *chat, const char *name, PurpleChatUserFlags flags) 2443 get_chat_user_status_icon(PurpleChatConversation *chat, const char *name, PurpleChatUserFlags flags)
2444 { 2444 {
2445 const char *image = NULL; 2445 const gchar *icon_name = NULL;
2446 2446
2447 if (flags & PURPLE_CHAT_USER_FOUNDER) { 2447 if (flags & PURPLE_CHAT_USER_FOUNDER) {
2448 image = PIDGIN_STOCK_STATUS_FOUNDER; 2448 icon_name = "pidgin-status-founder";
2449 } else if (flags & PURPLE_CHAT_USER_OP) { 2449 } else if (flags & PURPLE_CHAT_USER_OP) {
2450 image = PIDGIN_STOCK_STATUS_OPERATOR; 2450 icon_name = "pidgin-status-operator";
2451 } else if (flags & PURPLE_CHAT_USER_HALFOP) { 2451 } else if (flags & PURPLE_CHAT_USER_HALFOP) {
2452 image = PIDGIN_STOCK_STATUS_HALFOP; 2452 icon_name = "pidgin-status-halfop";
2453 } else if (flags & PURPLE_CHAT_USER_VOICE) { 2453 } else if (flags & PURPLE_CHAT_USER_VOICE) {
2454 image = PIDGIN_STOCK_STATUS_VOICE; 2454 icon_name = "pidgin-status-voice";
2455 } else if ((!flags) && purple_chat_conversation_is_ignored_user(chat, name)) { 2455 } else if ((!flags) && purple_chat_conversation_is_ignored_user(chat, name)) {
2456 image = PIDGIN_STOCK_STATUS_IGNORED; 2456 icon_name = "pidgin-status-ignored";
2457 } else { 2457 }
2458 return NULL; 2458 return icon_name;
2459 }
2460 return image;
2461 } 2459 }
2462 2460
2463 static void 2461 static void
2464 add_chat_user_common(PurpleChatConversation *chat, PurpleChatUser *cb, const char *old_name) 2462 add_chat_user_common(PurpleChatConversation *chat, PurpleChatUser *cb, const char *old_name)
2465 { 2463 {
2468 PidginChatPane *gtkchat; 2466 PidginChatPane *gtkchat;
2469 PurpleConnection *gc; 2467 PurpleConnection *gc;
2470 GtkTreeModel *tm; 2468 GtkTreeModel *tm;
2471 GtkListStore *ls; 2469 GtkListStore *ls;
2472 GtkTreePath *newpath; 2470 GtkTreePath *newpath;
2473 const char *stock; 2471 const gchar *icon_name;
2474 GtkTreeIter iter; 2472 GtkTreeIter iter;
2475 gboolean is_buddy; 2473 gboolean is_buddy;
2476 const gchar *name, *alias; 2474 const gchar *name, *alias;
2477 gchar *tmp, *alias_key; 2475 gchar *tmp, *alias_key;
2478 PurpleChatUserFlags flags; 2476 PurpleChatUserFlags flags;
2491 return; 2489 return;
2492 2490
2493 tm = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); 2491 tm = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
2494 ls = GTK_LIST_STORE(tm); 2492 ls = GTK_LIST_STORE(tm);
2495 2493
2496 stock = get_chat_user_status_icon(chat, name, flags); 2494 icon_name = get_chat_user_status_icon(chat, name, flags);
2497 2495
2498 is_buddy = purple_chat_user_is_buddy(cb); 2496 is_buddy = purple_chat_user_is_buddy(cb);
2499 2497
2500 tmp = g_utf8_casefold(alias, -1); 2498 tmp = g_utf8_casefold(alias, -1);
2501 alias_key = g_utf8_collate_key(tmp, -1); 2499 alias_key = g_utf8_collate_key(tmp, -1);
2510 * It *might* be faster to search the gtk_list_store and set row accurately, 2508 * It *might* be faster to search the gtk_list_store and set row accurately,
2511 * but no one in #gtk+ seems to know anything about it either. 2509 * but no one in #gtk+ seems to know anything about it either.
2512 * Inserting in the "wrong" location has no visible ill effects. - F.P. 2510 * Inserting in the "wrong" location has no visible ill effects. - F.P.
2513 */ 2511 */
2514 -1, /* "row" */ 2512 -1, /* "row" */
2515 CHAT_USERS_ICON_STOCK_COLUMN, stock, 2513 CHAT_USERS_ICON_NAME_COLUMN, icon_name,
2516 CHAT_USERS_ALIAS_COLUMN, alias, 2514 CHAT_USERS_ALIAS_COLUMN, alias,
2517 CHAT_USERS_ALIAS_KEY_COLUMN, alias_key, 2515 CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
2518 CHAT_USERS_NAME_COLUMN, name, 2516 CHAT_USERS_NAME_COLUMN, name,
2519 CHAT_USERS_FLAGS_COLUMN, flags, 2517 CHAT_USERS_FLAGS_COLUMN, flags,
2520 CHAT_USERS_COLOR_COLUMN, &color, 2518 CHAT_USERS_COLOR_COLUMN, &color,
2918 rend = gtk_cell_renderer_pixbuf_new(); 2916 rend = gtk_cell_renderer_pixbuf_new();
2919 g_object_set(G_OBJECT(rend), 2917 g_object_set(G_OBJECT(rend),
2920 "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), 2918 "stock-size", gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL),
2921 NULL); 2919 NULL);
2922 col = gtk_tree_view_column_new_with_attributes(NULL, rend, 2920 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
2923 "stock-id", CHAT_USERS_ICON_STOCK_COLUMN, NULL); 2921 "icon-name", CHAT_USERS_ICON_NAME_COLUMN, NULL);
2924 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); 2922 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
2925 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); 2923 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
2926 ul_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width"); 2924 ul_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width");
2927 gtk_widget_set_size_request(lbox, ul_width, -1); 2925 gtk_widget_set_size_request(lbox, ul_width, -1);
2928 2926

mercurial