| 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); |