| 284 { |
284 { |
| 285 if (g->prpl && g->prpl->warn) |
285 if (g->prpl && g->prpl->warn) |
| 286 (*g->prpl->warn)(g, name, anon); |
286 (*g->prpl->warn)(g, name, anon); |
| 287 } |
287 } |
| 288 |
288 |
| 289 void serv_accept_chat(struct gaim_connection *g, int i) |
289 void serv_join_chat(struct gaim_connection *g, GList *data) |
| 290 { |
|
| 291 if (g->prpl && g->prpl->accept_chat) |
|
| 292 (*g->prpl->accept_chat)(g, i); |
|
| 293 } |
|
| 294 |
|
| 295 void serv_join_chat(struct gaim_connection *g, int exchange, char *name) |
|
| 296 { |
290 { |
| 297 if (g->prpl && g->prpl->join_chat) |
291 if (g->prpl && g->prpl->join_chat) |
| 298 (*g->prpl->join_chat)(g, exchange, name); |
292 (*g->prpl->join_chat)(g, data); |
| 299 } |
293 } |
| 300 |
294 |
| 301 void serv_chat_invite(struct gaim_connection *g, int id, char *message, char *name) |
295 void serv_chat_invite(struct gaim_connection *g, int id, char *message, char *name) |
| 302 { |
296 { |
| 303 if (g->prpl && g->prpl->chat_invite) |
297 if (g->prpl && g->prpl->chat_invite) |
| 739 |
733 |
| 740 |
734 |
| 741 |
735 |
| 742 static void close_invite(GtkWidget *w, GtkWidget *w2) |
736 static void close_invite(GtkWidget *w, GtkWidget *w2) |
| 743 { |
737 { |
| 744 char *str = (char *)gtk_object_get_user_data(GTK_OBJECT(w2)); |
738 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2)); |
| 745 |
739 GList *tmp = str; |
| |
740 |
| |
741 while (tmp) { |
| |
742 g_free(tmp->data); |
| |
743 tmp = tmp->next; |
| |
744 } |
| 746 if (str) |
745 if (str) |
| 747 g_free(str); |
746 g_list_free(str); |
| 748 |
747 |
| 749 gtk_widget_destroy(w2); |
748 gtk_widget_destroy(w2); |
| 750 } |
749 } |
| 751 |
750 |
| 752 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2) |
751 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2) |
| 753 { |
752 { |
| 754 struct gaim_connection *g = (struct gaim_connection *) |
753 struct gaim_connection *g = (struct gaim_connection *) |
| 755 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox)); |
754 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox)); |
| 756 int id; |
755 GList *str, *tmp; |
| 757 char *str; |
756 |
| 758 |
757 str = gtk_object_get_user_data(GTK_OBJECT(w2)); |
| 759 id = (int)gtk_object_get_user_data(GTK_OBJECT(w)); |
758 |
| 760 str = (char *)gtk_object_get_user_data(GTK_OBJECT(w2)); |
759 serv_join_chat(g, str); |
| 761 |
760 |
| 762 if (g->prpl && g->prpl->accept_chat) |
761 tmp = str; |
| 763 serv_accept_chat(g, id); |
762 |
| 764 else |
763 while (tmp) { |
| 765 serv_join_chat(g, id, str); |
764 /* this is either a g_malloc'd char* or g_malloc'd int* */ |
| 766 |
765 g_free(tmp->data); |
| |
766 tmp = tmp->next; |
| |
767 } |
| 767 if (str) |
768 if (str) |
| 768 g_free(str); |
769 g_list_free(str); |
| 769 |
770 |
| 770 gtk_widget_destroy(w2); |
771 gtk_widget_destroy(w2); |
| 771 } |
772 } |
| 772 |
773 |
| 773 |
774 |
| 774 |
775 |
| 775 void serv_got_chat_invite(struct gaim_connection *g, char *name, int id, char *who, char *message) |
776 void serv_got_chat_invite(struct gaim_connection *g, char *name, char *who, char *message, GList *data) |
| 776 { |
777 { |
| 777 GtkWidget *d; |
778 GtkWidget *d; |
| 778 GtkWidget *label; |
779 GtkWidget *label; |
| 779 GtkWidget *yesbtn; |
780 GtkWidget *yesbtn; |
| 780 GtkWidget *nobtn; |
781 GtkWidget *nobtn; |
| 804 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5); |
805 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5); |
| 805 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5); |
806 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5); |
| 806 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5); |
807 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5); |
| 807 |
808 |
| 808 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g); |
809 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g); |
| 809 if (name) |
810 gtk_object_set_user_data(GTK_OBJECT(d), data); |
| 810 gtk_object_set_user_data(GTK_OBJECT(d), (void *)g_strdup(name)); |
|
| 811 gtk_object_set_user_data(GTK_OBJECT(yesbtn), (void *)id); |
|
| 812 |
811 |
| 813 |
812 |
| 814 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite"); |
813 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite"); |
| 815 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d); |
814 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d); |
| 816 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d); |
815 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d); |