| 487 logs = logs->next; |
488 logs = logs->next; |
| 488 } |
489 } |
| 489 } |
490 } |
| 490 |
491 |
| 491 static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs, |
492 static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs, |
| 492 const char *title, GdkPixbuf *pixbuf, int log_size) |
493 const char *title, GtkWidget *icon, int log_size) |
| 493 { |
494 { |
| 494 PidginLogViewer *lv; |
495 PidginLogViewer *lv; |
| 495 GtkWidget *title_box; |
496 GtkWidget *title_box; |
| 496 char *text; |
497 char *text; |
| 497 GtkWidget *pane; |
498 GtkWidget *pane; |
| 546 g_signal_connect(G_OBJECT(lv->window), "response", |
547 g_signal_connect(G_OBJECT(lv->window), "response", |
| 547 G_CALLBACK(destroy_cb), ht); |
548 G_CALLBACK(destroy_cb), ht); |
| 548 gtk_window_set_role(GTK_WINDOW(lv->window), "log_viewer"); |
549 gtk_window_set_role(GTK_WINDOW(lv->window), "log_viewer"); |
| 549 |
550 |
| 550 /* Icon *************/ |
551 /* Icon *************/ |
| 551 if (pixbuf != NULL) { |
552 if (icon != NULL) { |
| 552 GtkWidget *icon; |
|
| 553 |
|
| 554 title_box = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
553 title_box = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 555 gtk_container_set_border_width(GTK_CONTAINER(title_box), GAIM_HIG_BOX_SPACE); |
554 gtk_container_set_border_width(GTK_CONTAINER(title_box), GAIM_HIG_BOX_SPACE); |
| 556 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), title_box, FALSE, FALSE, 0); |
555 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), title_box, FALSE, FALSE, 0); |
| 557 |
556 |
| 558 icon = gtk_image_new_from_pixbuf(pixbuf); |
|
| 559 gtk_box_pack_start(GTK_BOX(title_box), icon, FALSE, FALSE, 0); |
557 gtk_box_pack_start(GTK_BOX(title_box), icon, FALSE, FALSE, 0); |
| 560 g_object_unref(G_OBJECT(pixbuf)); |
|
| 561 } else |
558 } else |
| 562 title_box = GTK_DIALOG(lv->window)->vbox; |
559 title_box = GTK_DIALOG(lv->window)->vbox; |
| 563 |
560 |
| 564 /* Label ************/ |
561 /* Label ************/ |
| 565 lv->label = gtk_label_new(NULL); |
562 lv->label = gtk_label_new(NULL); |
| 685 |
682 |
| 686 title = g_strdup_printf(_("Conversations with %s"), name); |
683 title = g_strdup_printf(_("Conversations with %s"), name); |
| 687 } |
684 } |
| 688 |
685 |
| 689 display_log_viewer(ht, gaim_log_get_logs(type, screenname, account), |
686 display_log_viewer(ht, gaim_log_get_logs(type, screenname, account), |
| 690 title, pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM), |
687 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)), |
| 691 gaim_log_get_total_size(type, screenname, account)); |
688 gaim_log_get_total_size(type, screenname, account)); |
| 692 g_free(title); |
689 g_free(title); |
| 693 } |
690 } |
| 694 |
691 |
| 695 void pidgin_log_show_contact(GaimContact *contact) { |
692 void pidgin_log_show_contact(GaimContact *contact) { |
| 696 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1); |
693 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1); |
| 697 GaimBlistNode *child; |
694 GaimBlistNode *child; |
| 698 PidginLogViewer *lv = NULL; |
695 PidginLogViewer *lv = NULL; |
| 699 GList *logs = NULL; |
696 GList *logs = NULL; |
| 700 char *filename; |
|
| 701 GdkPixbuf *pixbuf; |
697 GdkPixbuf *pixbuf; |
| |
698 GtkWidget *image = gtk_image_new();; |
| 702 const char *name = NULL; |
699 const char *name = NULL; |
| 703 char *title; |
700 char *title; |
| 704 int total_log_size = 0; |
701 int total_log_size = 0; |
| 705 |
702 |
| 706 g_return_if_fail(contact != NULL); |
703 g_return_if_fail(contact != NULL); |
| 724 ((GaimBuddy *)child)->account), logs); |
721 ((GaimBuddy *)child)->account), logs); |
| 725 total_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy *)child)->name, ((GaimBuddy *)child)->account); |
722 total_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy *)child)->name, ((GaimBuddy *)child)->account); |
| 726 } |
723 } |
| 727 logs = g_list_sort(logs, gaim_log_compare); |
724 logs = g_list_sort(logs, gaim_log_compare); |
| 728 |
725 |
| 729 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "icons", "online.png", NULL); |
726 pixbuf = gtk_widget_render_icon (image, PIDGIN_STOCK_STATUS_PERSON, |
| 730 pixbuf = gdk_pixbuf_new_from_file(filename, NULL); |
727 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow"); |
| 731 g_free(filename); |
728 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf); |
| 732 |
729 |
| 733 if (contact->alias != NULL) |
730 if (contact->alias != NULL) |
| 734 name = contact->alias; |
731 name = contact->alias; |
| 735 else if (contact->priority != NULL) |
732 else if (contact->priority != NULL) |
| 736 name = gaim_buddy_get_contact_alias(contact->priority); |
733 name = gaim_buddy_get_contact_alias(contact->priority); |
| 737 |
734 |
| 738 title = g_strdup_printf(_("Conversations with %s"), name); |
735 title = g_strdup_printf(_("Conversations with %s"), name); |
| 739 display_log_viewer(ht, logs, title, pixbuf, total_log_size); |
736 display_log_viewer(ht, logs, title, image, total_log_size); |
| 740 g_free(title); |
737 g_free(title); |
| 741 } |
738 } |
| 742 |
739 |
| 743 void pidgin_syslog_show() |
740 void pidgin_syslog_show() |
| 744 { |
741 { |