Mercurial > pidgin
annotate src/server.c @ 4091:0c131a8ea3d1
[gaim-migrate @ 4306]
The saved style is once again used on chat and IM windows. You may notice
that your style is set to Pictures, and until now, your IM and chat windows
have been Pictures & Text. If you prefer it this way, you'll need to set
your preferences to that.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Tue, 17 Dec 2002 11:03:44 +0000 |
| parents | 3ccbdf8e7f8d |
| children | ee884f1d7ae3 |
| rev | line source |
|---|---|
| 1 | 1 /* |
| 2 * gaim | |
| 3 * | |
| 4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 * | |
| 6 * This program is free software; you can redistribute it and/or modify | |
| 7 * it under the terms of the GNU General Public License as published by | |
| 8 * the Free Software Foundation; either version 2 of the License, or | |
| 9 * (at your option) any later version. | |
| 10 * | |
| 11 * This program is distributed in the hope that it will be useful, | |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 * GNU General Public License for more details. | |
| 15 * | |
| 16 * You should have received a copy of the GNU General Public License | |
| 17 * along with this program; if not, write to the Free Software | |
| 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 * | |
| 20 */ | |
| 21 | |
|
349
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
22 #ifdef HAVE_CONFIG_H |
|
2090
b66aca8e8dce
[gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2048
diff
changeset
|
23 #include <config.h> |
|
349
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
24 #endif |
| 1 | 25 #include <time.h> |
| 26 #include <stdio.h> | |
|
1057
d50d3abb9eb7
[gaim-migrate @ 1067]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1056
diff
changeset
|
27 #include <stdlib.h> |
| 1 | 28 #include <string.h> |
| 29 #include <sys/types.h> | |
| 30 #include <sys/stat.h> | |
| 31 #include <sys/time.h> | |
| 32 #include <unistd.h> | |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
33 #include <errno.h> |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
34 #include "gtkimhtml.h" |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
35 #include "prpl.h" |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
36 #include "multi.h" |
| 1 | 37 #include "gaim.h" |
| 38 | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
39 #include "pixmaps/ok.xpm" |
|
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
40 #include "pixmaps/cancel.xpm" |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
41 #include "pixmaps/tb_search.xpm" |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
42 |
|
980
82c5865f7cfe
[gaim-migrate @ 990]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
978
diff
changeset
|
43 void serv_login(struct aim_user *user) |
| 1 | 44 { |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
45 struct prpl *p = find_prpl(user->protocol); |
| 4040 | 46 |
| 3606 | 47 if (user->gc != NULL || p == NULL) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
48 return; |
| 2531 | 49 |
| 4040 | 50 if(!ref_protocol(p)) |
| 51 return; | |
| 3572 | 52 |
| 3606 | 53 if (p->login) { |
| 3789 | 54 if (!strlen(user->password) && !(p->options & OPT_PROTO_NO_PASSWORD) && |
| 55 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL)) { | |
| 3427 | 56 do_error_dialog(_("Please enter your password"), NULL, GAIM_ERROR); |
| 2531 | 57 return; |
| 58 } | |
| 59 | |
| 3572 | 60 debug_printf(PACKAGE " " VERSION " logging in %s using %s\n", user->username, p->name); |
| 3510 | 61 user->connecting = TRUE; |
| 3517 | 62 connecting_count++; |
| 3570 | 63 debug_printf("connecting_count: %d\n", connecting_count); |
| 3517 | 64 plugin_event(event_connecting, user); |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
65 p->login(user); |
|
423
0d4e80bdb96b
[gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
414
diff
changeset
|
66 } |
| 1 | 67 } |
| 68 | |
|
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
69 static gboolean send_keepalive(gpointer d) |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
70 { |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
71 struct gaim_connection *gc = d; |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
72 if (gc->prpl && gc->prpl->keepalive) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
73 gc->prpl->keepalive(gc); |
|
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
74 return TRUE; |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
75 } |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
76 |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
77 static void update_keepalive(struct gaim_connection *gc, gboolean on) |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
78 { |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
79 if (on && !gc->keepalive) { |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
80 debug_printf("allowing NOP\n"); |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
81 gc->keepalive = g_timeout_add(60000, send_keepalive, gc); |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
82 } else if (!on && gc->keepalive > 0) { |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
83 debug_printf("removing NOP\n"); |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
84 g_source_remove(gc->keepalive); |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
85 gc->keepalive = 0; |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
86 } |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
87 } |
|
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
88 |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
89 void serv_close(struct gaim_connection *gc) |
| 1 | 90 { |
| 3572 | 91 struct prpl *prpl; |
|
2017
eee309c0de93
[gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2001
diff
changeset
|
92 while (gc->buddy_chats) { |
|
eee309c0de93
[gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2001
diff
changeset
|
93 struct conversation *b = gc->buddy_chats->data; |
|
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
94 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); |
|
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
95 b->gc = NULL; |
|
2546
d392e9b867e9
[gaim-migrate @ 2559]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2531
diff
changeset
|
96 update_buttons_by_protocol(b); |
|
1063
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
97 } |
|
e1408fb04c36
[gaim-migrate @ 1073]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1057
diff
changeset
|
98 |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
99 if (gc->idle_timer > 0) |
|
2131
acc11216ec5d
[gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2123
diff
changeset
|
100 g_source_remove(gc->idle_timer); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
101 gc->idle_timer = 0; |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
102 |
|
2382
569ae9f2bb89
[gaim-migrate @ 2395]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2381
diff
changeset
|
103 update_keepalive(gc, FALSE); |
|
1050
c4baa5509558
[gaim-migrate @ 1060]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1038
diff
changeset
|
104 |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
105 if (gc->prpl && gc->prpl->close) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
106 gc->prpl->close(gc); |
| 4040 | 107 |
| 3572 | 108 prpl = gc->prpl; |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
109 account_offline(gc); |
|
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
110 destroy_gaim_conn(gc); |
| 3572 | 111 |
| 4040 | 112 unref_protocol(prpl); |
| 1 | 113 } |
| 114 | |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
115 void serv_touch_idle(struct gaim_connection *gc) |
| 1 | 116 { |
| 117 /* Are we idle? If so, not anymore */ | |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
118 if (gc->is_idle > 0) { |
|
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
119 gc->is_idle = 0; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
120 serv_set_idle(gc, 0); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
121 } |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
122 time(&gc->lastsent); |
|
1834
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
123 if (gc->is_auto_away) |
|
0695f52c06da
[gaim-migrate @ 1844]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1815
diff
changeset
|
124 check_idle(gc); |
| 1 | 125 } |
| 126 | |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
127 void serv_finish_login(struct gaim_connection *gc) |
| 1 | 128 { |
|
1051
713b0e14e0a9
[gaim-migrate @ 1061]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1050
diff
changeset
|
129 if (strlen(gc->user->user_info)) { |
| 1976 | 130 /* g_malloc(strlen(gc->user->user_info) * 4); |
| 131 strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4); */ | |
| 1292 | 132 serv_set_info(gc, gc->user->user_info); |
| 1976 | 133 /* g_free(buf); */ |
| 1 | 134 } |
| 135 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
136 if (gc->idle_timer > 0) |
|
2131
acc11216ec5d
[gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2123
diff
changeset
|
137 g_source_remove(gc->idle_timer); |
| 1 | 138 |
|
2381
427ccd7dfdd2
[gaim-migrate @ 2394]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
139 gc->idle_timer = g_timeout_add(20000, check_idle, gc); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
140 serv_touch_idle(gc); |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
141 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
142 time(&gc->login_time); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
143 |
|
1995
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
144 if (gc->prpl->options & OPT_PROTO_CORRECT_TIME) |
|
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
145 serv_add_buddy(gc, gc->username); |
|
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
146 |
|
1772
896432d66303
[gaim-migrate @ 1782]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1771
diff
changeset
|
147 update_keepalive(gc, TRUE); |
| 1 | 148 } |
| 149 | |
| 2993 | 150 /* This should return the elapsed time in seconds in which Gaim will not send |
| 151 * typing notifications. | |
| 3001 | 152 * if it returns zero, it will not send any more typing notifications |
| 153 * typing is a flag - TRUE for typing, FALSE for stopped typing */ | |
| 154 int serv_send_typing(struct gaim_connection *g, char *name, int typing) { | |
| 2993 | 155 if (g && g->prpl && g->prpl->send_typing) |
| 3001 | 156 return g->prpl->send_typing(g, name, typing); |
| 2993 | 157 else return 0; |
| 158 } | |
| 1 | 159 |
| 3815 | 160 struct queued_away_response { |
| 161 char name[80]; | |
| 162 time_t sent_away; | |
| 163 }; | |
| 164 | |
| 165 struct queued_away_response *find_queued_away_response_by_name(char *name); | |
| 166 | |
| 3033 | 167 int serv_send_im(struct gaim_connection *gc, char *name, char *message, int len, int flags) |
| 1 | 168 { |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
169 int val = -EINVAL; |
| 3601 | 170 struct conversation *cnv = find_conversation(name); |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
171 if (gc->prpl && gc->prpl->send_im) |
| 3033 | 172 val = gc->prpl->send_im(gc, name, message, len, flags); |
|
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
79
diff
changeset
|
173 |
|
2231
8c4ff1a368bd
[gaim-migrate @ 2241]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2205
diff
changeset
|
174 if (!(flags & IM_FLAG_AWAY)) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
175 serv_touch_idle(gc); |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
176 |
| 3815 | 177 if (gc->away && away_options & OPT_AWAY_DELAY_IN_USE && |
| 178 !(away_options & OPT_AWAY_NO_AUTO_RESP)) { | |
| 179 time_t t; | |
| 180 struct queued_away_response *qar; | |
| 181 time(&t); | |
| 182 qar = find_queued_away_response_by_name(name); | |
| 183 if (!qar) { | |
| 184 qar = (struct queued_away_response *)g_new0(struct queued_away_response, 1); | |
| 185 g_snprintf(qar->name, sizeof(qar->name), "%s", name); | |
| 186 qar->sent_away = 0; | |
| 187 away_time_queue = g_slist_append(away_time_queue, qar); | |
| 188 } | |
| 189 qar->sent_away = t; | |
| 190 } | |
| 191 | |
| 3601 | 192 if (cnv && cnv->type_again_timeout) |
| 193 gtk_timeout_remove(cnv->type_again_timeout); | |
| 194 | |
|
2123
56c4382f2909
[gaim-migrate @ 2133]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2108
diff
changeset
|
195 return val; |
| 1 | 196 } |
| 197 | |
|
1032
643a4d81c18a
[gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
198 void serv_get_info(struct gaim_connection *g, char *name) |
| 1 | 199 { |
|
1006
0a4d0ed65e17
[gaim-migrate @ 1016]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1002
diff
changeset
|
200 if (g && g->prpl && g->prpl->get_info) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
201 g->prpl->get_info(g, name); |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
202 } |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
248
diff
changeset
|
203 |
|
2773
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
204 void serv_get_away(struct gaim_connection *g, char *name) |
|
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
205 { |
|
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
206 if (g && g->prpl && g->prpl->get_away) |
|
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
207 g->prpl->get_away(g, name); |
|
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
208 } |
|
a0fd8f91e294
[gaim-migrate @ 2786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2768
diff
changeset
|
209 |
|
1032
643a4d81c18a
[gaim-migrate @ 1042]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
210 void serv_get_dir(struct gaim_connection *g, char *name) |
| 1 | 211 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
212 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->get_dir) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
213 g->prpl->get_dir(g, name); |
| 1 | 214 } |
| 215 | |
| 3466 | 216 void serv_set_dir(struct gaim_connection *g, const char *first, const char *middle, const char *last, const char *maiden, |
| 217 const char *city, const char *state, const char *country, int web) | |
| 1 | 218 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
219 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_dir) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
220 g->prpl->set_dir(g, first, middle, last, maiden, city, state, country, web); |
| 1 | 221 } |
| 222 | |
| 3466 | 223 void serv_dir_search(struct gaim_connection *g, const char *first, const char *middle, const char *last, const char *maiden, |
| 224 const char *city, const char *state, const char *country, const char *email) | |
| 1 | 225 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
226 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->dir_search) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
227 g->prpl->dir_search(g, first, middle, last, maiden, city, state, country, email); |
| 1 | 228 } |
| 229 | |
| 230 | |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
231 void serv_set_away(struct gaim_connection *gc, char *state, char *message) |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
232 { |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
233 if (gc && gc->prpl && gc->prpl->set_away) { |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
234 char *buf = NULL; |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
235 if (message) { |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
236 buf = g_malloc(strlen(message) + 1); |
|
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2681
diff
changeset
|
237 if (gc->flags & OPT_CONN_HTML) |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
238 strncpy(buf, message, strlen(message) + 1); |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
239 else |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
240 strncpy_nohtml(buf, message, strlen(message) + 1); |
| 1937 | 241 } |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
242 |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
243 gc->prpl->set_away(gc, state, buf); |
| 2000 | 244 |
| 3517 | 245 plugin_event(event_away, gc, state, buf); |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
246 |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
247 if (buf) |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
248 g_free(buf); |
|
1404
96e93119268d
[gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
249 } |
| 1937 | 250 |
|
1938
c9db54d8d8dc
[gaim-migrate @ 1948]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1937
diff
changeset
|
251 system_log(log_away, gc, NULL, OPT_LOG_BUDDY_AWAY | OPT_LOG_MY_SIGNON); |
|
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
252 } |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
253 |
|
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1376
diff
changeset
|
254 void serv_set_away_all(char *message) |
| 1 | 255 { |
|
976
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
256 GSList *c = connections; |
|
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
257 struct gaim_connection *g; |
|
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
258 |
|
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
259 while (c) { |
|
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
260 g = (struct gaim_connection *)c->data; |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
261 serv_set_away(g, GAIM_AWAY_CUSTOM, message); |
|
976
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
262 c = c->next; |
|
423
0d4e80bdb96b
[gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
414
diff
changeset
|
263 } |
| 1 | 264 } |
| 265 | |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
266 void serv_set_info(struct gaim_connection *g, char *info) |
| 1 | 267 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
268 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_info) { |
| 3517 | 269 if (plugin_event(event_set_info, g, info)) |
| 3456 | 270 return; |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
271 g->prpl->set_info(g, info); |
|
1749
5bfc58c20e82
[gaim-migrate @ 1759]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1734
diff
changeset
|
272 } |
|
237
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
273 } |
|
6ced2f1c8b24
[gaim-migrate @ 247]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
274 |
| 3466 | 275 void serv_change_passwd(struct gaim_connection *g, const char *orig, const char *new) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
276 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
277 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->change_passwd) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
278 g->prpl->change_passwd(g, orig, new); |
| 1 | 279 } |
| 280 | |
| 3466 | 281 void serv_add_buddy(struct gaim_connection *g, const char *name) |
| 1 | 282 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
283 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_buddy) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
284 g->prpl->add_buddy(g, name); |
| 1 | 285 } |
| 286 | |
|
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
287 void serv_add_buddies(struct gaim_connection *g, GList *buddies) |
| 1 | 288 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
289 if (g && g_slist_find(connections, g) && g->prpl) { |
|
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
290 if (g->prpl->add_buddies) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
291 g->prpl->add_buddies(g, buddies); |
|
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
292 else if (g->prpl->add_buddy) |
|
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
293 while (buddies) { |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
294 g->prpl->add_buddy(g, buddies->data); |
|
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
295 buddies = buddies->next; |
|
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
296 } |
|
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1303
diff
changeset
|
297 } |
| 1 | 298 } |
| 299 | |
| 300 | |
|
2681
37d80035e77f
[gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2662
diff
changeset
|
301 void serv_remove_buddy(struct gaim_connection *g, char *name, char *group) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
302 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
303 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->remove_buddy) |
|
2681
37d80035e77f
[gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2662
diff
changeset
|
304 g->prpl->remove_buddy(g, name, group); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
305 } |
| 1 | 306 |
|
2681
37d80035e77f
[gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2662
diff
changeset
|
307 void serv_remove_buddies(struct gaim_connection *gc, GList *g, char *group) |
|
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
308 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
309 if (!g_slist_find(connections, gc)) |
|
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
310 return; |
|
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
311 if (!gc->prpl) |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
312 return; /* how the hell did that happen? */ |
|
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
313 if (gc->prpl->remove_buddies) |
|
2681
37d80035e77f
[gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2662
diff
changeset
|
314 gc->prpl->remove_buddies(gc, g, group); |
|
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
315 else { |
|
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
316 while (g) { |
|
2681
37d80035e77f
[gaim-migrate @ 2694]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2662
diff
changeset
|
317 serv_remove_buddy(gc, g->data, group); |
|
2334
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
318 g = g->next; |
|
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
319 } |
|
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
320 } |
|
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
321 } |
|
b53cd5b63a99
[gaim-migrate @ 2347]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2313
diff
changeset
|
322 |
| 3136 | 323 /* |
| 324 * Set buddy's alias on server roster/list | |
| 325 */ | |
| 326 void serv_alias_buddy(struct buddy *b) | |
| 327 { | |
| 328 if(b && b->gc && b->gc->prpl && b->gc->prpl->alias_buddy) { | |
| 329 b->gc->prpl->alias_buddy(b->gc, b->name); | |
| 330 } | |
| 331 } | |
| 332 | |
| 333 /* | |
| 334 * Move a buddy from one group to another on server. | |
| 335 * | |
| 336 * Note: For now we'll not deal with changing gc's at the same time, but | |
| 337 * it should be possible. Probably needs to be done, someday. | |
| 338 */ | |
| 339 void serv_move_buddy(struct buddy *b, struct group *og, struct group *ng) | |
| 340 { | |
| 341 if(b && b->gc && og && og->gc && ng && ng->gc) { | |
| 342 /* | |
| 343 * If there are no connection changes... | |
| 344 */ | |
| 345 if(b->gc == og->gc && b->gc == ng->gc && ng->gc == og->gc) { | |
| 346 if(b->gc->prpl && b->gc->prpl->group_buddy) { | |
| 347 b->gc->prpl->group_buddy(b->gc, b->name, og->name, ng->name); | |
| 348 } | |
| 349 } | |
| 350 } | |
| 351 } | |
| 352 | |
| 3348 | 353 /* |
| 354 * Rename a group on server roster/list. | |
| 355 */ | |
| 3466 | 356 void serv_rename_group(struct gaim_connection *g, struct group *old_group, const char *new_name) |
| 3348 | 357 { |
| 358 if (g && g->prpl && old_group && new_name) { | |
| 359 GList *tobemoved = NULL; | |
| 360 GSList *original; | |
| 361 | |
| 362 for (original=old_group->members; original; original=g_slist_next(original)) | |
| 363 tobemoved = g_list_append(tobemoved, ((struct buddy *)original->data)->name); | |
| 364 | |
| 365 if (g->prpl->rename_group) { | |
| 366 /* prpl's might need to check if the group already | |
| 367 * exists or not, and handle that differently */ | |
| 368 g->prpl->rename_group(g, old_group->name, new_name, tobemoved); | |
| 369 } else { | |
| 370 serv_remove_buddies(g, tobemoved, old_group->name); | |
| 371 serv_add_buddies(g, tobemoved); | |
| 372 } | |
| 373 | |
| 374 g_list_free(tobemoved); | |
| 375 } | |
| 376 } | |
| 377 | |
|
1038
daad2440a642
[gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1032
diff
changeset
|
378 void serv_add_permit(struct gaim_connection *g, char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
379 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
380 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_permit) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
381 g->prpl->add_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
382 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
383 |
|
1038
daad2440a642
[gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1032
diff
changeset
|
384 void serv_add_deny(struct gaim_connection *g, char *name) |
| 1 | 385 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
386 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_deny) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
387 g->prpl->add_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
388 } |
|
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
389 |
|
1038
daad2440a642
[gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1032
diff
changeset
|
390 void serv_rem_permit(struct gaim_connection *g, char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
391 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
392 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_permit) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
393 g->prpl->rem_permit(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
394 } |
| 1 | 395 |
|
1038
daad2440a642
[gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1032
diff
changeset
|
396 void serv_rem_deny(struct gaim_connection *g, char *name) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
397 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
398 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->rem_deny) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
399 g->prpl->rem_deny(g, name); |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
400 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
401 |
|
1038
daad2440a642
[gaim-migrate @ 1048]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1032
diff
changeset
|
402 void serv_set_permit_deny(struct gaim_connection *g) |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
403 { |
|
1145
cd96ca1aed02
[gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1140
diff
changeset
|
404 /* this is called when either you import a buddy list, and make lots of changes that way, |
|
cd96ca1aed02
[gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1140
diff
changeset
|
405 * or when the user toggles the permit/deny mode in the prefs. In either case you should |
|
cd96ca1aed02
[gaim-migrate @ 1155]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1140
diff
changeset
|
406 * probably be resetting and resending the permit/deny info when you get this. */ |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
407 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_permit_deny) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
408 g->prpl->set_permit_deny(g); |
| 1 | 409 } |
| 410 | |
| 1026 | 411 |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
412 void serv_set_idle(struct gaim_connection *g, int time) |
| 1 | 413 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
414 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->set_idle) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
415 g->prpl->set_idle(g, time); |
| 1 | 416 } |
| 417 | |
|
976
2586b2a3725e
[gaim-migrate @ 986]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
973
diff
changeset
|
418 void serv_warn(struct gaim_connection *g, char *name, int anon) |
| 1 | 419 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
420 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->warn) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
421 g->prpl->warn(g, name, anon); |
| 1 | 422 } |
| 423 | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
424 void serv_join_chat(struct gaim_connection *g, GList *data) |
| 1 | 425 { |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
426 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->join_chat) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
427 g->prpl->join_chat(g, data); |
| 1 | 428 } |
| 429 | |
| 3466 | 430 void serv_chat_invite(struct gaim_connection *g, int id, const char *message, const char *name) |
| 1 | 431 { |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
432 char *buffy = message && *message ? g_strdup(message) : NULL; |
|
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
433 plugin_event(event_chat_send_invite, g, (void *)id, name, &buffy); |
|
2586
0f5390176949
[gaim-migrate @ 2599]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2546
diff
changeset
|
434 if (g && g_slist_find(connections, g) && g->prpl && g->prpl->chat_invite) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
435 g->prpl->chat_invite(g, id, buffy, name); |
|
2359
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
436 if (buffy) |
|
ad56a93661fc
[gaim-migrate @ 2372]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
437 g_free(buffy); |
| 1 | 438 } |
| 439 | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
440 void serv_chat_leave(struct gaim_connection *g, int id) |
| 1 | 441 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
442 if (!g_slist_find(connections, g)) |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
443 return; |
|
1015
c3579d03a0c1
[gaim-migrate @ 1025]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1013
diff
changeset
|
444 |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
445 if (g->prpl && g->prpl->chat_leave) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
446 g->prpl->chat_leave(g, id); |
| 1 | 447 } |
| 448 | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
449 void serv_chat_whisper(struct gaim_connection *g, int id, char *who, char *message) |
| 1 | 450 { |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
451 if (g->prpl && g->prpl->chat_whisper) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
452 g->prpl->chat_whisper(g, id, who, message); |
| 1 | 453 } |
| 454 | |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
455 int serv_chat_send(struct gaim_connection *g, int id, char *message) |
| 1 | 456 { |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
457 int val = -EINVAL; |
|
981
7e231bc0018a
[gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
980
diff
changeset
|
458 if (g->prpl && g->prpl->chat_send) |
|
2662
b0c5770156e1
[gaim-migrate @ 2675]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2646
diff
changeset
|
459 val = g->prpl->chat_send(g, id, message); |
|
960
fa681641643d
[gaim-migrate @ 970]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
931
diff
changeset
|
460 serv_touch_idle(g); |
|
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2131
diff
changeset
|
461 return val; |
| 1 | 462 } |
| 463 | |
| 1773 | 464 int find_queue_row_by_name(char *name) |
| 465 { | |
| 466 GSList *templist; | |
| 467 char *temp; | |
| 468 int i; | |
| 469 | |
| 470 templist = message_queue; | |
| 471 | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
472 for (i = 0; i < GTK_CLIST(clistqueue)->rows; i++) { |
| 1773 | 473 gtk_clist_get_text(GTK_CLIST(clistqueue), i, 0, &temp); |
| 474 | |
| 475 if (!strcmp(name, temp)) | |
| 476 return i; | |
| 477 } | |
| 478 | |
| 479 return -1; | |
| 480 } | |
| 481 | |
| 482 int find_queue_total_by_name(char *name) | |
| 483 { | |
| 484 GSList *templist; | |
| 485 int i = 0; | |
| 486 | |
| 487 templist = message_queue; | |
| 488 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
489 while (templist) { |
| 1773 | 490 struct queued_message *qm = (struct queued_message *)templist->data; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
491 if ((qm->flags & WFLAG_RECV) && !strcmp(name, qm->name)) |
| 1773 | 492 i++; |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
493 |
| 1773 | 494 templist = templist->next; |
| 495 } | |
| 496 | |
| 497 return i; | |
| 498 } | |
| 499 | |
| 1774 | 500 struct queued_away_response *find_queued_away_response_by_name(char *name) |
| 501 { | |
| 502 GSList *templist; | |
| 503 struct queued_away_response *qar; | |
| 504 | |
| 505 templist = away_time_queue; | |
| 506 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
507 while (templist) { |
| 1774 | 508 qar = (struct queued_away_response *)templist->data; |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
509 |
| 1774 | 510 if (!strcmp(name, qar->name)) |
| 511 return qar; | |
| 512 | |
| 513 templist = templist->next; | |
| 514 } | |
| 515 | |
| 516 return NULL; | |
| 517 } | |
| 518 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
519 /* woo. i'm actually going to comment this function. isn't that fun. make sure to follow along, kids */ |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
520 void serv_got_im(struct gaim_connection *gc, char *name, char *message, guint32 flags, time_t mtime, gint len) |
| 1 | 521 { |
|
1981
7739e648a28a
[gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1976
diff
changeset
|
522 char *buffy; |
|
7739e648a28a
[gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1976
diff
changeset
|
523 char *angel; |
|
7739e648a28a
[gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1976
diff
changeset
|
524 int plugin_return; |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
525 int away = 0; |
|
1981
7739e648a28a
[gaim-migrate @ 1991]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1976
diff
changeset
|
526 |
| 1 | 527 struct conversation *cnv; |
| 764 | 528 int new_conv = 0; |
| 1 | 529 |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
530 /* pay no attention to the man behind the curtain. |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
531 * |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
532 * the reason i feel okay with this is because it's useful to some plugins. |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
533 * Gaim doesn't ever use it itself. Besides, it's not entirely accurate; it's |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
534 * possible to have false negatives with most protocols. Also with some it's |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
535 * easy to have false positives as well. So if you're a plugin author, don't |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
536 * rely on this, still do your own checks. but uh. it's a start. */ |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
537 if (flags & IM_FLAG_GAIMUSER) |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
538 debug_printf("%s is a gaim user.\n", name); |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
539 |
|
2106
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
540 /* we should update the conversation window buttons and menu, if it exists. */ |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
541 cnv = find_conversation(name); |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
542 if (cnv) |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
543 set_convo_gc(cnv, gc); |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
544 /* we do the new_conv check here in case any plugins decide to create it */ |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
545 else |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
546 new_conv = 1; |
|
efb39c151cf7
[gaim-migrate @ 2116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2104
diff
changeset
|
547 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
548 /* plugin stuff. we pass a char ** but we don't want to pass what's been given us |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
549 * by the prpls. so we create temp holders and pass those instead. it's basically |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
550 * just to avoid segfaults. of course, if the data is binary, plugins don't see it. |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
551 * bitch all you want; i really don't want you to be dealing with it. */ |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
552 if (len < 0) { |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
553 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
554 strcpy(buffy, message); |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
555 angel = g_strdup(name); |
| 3517 | 556 plugin_return = plugin_event(event_im_recv, gc, &angel, &buffy, &flags); |
| 1339 | 557 |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
558 if (!buffy || !angel || plugin_return) { |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
559 if (buffy) |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
560 g_free(buffy); |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
561 if (angel) |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
562 g_free(angel); |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
563 return; |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
564 } |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
565 name = angel; |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
566 message = buffy; |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
567 } else { |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
568 name = g_strdup(name); |
|
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
569 message = g_memdup(message, len); |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
570 } |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
571 |
| 3792 | 572 #if 0 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
573 /* TiK, using TOC, sends an automated message in order to get your away message. Now, |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
574 * this is one of the biggest hacks I think I've seen. But, in order to be nice to |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
575 * TiK, we're going to give users the option to ignore it. */ |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
576 if ((away_options & OPT_AWAY_TIK_HACK) && gc->away && strlen(gc->away) && (len < 0) && |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
577 !strcmp(message, ">>>Automated Message: Getting Away Message<<<")) { |
|
831
97f1ae636ed7
[gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
809
diff
changeset
|
578 char *tmpmsg = stylize(awaymessage->message, MSG_LEN); |
| 3033 | 579 serv_send_im(gc, name, tmpmsg, -1, IM_FLAG_AWAY); |
|
831
97f1ae636ed7
[gaim-migrate @ 841]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
809
diff
changeset
|
580 g_free(tmpmsg); |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
581 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
582 g_free(message); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
583 return; |
|
736
d05d746384a7
[gaim-migrate @ 746]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
710
diff
changeset
|
584 } |
| 3792 | 585 #endif |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
586 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
587 /* if you can't figure this out, stop reading right now. |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
588 * "we're not worthy! we're not worthy!" */ |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
589 if ((len < 0) && (convo_options & OPT_CONVO_SEND_LINKS)) |
| 616 | 590 linkify_text(message); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
591 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
592 /* um. when we call write_to_conv with the message we received, it's nice to pass whether |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
593 * or not it was an auto-response. so if it was an auto-response, we set the appropriate |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
594 * flag. this is just so prpls don't have to know about WFLAG_* (though some do anyway) */ |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
595 if (flags & IM_FLAG_AWAY) |
| 764 | 596 away = WFLAG_AUTO; |
| 1 | 597 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
598 /* alright. two cases for how to handle this. either we're away or we're not. if we're not, |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
599 * then it's easy. if we are, then there are three or four different ways of handling it |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
600 * and different things we have to do for each. */ |
|
1404
96e93119268d
[gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
601 if (gc->away) { |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
602 time_t t; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
603 char *tmpmsg; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
604 struct buddy *b = find_buddy(gc, name); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
605 char *alias = b ? b->show : name; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
606 int row; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
607 struct queued_away_response *qar; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
608 |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
609 time(&t); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
610 |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
611 /* either we're going to queue it or not. Because of the way awayness currently |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
612 * works, this is fucked up. it's possible for an account to be away without the |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
613 * imaway dialog being shown. in fact, it's possible for *all* the accounts to be |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
614 * away without the imaway dialog being shown. so in order for this to be queued |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
615 * properly, we have to make sure that the imaway dialog actually exists, first. */ |
|
2313
bd9d403fb15b
[gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2309
diff
changeset
|
616 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) { |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
617 /* alright, so we're going to queue it. neat, eh? :) so first we create |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
618 * something to store the message, and add it to our queue. Then we update |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
619 * the away dialog to indicate that we've queued something. */ |
|
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
620 struct queued_message *qm; |
| 3985 | 621 struct buddy *b; |
| 1773 | 622 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
623 qm = g_new0(struct queued_message, 1); |
| 3985 | 624 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
625 qm->message = g_memdup(message, len == -1 ? strlen(message) + 1 : len); |
|
1769
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
626 qm->gc = gc; |
|
68eddf56f419
[gaim-migrate @ 1779]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1768
diff
changeset
|
627 qm->tm = mtime; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
628 qm->flags = WFLAG_RECV | away; |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
629 qm->len = len; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
630 message_queue = g_slist_append(message_queue, qm); |
| 1768 | 631 |
| 1773 | 632 row = find_queue_row_by_name(qm->name); |
| 633 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
634 if (row >= 0) { |
| 1773 | 635 char number[32]; |
| 636 int qtotal; | |
| 637 | |
| 638 qtotal = find_queue_total_by_name(qm->name); | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
639 g_snprintf(number, 32, _("(%d messages)"), qtotal); |
| 1773 | 640 gtk_clist_set_text(GTK_CLIST(clistqueue), row, 1, number); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
641 } else { |
| 1773 | 642 gchar *heh[2]; |
| 643 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
644 heh[0] = qm->name; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
645 heh[1] = _("(1 message)"); |
| 1773 | 646 gtk_clist_append(GTK_CLIST(clistqueue), heh); |
| 647 } | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
648 } else { |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
649 /* ok, so we're not queuing it. well then, we'll try to handle it normally. |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
650 * Some people think that ignoring it is a perfectly acceptible way to handle |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
651 * it. i think they're on crack, but hey, that's why it's optional. */ |
|
2313
bd9d403fb15b
[gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2309
diff
changeset
|
652 if (away_options & OPT_AWAY_DISCARD) { |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
653 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
654 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
655 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
656 } |
| 1773 | 657 |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
658 /* ok, so we're not ignoring it. make sure the conversation exists and is |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
659 * updated (partly handled above already), play the receive sound (sound.c |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
660 * will take care of not playing while away), and then write it to the |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
661 * convo window. */ |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
662 if (cnv == NULL) { |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
663 cnv = new_conversation(name); |
|
1898
73d73939f698
[gaim-migrate @ 1908]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1834
diff
changeset
|
664 set_convo_gc(cnv, gc); |
| 1773 | 665 } |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
666 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV)) |
| 3060 | 667 play_sound(SND_FIRST_RECEIVE); |
| 668 else if (cnv->makesound) | |
| 669 play_sound(SND_RECEIVE); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
670 |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
671 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len); |
| 1 | 672 } |
| 673 | |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
674 /* regardless of whether we queue it or not, we should send an auto-response. That is, |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
675 * of course, unless the horse.... no wait. */ |
|
2906
538c58b43eff
[gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2856
diff
changeset
|
676 if ((away_options & OPT_AWAY_NO_AUTO_RESP) || !strlen(gc->away) || |
|
538c58b43eff
[gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2856
diff
changeset
|
677 ((away_options & OPT_AWAY_IDLE_RESP) && !gc->is_idle)) { |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
678 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
679 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
680 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
681 } |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
682 |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
683 /* this used to be based on the conversation window. but um, if you went away, and |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
684 * someone sent you a message and got your auto-response, and then you closed the |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
685 * window, and then the sent you another one, they'd get the auto-response back |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
686 * too soon. besides that, we need to keep track of this even if we've got a queue. |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
687 * so the rest of this block is just the auto-response, if necessary */ |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
688 qar = find_queued_away_response_by_name(name); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
689 if (!qar) { |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
690 qar = (struct queued_away_response *)g_new0(struct queued_away_response, 1); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
691 g_snprintf(qar->name, sizeof(qar->name), "%s", name); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
692 qar->sent_away = 0; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
693 away_time_queue = g_slist_append(away_time_queue, qar); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
694 } |
|
2906
538c58b43eff
[gaim-migrate @ 2919]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2856
diff
changeset
|
695 if ((t - qar->sent_away) < away_resend) { |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
696 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
697 g_free(message); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
698 return; |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
699 } |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
700 qar->sent_away = t; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
701 |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
702 /* apply default fonts and colors */ |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
703 tmpmsg = stylize(gc->away, MSG_LEN); |
| 3033 | 704 serv_send_im(gc, name, away_subs(tmpmsg, alias), -1, IM_FLAG_AWAY); |
|
2313
bd9d403fb15b
[gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2309
diff
changeset
|
705 if (!cnv && clistqueue && (away_options & OPT_AWAY_QUEUE)) { |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
706 struct queued_message *qm; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
707 qm = g_new0(struct queued_message, 1); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
708 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
709 qm->message = g_strdup(away_subs(tmpmsg, alias)); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
710 qm->gc = gc; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
711 qm->tm = mtime; |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
712 qm->flags = WFLAG_SEND | WFLAG_AUTO; |
| 2979 | 713 qm->len = -1; |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
714 message_queue = g_slist_append(message_queue, qm); |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
715 } else if (cnv != NULL) |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
716 write_to_conv(cnv, away_subs(tmpmsg, alias), WFLAG_SEND | WFLAG_AUTO, NULL, |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
717 mtime, len); |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
718 g_free(tmpmsg); |
| 1 | 719 } else { |
|
1775
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
720 /* we're not away. this is easy. if the convo window doesn't exist, create and update |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
721 * it (if it does exist it was updated earlier), then play a sound indicating we've |
|
9ca22174da76
[gaim-migrate @ 1785]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1774
diff
changeset
|
722 * received it and then display it. easy. */ |
| 3521 | 723 |
| 724 if (new_conv && (sound_options & OPT_SOUND_FIRST_RCV)) | |
| 725 play_sound(SND_FIRST_RECEIVE); | |
| 3524 | 726 else if (new_conv || cnv->makesound) |
| 3521 | 727 play_sound(SND_RECEIVE); |
| 728 | |
| 3524 | 729 if (away_options & OPT_AWAY_QUEUE_UNREAD && !find_conversation(name) && docklet_count) { |
| 3517 | 730 /* We're gonna queue it up and wait for the user to ask for it... probably |
| 731 * by clicking the docklet or windows tray icon. */ | |
| 732 struct queued_message *qm; | |
| 733 qm = g_new0(struct queued_message, 1); | |
| 734 g_snprintf(qm->name, sizeof(qm->name), "%s", name); | |
| 735 qm->message = g_strdup(message); | |
| 736 qm->gc = gc; | |
| 737 qm->tm = mtime; | |
| 738 qm->flags = away | WFLAG_RECV; | |
| 739 qm->len = len; | |
| 740 unread_message_queue = g_slist_append(unread_message_queue, qm); | |
| 741 } else { | |
| 742 if (cnv == NULL) { | |
| 743 cnv = new_conversation(name); | |
| 744 set_convo_gc(cnv, gc); | |
| 745 } | |
| 3521 | 746 |
| 3517 | 747 set_convo_name(cnv, name); |
| 748 | |
| 749 write_to_conv(cnv, message, away | WFLAG_RECV, NULL, mtime, len); | |
|
3971
15b0d5b2de4d
[gaim-migrate @ 4155]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3922
diff
changeset
|
750 #ifdef _WIN32 |
|
15b0d5b2de4d
[gaim-migrate @ 4155]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3922
diff
changeset
|
751 wgaim_im_blink(cnv->window); |
|
15b0d5b2de4d
[gaim-migrate @ 4155]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
3922
diff
changeset
|
752 #endif |
| 1 | 753 } |
| 754 } | |
| 3517 | 755 plugin_event(event_im_displayed_rcvd, gc, name, message, flags, mtime); |
|
2104
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
756 g_free(name); |
|
0b81421021fd
[gaim-migrate @ 2114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2090
diff
changeset
|
757 g_free(message); |
| 1 | 758 } |
| 759 | |
| 760 | |
| 761 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
762 void serv_got_update(struct gaim_connection *gc, char *name, int loggedin, int evil, time_t signon, |
| 2920 | 763 time_t idle, int type, guint caps) |
| 1 | 764 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
765 struct buddy *b = find_buddy(gc, name); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
766 |
| 2993 | 767 if (signon && (gc->prpl->options & OPT_PROTO_CORRECT_TIME)) { |
|
1435
f16e17d42b43
[gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1434
diff
changeset
|
768 char *tmp = g_strdup(normalize(name)); |
|
1995
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
769 if (!g_strcasecmp(tmp, normalize(gc->username))) { |
|
2506
072f253d5939
[gaim-migrate @ 2519]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2505
diff
changeset
|
770 gc->evil = evil; |
|
1995
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
771 gc->correction_time = (signon - gc->login_time); |
|
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
772 update_idle_times(); |
|
815997c7d4f1
[gaim-migrate @ 2005]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1981
diff
changeset
|
773 } |
|
1435
f16e17d42b43
[gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1434
diff
changeset
|
774 g_free(tmp); |
|
f16e17d42b43
[gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1434
diff
changeset
|
775 } |
|
f16e17d42b43
[gaim-migrate @ 1445]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1434
diff
changeset
|
776 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
777 if (!b) { |
|
1376
730a1a19b4cc
[gaim-migrate @ 1386]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1371
diff
changeset
|
778 debug_printf("Error, no such buddy %s\n", name); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
779 return; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
780 } |
| 1 | 781 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
782 /* This code will 'align' the name from the TOC */ |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
783 /* server with what's in our record. We want to */ |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
784 /* store things how THEY want it... */ |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
785 if (strcmp(name, b->name)) { |
|
2787
feea7103a235
[gaim-migrate @ 2800]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2773
diff
changeset
|
786 char *who = g_strdup(b->name); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
787 g_snprintf(b->name, sizeof(b->name), "%s", name); |
|
2273
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
788 handle_buddy_rename(b, who); |
|
0b5c3338fa3d
[gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2231
diff
changeset
|
789 g_free(who); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
790 } |
| 1 | 791 |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
792 if (!b->idle && idle) { |
| 3517 | 793 plugin_event(event_buddy_idle, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
794 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE); |
|
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
795 } |
| 1140 | 796 if (b->idle && !idle) { |
|
2131
acc11216ec5d
[gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2123
diff
changeset
|
797 do_pounce(gc, b->name, OPT_POUNCE_UNIDLE); |
| 3517 | 798 plugin_event(event_buddy_unidle, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
799 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE); |
| 1140 | 800 } |
|
1000
91b7377e7b45
[gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
990
diff
changeset
|
801 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
802 b->idle = idle; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
803 b->evil = evil; |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
771
diff
changeset
|
804 |
|
136
4e91b92f91a7
[gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
115
diff
changeset
|
805 if ((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) { |
|
2131
acc11216ec5d
[gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2123
diff
changeset
|
806 do_pounce(gc, b->name, OPT_POUNCE_UNAWAY); |
| 3517 | 807 plugin_event(event_buddy_back, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
808 system_log(log_back, gc, b, OPT_LOG_BUDDY_AWAY); |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
771
diff
changeset
|
809 } else if (!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) { |
| 3517 | 810 plugin_event(event_buddy_away, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
811 system_log(log_away, gc, b, OPT_LOG_BUDDY_AWAY); |
|
136
4e91b92f91a7
[gaim-migrate @ 146]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
115
diff
changeset
|
812 } |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
771
diff
changeset
|
813 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
814 b->uc = type; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
815 if (caps) |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
816 b->caps = caps; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
817 |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
818 b->signon = signon; |
| 1 | 819 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
820 if (loggedin) { |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
821 if (!b->present) { |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
822 b->present = 1; |
|
2131
acc11216ec5d
[gaim-migrate @ 2141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2123
diff
changeset
|
823 do_pounce(gc, b->name, OPT_POUNCE_SIGNON); |
| 3517 | 824 plugin_event(event_buddy_signon, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
825 system_log(log_signon, gc, b, OPT_LOG_BUDDY_SIGNON); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
826 } |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
827 } else { |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
828 if (b->present) { |
| 3517 | 829 plugin_event(event_buddy_signoff, gc, b->name); |
|
1575
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
830 system_log(log_signoff, gc, b, OPT_LOG_BUDDY_SIGNON); |
|
427e1409917c
[gaim-migrate @ 1585]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1555
diff
changeset
|
831 } |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
832 b->present = 0; |
|
1030
38452403563b
[gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1026
diff
changeset
|
833 } |
| 1 | 834 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
835 set_buddy(gc, b); |
| 1 | 836 } |
| 837 | |
| 838 | |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
839 void serv_got_eviled(struct gaim_connection *gc, char *name, int lev) |
| 1 | 840 { |
|
1771
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
841 char buf2[1024]; |
| 1 | 842 |
| 3517 | 843 plugin_event(event_warned, gc, name, lev); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
844 |
|
2646
2555683e8dc8
[gaim-migrate @ 2659]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2607
diff
changeset
|
845 if (gc->evil >= lev) { |
|
1771
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
846 gc->evil = lev; |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
847 return; |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
848 } |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
849 |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
850 gc->evil = lev; |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
851 |
|
213607e89598
[gaim-migrate @ 1781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1769
diff
changeset
|
852 g_snprintf(buf2, sizeof(buf2), "%s has just been warned by %s.\nYour new warning level is %d%%", |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
853 gc->username, ((name == NULL)? "an anonymous person" : name), lev); |
| 1 | 854 |
| 3427 | 855 do_error_dialog(buf2, NULL, GAIM_INFO); |
| 1 | 856 } |
| 857 | |
| 3768 | 858 void serv_got_typing(struct gaim_connection *gc, char *name, int timeout, int state) { |
| 2993 | 859 struct conversation *cnv = find_conversation(name); |
| 860 if (cnv) { | |
| 861 set_convo_gc(cnv, gc); | |
| 3787 | 862 cnv->typing_state = state; |
| 863 update_convo_status(cnv); | |
| 2993 | 864 } else return; |
| 3517 | 865 plugin_event(event_got_typing, gc, name); |
| 2993 | 866 do_pounce(gc, name, OPT_POUNCE_TYPING); |
| 867 if (timeout > 0) { | |
| 868 if (cnv->typing_timeout) | |
| 869 gtk_timeout_remove (cnv->typing_timeout); | |
| 870 cnv->typing_timeout = gtk_timeout_add(timeout * 1000,(GtkFunction)reset_typing, | |
| 871 g_strdup(name)); | |
| 872 } | |
| 873 } | |
| 1 | 874 |
| 2993 | 875 void serv_got_typing_stopped(struct gaim_connection *gc, char *name) { |
| 876 struct conversation *c = find_conversation(name); | |
| 3787 | 877 if(!c) |
| 878 return; | |
| 879 if (c->typing_timeout) { | |
| 2993 | 880 gtk_timeout_remove (c->typing_timeout); |
| 881 } | |
| 3787 | 882 c->typing_state = NOT_TYPING; |
| 883 update_convo_status(c); | |
| 2993 | 884 } |
| 1 | 885 |
| 886 static void close_invite(GtkWidget *w, GtkWidget *w2) | |
| 887 { | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
888 GList *str = gtk_object_get_user_data(GTK_OBJECT(w2)); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
889 GList *tmp = str; |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
890 |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
891 while (tmp) { |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
892 g_free(tmp->data); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
893 tmp = tmp->next; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
894 } |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
895 if (str) |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
896 g_list_free(str); |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
897 |
| 1 | 898 gtk_widget_destroy(w2); |
| 899 } | |
| 900 | |
| 901 static void chat_invite_callback(GtkWidget *w, GtkWidget *w2) | |
| 902 { | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
903 struct gaim_connection *g = (struct gaim_connection *) |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
904 gtk_object_get_user_data(GTK_OBJECT(GTK_DIALOG(w2)->vbox)); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
905 GList *str, *tmp; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
906 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
907 str = gtk_object_get_user_data(GTK_OBJECT(w2)); |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
908 |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
909 serv_join_chat(g, str); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
910 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
911 tmp = str; |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
912 |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
913 while (tmp) { |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
914 /* this is either a g_malloc'd char* or g_malloc'd int* */ |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
915 g_free(tmp->data); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
916 tmp = tmp->next; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
917 } |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
918 if (str) |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
919 g_list_free(str); |
|
1723
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
920 |
|
76e601b77099
[gaim-migrate @ 1733]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1722
diff
changeset
|
921 gtk_widget_destroy(w2); |
| 1 | 922 } |
| 923 | |
| 924 | |
| 925 | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
926 void serv_got_chat_invite(struct gaim_connection *g, char *name, char *who, char *message, GList *data) |
| 1 | 927 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
928 GtkWidget *d; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
929 GtkWidget *label; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
930 GtkWidget *yesbtn; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
931 GtkWidget *nobtn; |
| 1 | 932 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
933 char buf2[BUF_LONG]; |
| 1 | 934 |
| 935 | |
|
1000
91b7377e7b45
[gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
990
diff
changeset
|
936 plugin_event(event_chat_invited, g, who, name, message); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
937 |
|
414
f9dc74875833
[gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
938 if (message) |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
939 g_snprintf(buf2, sizeof(buf2), "User '%s' invites %s to buddy chat room: '%s'\n%s", who, |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
940 g->username, name, message); |
|
414
f9dc74875833
[gaim-migrate @ 424]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
941 else |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
942 g_snprintf(buf2, sizeof(buf2), "User '%s' invites %s to buddy chat room: '%s'\n", who, |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
943 g->username, name); |
| 1 | 944 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
945 d = gtk_dialog_new(); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
946 gtk_widget_realize(d); |
| 1 | 947 |
| 948 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
949 label = gtk_label_new(buf2); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
950 gtk_widget_show(label); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
951 yesbtn = picture_button(d, _("Yes"), ok_xpm); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
952 nobtn = picture_button(d, _("No"), cancel_xpm); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
953 gtk_widget_show(nobtn); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
954 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), label, FALSE, FALSE, 5); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
955 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), yesbtn, FALSE, FALSE, 5); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
956 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), nobtn, FALSE, FALSE, 5); |
| 1 | 957 |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
958 gtk_object_set_user_data(GTK_OBJECT(GTK_DIALOG(d)->vbox), g); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2167
diff
changeset
|
959 gtk_object_set_user_data(GTK_OBJECT(d), data); |
| 1 | 960 |
| 961 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
962 gtk_window_set_title(GTK_WINDOW(d), "Buddy chat invite"); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
963 gtk_signal_connect(GTK_OBJECT(nobtn), "clicked", GTK_SIGNAL_FUNC(close_invite), d); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
964 gtk_signal_connect(GTK_OBJECT(yesbtn), "clicked", GTK_SIGNAL_FUNC(chat_invite_callback), d); |
| 1 | 965 |
| 966 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
967 gtk_widget_show(d); |
| 1 | 968 } |
| 969 | |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
970 struct conversation *serv_got_joined_chat(struct gaim_connection *gc, int id, char *name) |
| 1 | 971 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
972 struct conversation *b; |
| 1 | 973 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
974 b = (struct conversation *)g_new0(struct conversation, 1); |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
975 gc->buddy_chats = g_slist_append(gc->buddy_chats, b); |
|
1692
a312d64a995d
[gaim-migrate @ 1702]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1659
diff
changeset
|
976 chats = g_list_append(chats, b); |
| 1 | 977 |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
447
diff
changeset
|
978 b->is_chat = TRUE; |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
979 b->ignored = NULL; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
980 b->in_room = NULL; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
981 b->id = id; |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
982 b->gc = gc; |
| 3124 | 983 b->send_history = g_list_append(NULL, NULL); |
|
1479
4c62ead808a2
[gaim-migrate @ 1489]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1456
diff
changeset
|
984 b->history = g_string_new(""); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
985 g_snprintf(b->name, 80, "%s", name); |
| 3124 | 986 |
| 3457 | 987 if ((logging_options & OPT_LOG_CHATS) || find_log_info(b->name)) { |
| 888 | 988 FILE *fd; |
| 989 char *filename; | |
| 990 | |
| 991 filename = (char *)malloc(100); | |
|
1212
a487b35ac05a
[gaim-migrate @ 1222]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1191
diff
changeset
|
992 g_snprintf(filename, 100, "%s.chat", b->name); |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
993 |
| 3457 | 994 fd = open_log_file(filename, b->is_chat); |
|
1722
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
995 if (fd) { |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
996 if (!(logging_options & OPT_LOG_STRIP_HTML)) |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
997 fprintf(fd, |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
998 "<HR><BR><H3 Align=Center> ---- New Conversation @ %s ----</H3><BR>\n", |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
999 full_date()); |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
1000 else |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
1001 fprintf(fd, "---- New Conversation @ %s ----\n", full_date()); |
|
1437
1f0660a2c893
[gaim-migrate @ 1447]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1435
diff
changeset
|
1002 |
|
1722
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
1003 fclose(fd); |
|
1edc8b545d6f
[gaim-migrate @ 1732]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1721
diff
changeset
|
1004 } |
| 888 | 1005 free(filename); |
| 1006 } | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1007 |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1008 show_new_buddy_chat(b); |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
1009 |
| 3710 | 1010 plugin_event(event_chat_join, gc, id, name); |
| 1011 | |
|
1785
f4ae086c746b
[gaim-migrate @ 1795]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1775
diff
changeset
|
1012 return b; |
| 1 | 1013 } |
| 1014 | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
962
diff
changeset
|
1015 void serv_got_chat_left(struct gaim_connection *g, int id) |
| 1 | 1016 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1017 GSList *bcs = g->buddy_chats; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1018 struct conversation *b = NULL; |
| 1 | 1019 |
| 1020 | |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1021 while (bcs) { |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1022 b = (struct conversation *)bcs->data; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1023 if (id == b->id) { |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1024 break; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1025 } |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1026 b = NULL; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1027 bcs = bcs->next; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1028 } |
| 1 | 1029 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1030 if (!b) |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1031 return; |
| 1 | 1032 |
| 3517 | 1033 plugin_event(event_chat_leave, g, b->id); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1034 |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1235
diff
changeset
|
1035 debug_printf("Leaving room %s.\n", b->name); |
| 1 | 1036 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1037 g->buddy_chats = g_slist_remove(g->buddy_chats, b); |
| 1 | 1038 |
|
2017
eee309c0de93
[gaim-migrate @ 2027]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2001
diff
changeset
|
1039 delete_chat(b); |
| 1 | 1040 } |
| 1041 | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
1042 void serv_got_chat_in(struct gaim_connection *g, int id, char *who, int whisper, char *message, |
|
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
1043 time_t mtime) |
| 1 | 1044 { |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1045 int w; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1046 GSList *bcs = g->buddy_chats; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1047 struct conversation *b = NULL; |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1048 char *buf; |
| 3163 | 1049 char *buffy, *angel; |
| 1050 int plugin_return; | |
| 1 | 1051 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1052 while (bcs) { |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1053 b = (struct conversation *)bcs->data; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1054 if (id == b->id) |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1055 break; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1056 bcs = bcs->next; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1057 b = NULL; |
| 1 | 1058 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1059 } |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1060 if (!b) |
|
1100
f168625b63fe
[gaim-migrate @ 1110]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1089
diff
changeset
|
1061 return; |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
368
diff
changeset
|
1062 |
| 3163 | 1063 |
| 1064 /* plugin stuff. we pass a char ** but we don't want to pass what's been given us | |
| 1065 * by the prpls. so we create temp holders and pass those instead. it's basically | |
| 1066 * just to avoid segfaults. of course, if the data is binary, plugins don't see it. | |
| 1067 * bitch all you want; i really don't want you to be dealing with it. */ | |
| 1068 | |
| 1069 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); | |
| 1070 strcpy(buffy, message); | |
| 1071 angel = g_strdup(who); | |
| 3517 | 1072 plugin_return = plugin_event(event_chat_recv, g, b->id, &angel, &buffy); |
| 3163 | 1073 |
| 1074 if (!buffy || !angel || plugin_return) { | |
| 1075 if (buffy) | |
| 1076 g_free(buffy); | |
| 1077 if (angel) | |
| 1078 g_free(angel); | |
|
2372
2927c2c26fe6
[gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2359
diff
changeset
|
1079 return; |
| 3163 | 1080 } |
| 1081 who = angel; | |
| 1082 message = buffy; | |
| 1 | 1083 |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1084 buf = g_malloc(MAX(strlen(message) * 2, 8192)); |
|
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1085 strcpy(buf, message); |
|
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1086 |
|
2313
bd9d403fb15b
[gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2309
diff
changeset
|
1087 if (convo_options & OPT_CONVO_SEND_LINKS) |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1088 linkify_text(buf); |
|
1643
d7e380618fd5
[gaim-migrate @ 1653]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1587
diff
changeset
|
1089 |
|
1252
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1090 if (whisper) |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1091 w = WFLAG_WHISPER; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1092 else |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1093 w = 0; |
|
46c09828e929
[gaim-migrate @ 1262]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1250
diff
changeset
|
1094 |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1095 chat_write(b, who, w, buf, mtime); |
| 3163 | 1096 g_free(who); |
| 1097 g_free(message); | |
|
2296
878503b60006
[gaim-migrate @ 2306]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2289
diff
changeset
|
1098 g_free(buf); |
| 1 | 1099 } |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1100 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1101 static void des_popup(GtkWidget *w, GtkWidget *window) |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1102 { |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1103 if (w == window) { |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1104 char *u = gtk_object_get_user_data(GTK_OBJECT(window)); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1105 g_free(u); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1106 } |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1107 gtk_widget_destroy(window); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1108 } |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1109 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1110 void serv_got_popup(char *msg, char *u, int wid, int hei) |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1111 { |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1112 GtkWidget *window; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1113 GtkWidget *vbox; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1114 GtkWidget *sw; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1115 GtkWidget *text; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1116 GtkWidget *hbox; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1117 GtkWidget *button; |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1118 char *url = g_strdup(u); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1119 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1120 GAIM_DIALOG(window); |
| 4074 | 1121 gtk_window_set_role(GTK_WINDOW(window), "popup"); |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1122 gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1123 gtk_window_set_title(GTK_WINDOW(window), "Gaim - Popup"); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1124 gtk_container_set_border_width(GTK_CONTAINER(window), 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1125 gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(des_popup), window); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1126 gtk_object_set_user_data(GTK_OBJECT(window), url); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1127 gtk_widget_realize(window); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1128 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1129 vbox = gtk_vbox_new(FALSE, 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1130 gtk_container_add(GTK_CONTAINER(window), vbox); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1131 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1132 sw = gtk_scrolled_window_new(NULL, NULL); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1133 gtk_widget_set_usize(sw, wid, hei); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1134 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1135 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1136 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1137 text = gtk_imhtml_new(NULL, NULL); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1138 gtk_container_add(GTK_CONTAINER(sw), text); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1139 gaim_setup_imhtml(text); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1140 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1141 hbox = gtk_hbox_new(FALSE, 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1142 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1143 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1144 button = picture_button(window, _("Close"), cancel_xpm); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1145 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1146 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(des_popup), window); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1147 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1148 button = picture_button(window, _("More Info"), tb_search_xpm); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1149 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); |
|
2827
51999a36c0b1
[gaim-migrate @ 2840]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2787
diff
changeset
|
1150 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(open_url), url); |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1151 |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1152 gtk_widget_show_all(window); |
|
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1153 |
|
2856
b1e300a85678
[gaim-migrate @ 2869]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2827
diff
changeset
|
1154 gtk_imhtml_append_text(GTK_IMHTML(text), msg, -1, GTK_IMHTML_NO_NEWLINE); |
|
2768
8a918df1a5ed
[gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2762
diff
changeset
|
1155 } |
