comparison finch/gntblist.c @ 22816:04e0d8677b9a

Add a 'View log' option in the buddylist menu.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 04 May 2008 04:15:11 +0000
parents 2d10cd28aa57
children a601807bae2b
comparison
equal deleted inserted replaced
22815:f67edee0224e 22816:04e0d8677b9a
2777 NULL, NULL, NULL, 2777 NULL, NULL, NULL,
2778 NULL); 2778 NULL);
2779 } 2779 }
2780 2780
2781 static void 2781 static void
2782 view_log_select_cb(gpointer data, PurpleRequestFields *fields)
2783 {
2784 PurpleAccount *account;
2785 const char *name;
2786 PurpleBuddy *buddy;
2787 PurpleContact *contact;
2788
2789 account = purple_request_fields_get_account(fields, "account");
2790 name = purple_request_fields_get_string(fields, "screenname");
2791
2792 buddy = purple_find_buddy(account, name);
2793 if (buddy) {
2794 contact = purple_buddy_get_contact(buddy);
2795 } else {
2796 contact = NULL;
2797 }
2798
2799 if (contact) {
2800 finch_log_show_contact(contact);
2801 } else {
2802 finch_log_show(PURPLE_LOG_IM, name, account);
2803 }
2804 }
2805
2806 static void
2807 view_log_cb(GntMenuItem *item, gpointer n)
2808 {
2809 PurpleRequestFields *fields;
2810 PurpleRequestFieldGroup *group;
2811 PurpleRequestField *field;
2812
2813 fields = purple_request_fields_new();
2814
2815 group = purple_request_field_group_new(NULL);
2816 purple_request_fields_add_group(fields, group);
2817
2818 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
2819 purple_request_field_set_type_hint(field, "screenname-all");
2820 purple_request_field_set_required(field, TRUE);
2821 purple_request_field_group_add_field(group, field);
2822
2823 field = purple_request_field_account_new("account", _("Account"), NULL);
2824 purple_request_field_set_type_hint(field, "account");
2825 purple_request_field_set_visible(field,
2826 (purple_accounts_get_all() != NULL &&
2827 purple_accounts_get_all()->next != NULL));
2828 purple_request_field_set_required(field, TRUE);
2829 purple_request_field_group_add_field(group, field);
2830 purple_request_field_account_set_show_all(field, TRUE);
2831
2832 purple_request_fields(purple_get_blist(), _("View Log"),
2833 NULL,
2834 _("Please enter the username or alias of the person "
2835 "whose log you would like to view."),
2836 fields,
2837 _("OK"), G_CALLBACK(view_log_select_cb),
2838 _("Cancel"), NULL,
2839 NULL, NULL, NULL,
2840 NULL);
2841 }
2842
2843 static void
2782 menu_add_buddy_cb(GntMenuItem *item, gpointer null) 2844 menu_add_buddy_cb(GntMenuItem *item, gpointer null)
2783 { 2845 {
2784 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); 2846 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
2785 } 2847 }
2786 2848
2835 2897
2836 item = gnt_menuitem_new(_("Join Chat...")); 2898 item = gnt_menuitem_new(_("Join Chat..."));
2837 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "join-chat"); 2899 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "join-chat");
2838 gnt_menu_add_item(GNT_MENU(sub), item); 2900 gnt_menu_add_item(GNT_MENU(sub), item);
2839 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL); 2901 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL);
2902
2903 item = gnt_menuitem_new(_("View Log..."));
2904 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-log");
2905 gnt_menu_add_item(GNT_MENU(sub), item);
2906 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_log_cb, NULL);
2840 2907
2841 item = gnt_menuitem_new(_("Show")); 2908 item = gnt_menuitem_new(_("Show"));
2842 gnt_menu_add_item(GNT_MENU(sub), item); 2909 gnt_menu_add_item(GNT_MENU(sub), item);
2843 subsub = gnt_menu_new(GNT_MENU_POPUP); 2910 subsub = gnt_menu_new(GNT_MENU_POPUP);
2844 gnt_menuitem_set_submenu(item, GNT_MENU(subsub)); 2911 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));