src/server.c

changeset 2205
68c42ce8eba6
parent 2167
cbb558585911
child 2231
9d8593ab093e
equal deleted inserted replaced
2204:86b6aedfc586 2205:68c42ce8eba6
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);

mercurial