src/gtkblist.c

changeset 10351
f7305a0baa8d
parent 10325
9bb530214bae
child 10352
802e7ab5b838
equal deleted inserted replaced
10350:a72a43212626 10351:f7305a0baa8d
2844 #else 2844 #else
2845 statustext = tmp; 2845 statustext = tmp;
2846 #endif 2846 #endif
2847 } 2847 }
2848 2848
2849 if (gaim_presence_is_idle(presence) && 2849 if (gaim_presence_is_idle(presence)) {
2850 gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time"))
2851 {
2852 time_t idle_secs = gaim_presence_get_idle_time(presence); 2850 time_t idle_secs = gaim_presence_get_idle_time(presence);
2853 2851
2854 if (idle_secs > 0) 2852 if (idle_secs > 0) {
2855 {
2856 int ihrs, imin; 2853 int ihrs, imin;
2857 2854
2858 time(&t); 2855 time(&t);
2859 ihrs = (t - idle_secs) / 3600; 2856 ihrs = (t - idle_secs) / 3600;
2860 imin = ((t - idle_secs) / 60) % 60; 2857 imin = ((t - idle_secs) / 60) % 60;
2868 idletime = g_strdup(_("Idle ")); 2865 idletime = g_strdup(_("Idle "));
2869 } 2866 }
2870 2867
2871 warning_level = gaim_presence_get_warning_level(presence); 2868 warning_level = gaim_presence_get_warning_level(presence);
2872 2869
2873 if (warning_level > 0 && 2870 if (warning_level > 0) {
2874 gaim_prefs_get_bool("/gaim/gtk/blist/show_warning_level"))
2875 {
2876 warning = g_strdup_printf(_("Warned (%d%%) "), warning_level); 2871 warning = g_strdup_printf(_("Warned (%d%%) "), warning_level);
2877 } 2872 }
2878 2873
2879 if(!GAIM_BUDDY_IS_ONLINE(b) && !statustext) 2874 if(!GAIM_BUDDY_IS_ONLINE(b) && !statustext)
2880 statustext = g_strdup(_("Offline ")); 2875 statustext = g_strdup(_("Offline "));
3046 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) { 3041 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) {
3047 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, TRUE); 3042 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, TRUE);
3048 gtk_tree_view_column_set_visible(gtkblist->idle_column, FALSE); 3043 gtk_tree_view_column_set_visible(gtkblist->idle_column, FALSE);
3049 gtk_tree_view_column_set_visible(gtkblist->warning_column, FALSE); 3044 gtk_tree_view_column_set_visible(gtkblist->warning_column, FALSE);
3050 } else { 3045 } else {
3051 gtk_tree_view_column_set_visible(gtkblist->idle_column, 3046 gtk_tree_view_column_set_visible(gtkblist->idle_column, TRUE);
3052 gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time")); 3047 gtk_tree_view_column_set_visible(gtkblist->warning_column, TRUE);
3053 gtk_tree_view_column_set_visible(gtkblist->warning_column,
3054 gaim_prefs_get_bool("/gaim/gtk/blist/show_warning_level"));
3055 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, FALSE); 3048 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, FALSE);
3056 } 3049 }
3057 } 3050 }
3058 3051
3059 enum {DRAG_BUDDY, DRAG_ROW, DRAG_VCARD, DRAG_TEXT, DRAG_URI,NUM_TARGETS}; 3052 enum {DRAG_BUDDY, DRAG_ROW, DRAG_VCARD, DRAG_TEXT, DRAG_URI,NUM_TARGETS};
3208 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END); 3201 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END);
3209 #endif 3202 #endif
3210 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column); 3203 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
3211 3204
3212 rend = gtk_cell_renderer_text_new(); 3205 rend = gtk_cell_renderer_text_new();
3206 gtkblist->idle_column = gtk_tree_view_column_new_with_attributes("Idle", rend, "markup", IDLE_COLUMN, NULL);
3207 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->idle_column);
3208 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
3209
3210 rend = gtk_cell_renderer_text_new();
3213 gtkblist->warning_column = gtk_tree_view_column_new_with_attributes("Warning", rend, "markup", WARNING_COLUMN, NULL); 3211 gtkblist->warning_column = gtk_tree_view_column_new_with_attributes("Warning", rend, "markup", WARNING_COLUMN, NULL);
3214 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->warning_column); 3212 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->warning_column);
3215 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
3216
3217 rend = gtk_cell_renderer_text_new();
3218 gtkblist->idle_column = gtk_tree_view_column_new_with_attributes("Idle", rend, "markup", IDLE_COLUMN, NULL);
3219 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->idle_column);
3220 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); 3213 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
3221 3214
3222 rend = gtk_cell_renderer_pixbuf_new(); 3215 rend = gtk_cell_renderer_pixbuf_new();
3223 gtkblist->buddy_icon_column = gtk_tree_view_column_new_with_attributes("Buddy Icon", rend, "pixbuf", BUDDY_ICON_COLUMN, NULL); 3216 gtkblist->buddy_icon_column = gtk_tree_view_column_new_with_attributes("Buddy Icon", rend, "pixbuf", BUDDY_ICON_COLUMN, NULL);
3224 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); 3217 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
3260 gaim_gtk_blist_restore_position(); 3253 gaim_gtk_blist_restore_position();
3261 gtk_widget_show(gtkblist->window); 3254 gtk_widget_show(gtkblist->window);
3262 } 3255 }
3263 3256
3264 /* start the refresh timer */ 3257 /* start the refresh timer */
3265 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") || 3258 gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)gaim_gtk_blist_refresh_timer, list);
3266 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) { 3259
3267
3268 gtkblist->refresh_timer = g_timeout_add(30000,
3269 (GSourceFunc)gaim_gtk_blist_refresh_timer, list);
3270 }
3271
3272 handle = gaim_gtk_blist_get_handle(); 3260 handle = gaim_gtk_blist_get_handle();
3273 3261
3274 /* things that affect how buddies are displayed */ 3262 /* things that affect how buddies are displayed */
3275 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons", 3263 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons",
3276 _prefs_change_redo_list, NULL);
3277 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_warning_level",
3278 _prefs_change_redo_list, NULL);
3279 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time",
3280 _prefs_change_redo_list, NULL); 3264 _prefs_change_redo_list, NULL);
3281 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_empty_groups", 3265 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_empty_groups",
3282 _prefs_change_redo_list, NULL); 3266 _prefs_change_redo_list, NULL);
3283 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_offline_buddies", 3267 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_offline_buddies",
3284 _prefs_change_redo_list, NULL); 3268 _prefs_change_redo_list, NULL);
3287 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/sort_type", 3271 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/sort_type",
3288 _prefs_change_sort_method, NULL); 3272 _prefs_change_sort_method, NULL);
3289 3273
3290 /* things that affect what columns are displayed */ 3274 /* things that affect what columns are displayed */
3291 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons", 3275 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons",
3292 gaim_gtk_blist_update_columns, NULL);
3293 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time",
3294 gaim_gtk_blist_update_columns, NULL);
3295 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_warning_level",
3296 gaim_gtk_blist_update_columns, NULL); 3276 gaim_gtk_blist_update_columns, NULL);
3297 3277
3298 /* menus */ 3278 /* menus */
3299 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/mute", 3279 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/mute",
3300 gaim_gtk_blist_mute_pref_cb, NULL); 3280 gaim_gtk_blist_mute_pref_cb, NULL);
3361 GaimGtkBuddyList *gtkblist; 3341 GaimGtkBuddyList *gtkblist;
3362 3342
3363 blist = gaim_get_blist(); 3343 blist = gaim_get_blist();
3364 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); 3344 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
3365 3345
3366 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") || 3346 gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)gaim_gtk_blist_refresh_timer, blist);
3367 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) {
3368
3369 gtkblist->refresh_timer = g_timeout_add(30000,
3370 (GSourceFunc)gaim_gtk_blist_refresh_timer, blist);
3371 } else {
3372 g_source_remove(gtkblist->refresh_timer);
3373 gtkblist->refresh_timer = 0;
3374 }
3375 } 3347 }
3376 3348
3377 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter) { 3349 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter) {
3378 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data; 3350 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
3379 GtkTreePath *path; 3351 GtkTreePath *path;
4510 /* Initialize prefs */ 4482 /* Initialize prefs */
4511 gaim_prefs_add_none("/gaim/gtk/blist"); 4483 gaim_prefs_add_none("/gaim/gtk/blist");
4512 gaim_prefs_add_bool("/gaim/gtk/blist/auto_expand_contacts", TRUE); 4484 gaim_prefs_add_bool("/gaim/gtk/blist/auto_expand_contacts", TRUE);
4513 gaim_prefs_add_bool("/gaim/gtk/blist/show_buddy_icons", TRUE); 4485 gaim_prefs_add_bool("/gaim/gtk/blist/show_buddy_icons", TRUE);
4514 gaim_prefs_add_bool("/gaim/gtk/blist/show_empty_groups", FALSE); 4486 gaim_prefs_add_bool("/gaim/gtk/blist/show_empty_groups", FALSE);
4515 gaim_prefs_add_bool("/gaim/gtk/blist/show_idle_time", TRUE);
4516 gaim_prefs_add_bool("/gaim/gtk/blist/show_offline_buddies", FALSE); 4487 gaim_prefs_add_bool("/gaim/gtk/blist/show_offline_buddies", FALSE);
4517 gaim_prefs_add_bool("/gaim/gtk/blist/show_warning_level", TRUE);
4518 gaim_prefs_add_bool("/gaim/gtk/blist/list_visible", TRUE); 4488 gaim_prefs_add_bool("/gaim/gtk/blist/list_visible", TRUE);
4519 gaim_prefs_add_string("/gaim/gtk/blist/sort_type", "alphabetical"); 4489 gaim_prefs_add_string("/gaim/gtk/blist/sort_type", "alphabetical");
4520 gaim_prefs_add_int("/gaim/gtk/blist/x", 0); 4490 gaim_prefs_add_int("/gaim/gtk/blist/x", 0);
4521 gaim_prefs_add_int("/gaim/gtk/blist/y", 0); 4491 gaim_prefs_add_int("/gaim/gtk/blist/y", 0);
4522 gaim_prefs_add_int("/gaim/gtk/blist/width", 309); /* Golden ratio, baby */ 4492 gaim_prefs_add_int("/gaim/gtk/blist/width", 309); /* Golden ratio, baby */

mercurial