comparison finch/gntconv.c @ 23233:cb241bc04f9b

Add an invite menu for chats
author Richard Nelson <wabz@pidgin.im>
date Wed, 28 May 2008 05:30:02 +0000
parents c7c97c62e131
children ea341703b1d3
comparison
equal deleted inserted replaced
23232:66a60f01e8a0 23233:cb241bc04f9b
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" 39 #include "gntlog.h"
40 #include "gntplugin.h" 40 #include "gntplugin.h"
41 #include "gntpounce.h"
41 #include "gntprefs.h" 42 #include "gntprefs.h"
43 #include "gntrequest.h"
42 #include "gntsound.h" 44 #include "gntsound.h"
43 #include "gntstatus.h" 45 #include "gntstatus.h"
44 #include "gntpounce.h"
45 46
46 #include "gnt.h" 47 #include "gnt.h"
47 #include "gntbox.h" 48 #include "gntbox.h"
48 #include "gntentry.h" 49 #include "gntentry.h"
49 #include "gntlabel.h" 50 #include "gntlabel.h"
555 g_object_set_data_full(G_OBJECT(item), "purple_buddy_name", name, g_free); 556 g_object_set_data_full(G_OBJECT(item), "purple_buddy_name", name, g_free);
556 } 557 }
557 } 558 }
558 559
559 static void 560 static void
561 invite_select_cb(FinchConv *fc, PurpleRequestFields *fields)
562 {
563 PurpleConversation *conv = fc->active_conv;
564 const char *buddy = purple_request_fields_get_string(fields, "screenname");
565 const char *message = purple_request_fields_get_string(fields, "message");
566 serv_chat_invite(purple_conversation_get_gc(conv),
567 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)),
568 message, buddy);
569
570 }
571
572 static void
573 invite_cb(GntMenuItem *item, gpointer ggconv)
574 {
575 PurpleRequestFields *fields;
576 PurpleRequestFieldGroup *group;
577 PurpleRequestField *field;
578
579 fields = purple_request_fields_new();
580
581 group = purple_request_field_group_new(NULL);
582 purple_request_fields_add_group(fields, group);
583
584 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
585 purple_request_field_set_type_hint(field, "screenname");
586 purple_request_field_set_required(field, TRUE);
587 purple_request_field_group_add_field(group, field);
588 field = purple_request_field_string_new("message", _("Invite message"), NULL, FALSE);
589 purple_request_field_group_add_field(group, field);
590 purple_request_fields(finch_conv_get_handle(), _("Invite"),
591 NULL,
592 _("Please enter the name of the user "
593 "you wish to invite,\nalong with an optional invite message."),
594 fields,
595 _("OK"), G_CALLBACK(invite_select_cb),
596 _("Cancel"), NULL,
597 NULL, NULL, NULL,
598 ggconv);
599 }
600
601 static void
560 gg_create_menu(FinchConv *ggc) 602 gg_create_menu(FinchConv *ggc)
561 { 603 {
562 GntWidget *menu, *sub; 604 GntWidget *menu, *sub;
563 GntMenuItem *item; 605 GntMenuItem *item;
564 606
604 gnt_menu_add_item(GNT_MENU(sub), item); 646 gnt_menu_add_item(GNT_MENU(sub), item);
605 gnt_menuitem_set_callback(item, send_file_cb, ggc); 647 gnt_menuitem_set_callback(item, send_file_cb, ggc);
606 } 648 }
607 649
608 generate_send_to_menu(ggc); 650 generate_send_to_menu(ggc);
651 } else if (purple_conversation_get_type(ggc->active_conv) == PURPLE_CONV_TYPE_CHAT) {
652 item = gnt_menuitem_new(_("Invite..."));
653 gnt_menu_add_item(GNT_MENU(sub), item);
654 gnt_menuitem_set_callback(item, invite_cb, ggc);
609 } 655 }
610 656
611 item = gnt_menuitem_new(_("View Log...")); 657 item = gnt_menuitem_new(_("View Log..."));
612 gnt_menu_add_item(GNT_MENU(sub), item); 658 gnt_menu_add_item(GNT_MENU(sub), item);
613 gnt_menuitem_set_callback(item, view_log_cb, ggc); 659 gnt_menuitem_set_callback(item, view_log_cb, ggc);