finch/gntconv.c

changeset 41104
06289a48546f
parent 41008
dc06703548a1
child 41137
3c1574216aed
equal deleted inserted replaced
41103:db1b68e96dbf 41104:06289a48546f
34 34
35 #include "gntaccount.h" 35 #include "gntaccount.h"
36 #include "gntblist.h" 36 #include "gntblist.h"
37 #include "gntconv.h" 37 #include "gntconv.h"
38 #include "gntdebug.h" 38 #include "gntdebug.h"
39 #include "gntlog.h"
40 #include "gntmenuutil.h" 39 #include "gntmenuutil.h"
41 #include "gntplugin.h" 40 #include "gntplugin.h"
42 #include "gntprefs.h" 41 #include "gntprefs.h"
43 #include "gntrequest.h" 42 #include "gntrequest.h"
44 #include "gntstatus.h" 43 #include "gntstatus.h"
534 PurpleConversation *im = purple_im_conversation_new(account, buddy); 533 PurpleConversation *im = purple_im_conversation_new(account, buddy);
535 finch_conversation_set_active(im); 534 finch_conversation_set_active(im);
536 } 535 }
537 536
538 static void 537 static void
539 view_log_cb(GntMenuItem *n, gpointer ggc)
540 {
541 FinchConv *fc;
542 PurpleConversation *conv;
543 PurpleLogType type;
544 const char *name;
545 PurpleAccount *account;
546 GSList *buddies;
547 GSList *cur;
548
549 fc = ggc;
550 conv = fc->active_conv;
551
552 if (PURPLE_IS_IM_CONVERSATION(conv))
553 type = PURPLE_LOG_IM;
554 else if (PURPLE_IS_CHAT_CONVERSATION(conv))
555 type = PURPLE_LOG_CHAT;
556 else
557 return;
558
559 name = purple_conversation_get_name(conv);
560 account = purple_conversation_get_account(conv);
561
562 buddies = purple_blist_find_buddies(account, name);
563 for (cur = buddies; cur != NULL; cur = cur->next) {
564 PurpleBlistNode *node = cur->data;
565 if ((node != NULL) &&
566 (purple_blist_node_get_sibling_prev(node) || purple_blist_node_get_sibling_next(node))) {
567 finch_log_show_contact((PurpleContact *)purple_blist_node_get_parent(node));
568 g_slist_free(buddies);
569 return;
570 }
571 }
572 g_slist_free(buddies);
573
574 finch_log_show(type, name, account);
575 }
576
577 static void
578 generate_send_to_menu(FinchConv *ggc) 538 generate_send_to_menu(FinchConv *ggc)
579 { 539 {
580 GntWidget *sub, *menu = ggc->menu; 540 GntWidget *sub, *menu = ggc->menu;
581 GntMenuItem *item; 541 GntMenuItem *item;
582 GSList *buds; 542 GSList *buds;
691 } else if (PURPLE_IS_CHAT_CONVERSATION(ggc->active_conv)) { 651 } else if (PURPLE_IS_CHAT_CONVERSATION(ggc->active_conv)) {
692 item = gnt_menuitem_new(_("Invite...")); 652 item = gnt_menuitem_new(_("Invite..."));
693 gnt_menu_add_item(GNT_MENU(sub), item); 653 gnt_menu_add_item(GNT_MENU(sub), item);
694 gnt_menuitem_set_callback(item, invite_cb, ggc); 654 gnt_menuitem_set_callback(item, invite_cb, ggc);
695 } 655 }
696
697 item = gnt_menuitem_new(_("View Log..."));
698 gnt_menu_add_item(GNT_MENU(sub), item);
699 gnt_menuitem_set_callback(item, view_log_cb, ggc);
700 656
701 item = gnt_menuitem_check_new(_("Enable Logging")); 657 item = gnt_menuitem_check_new(_("Enable Logging"));
702 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), 658 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
703 purple_conversation_is_logging(ggc->active_conv)); 659 purple_conversation_is_logging(ggc->active_conv));
704 gnt_menu_add_item(GNT_MENU(sub), item); 660 gnt_menu_add_item(GNT_MENU(sub), item);

mercurial