Mercurial > pidgin
comparison src/server.c @ 4487:abb0c3eccc76
[gaim-migrate @ 4762]
slowly, the gtk code in server.c dies off
there should be no patent issues with this code
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Fri, 31 Jan 2003 02:02:52 +0000 |
| parents | 62c1e5e656d0 |
| children | 3196d9044a45 |
comparison
equal
deleted
inserted
replaced
| 4486:c3281e2af992 | 4487:abb0c3eccc76 |
|---|---|
| 34 #include "gtkimhtml.h" | 34 #include "gtkimhtml.h" |
| 35 #include "prpl.h" | 35 #include "prpl.h" |
| 36 #include "multi.h" | 36 #include "multi.h" |
| 37 #include "gaim.h" | 37 #include "gaim.h" |
| 38 | 38 |
| 39 #include "pixmaps/ok.xpm" | |
| 40 #include "pixmaps/cancel.xpm" | 39 #include "pixmaps/cancel.xpm" |
| 41 #include "pixmaps/tb_search.xpm" | 40 #include "pixmaps/tb_search.xpm" |
| 42 | 41 |
| 43 void serv_login(struct aim_user *user) | 42 void serv_login(struct aim_user *user) |
| 44 { | 43 { |
| 978 gaim_im_stop_typing_timeout(im); | 977 gaim_im_stop_typing_timeout(im); |
| 979 gaim_im_set_typing_state(im, NOT_TYPING); | 978 gaim_im_set_typing_state(im, NOT_TYPING); |
| 980 gaim_im_update_typing(im); | 979 gaim_im_update_typing(im); |
| 981 } | 980 } |
| 982 | 981 |
| 983 static void close_invite(GtkWidget *w, GtkWidget *w2) | 982 struct chat_invite_data { |
| 984 { | 983 struct gaim_connection *gc; |
| 985 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2)); | 984 GList *str; |
| 986 GList *tmp = str; | 985 }; |
| 987 | 986 |
| 988 while (tmp) { | 987 static void chat_invite_data_free(struct chat_invite_data *cid) |
| 989 g_free(tmp->data); | 988 { |
| 990 tmp = tmp->next; | 989 GList *tmp = cid->str; |
| 991 } | |
| 992 if (str) | |
| 993 g_list_free(str); | |
| 994 | |
| 995 gtk_widget_destroy(w2); | |
| 996 } | |
| 997 | |
| 998 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2) | |
| 999 { | |
| 1000 struct gaim_connection *g = (struct gaim_connection *) | |
| 1001 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox)); | |
| 1002 GList *str, *tmp; | |
| 1003 | |
| 1004 str = gtk_object_get_user_data(GTK_OBJECT(w2)); | |
| 1005 | |
| 1006 serv_join_chat(g, str); | |
| 1007 | |
| 1008 tmp = str; | |
| 1009 | |
| 1010 while (tmp) { | 990 while (tmp) { |
| 1011 /* this is either a g_malloc'd char* or g_malloc'd int* */ | 991 /* this is either a g_malloc'd char* or g_malloc'd int* */ |
| 1012 g_free(tmp->data); | 992 g_free(tmp->data); |
| 1013 tmp = tmp->next; | 993 tmp = tmp->next; |
| 1014 } | 994 } |
| 1015 if (str) | 995 if (cid->str) |
| 1016 g_list_free(str); | 996 g_list_free(cid->str); |
| 1017 | 997 g_free(cid); |
| 1018 gtk_widget_destroy(w2); | 998 } |
| 1019 } | 999 |
| 1020 | 1000 static void chat_invite_accept(struct chat_invite_data *cid) |
| 1021 | 1001 { |
| 1022 | 1002 serv_join_chat(cid->gc, cid->str); |
| 1023 void serv_got_chat_invite(struct gaim_connection *g, char *name, | 1003 |
| 1004 chat_invite_data_free(cid); | |
| 1005 } | |
| 1006 | |
| 1007 | |
| 1008 | |
| 1009 void serv_got_chat_invite(struct gaim_connection *gc, char *name, | |
| 1024 char *who, char *message, GList *data) | 1010 char *who, char *message, GList *data) |
| 1025 { | 1011 { |
| 1026 GtkWidget *d; | |
| 1027 GtkWidget *label; | |
| 1028 GtkWidget *yesbtn; | |
| 1029 GtkWidget *nobtn; | |
| 1030 | |
| 1031 char buf2[BUF_LONG]; | 1012 char buf2[BUF_LONG]; |
| 1032 | 1013 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
| 1033 | 1014 |
| 1034 plugin_event(event_chat_invited, g, who, name, message); | 1015 |
| 1016 plugin_event(event_chat_invited, gc, who, name, message); | |
| 1035 | 1017 |
| 1036 if (message) | 1018 if (message) |
| 1037 g_snprintf(buf2, sizeof(buf2), | 1019 g_snprintf(buf2, sizeof(buf2), |
| 1038 _("User '%s' invites %s to buddy chat room: '%s'\n%s"), | 1020 _("User '%s' invites %s to buddy chat room: '%s'\n%s"), |
| 1039 who, g->username, name, message); | 1021 who, gc->username, name, message); |
| 1040 else | 1022 else |
| 1041 g_snprintf(buf2, sizeof(buf2), | 1023 g_snprintf(buf2, sizeof(buf2), |
| 1042 _("User '%s' invites %s to buddy chat room: '%s'\n"), | 1024 _("User '%s' invites %s to buddy chat room: '%s'\n"), |
| 1043 who, g->username, name); | 1025 who, gc->username, name); |
| 1044 | 1026 |
| 1045 d = gtk_dialog_new(); | 1027 cid->gc = gc; |
| 1046 gtk_widget_realize(d); | 1028 cid->str = data; |
| 1047 | 1029 |
| 1048 | 1030 do_ask_dialog(_("Buddy Chat Invite"), buf2, cid, _("Accept"), chat_invite_accept, _("Cancel"), chat_invite_data_free, NULL, FALSE); |
| 1049 label = gtk_label_new(buf2); | |
| 1050 gtk_widget_show(label); | |
| 1051 yesbtn = picture_button(d, _("Yes"), ok_xpm); | |
| 1052 nobtn = picture_button(d, _("No"), cancel_xpm); | |
| 1053 gtk_widget_show(nobtn); | |
| 1054 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5); | |
| 1055 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5); | |
| 1056 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5); | |
| 1057 | |
| 1058 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g); | |
| 1059 gtk_object_set_user_data(GTK_OBJECT(d), data); | |
| 1060 | |
| 1061 | |
| 1062 gtk_window_set_title(GTK_WINDOW(d), _("Buddy chat invite")); | |
| 1063 g_signal_connect(G_OBJECT(nobtn), "clicked", | |
| 1064 G_CALLBACK(close_invite), d); | |
| 1065 g_signal_connect(G_OBJECT(yesbtn), "clicked", | |
| 1066 G_CALLBACK(chat_invite_callback), d); | |
| 1067 | |
| 1068 gtk_widget_show(d); | |
| 1069 } | 1031 } |
| 1070 | 1032 |
| 1071 struct gaim_conversation *serv_got_joined_chat(struct gaim_connection *gc, | 1033 struct gaim_conversation *serv_got_joined_chat(struct gaim_connection *gc, |
| 1072 int id, char *name) | 1034 int id, char *name) |
| 1073 { | 1035 { |
