Mercurial > pidgin.yaz
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); |