Mercurial > pidgin.yaz
annotate plugins/icq/gaim_icq.c @ 1401:bf041349b11e
[gaim-migrate @ 1411]
abliity to set accounts away independent of each other. also allows for all the other states (like in yahoo and icq). probably breaks MSN, so don't use it until rob fixes it.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 10 Jan 2001 22:15:24 +0000 |
parents | 8331d967288e |
children | 65f4a0325022 |
rev | line source |
---|---|
1152 | 1 #include <gtk/gtk.h> |
1167
5d1ded9f88b7
[gaim-migrate @ 1177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1153
diff
changeset
|
2 #include <string.h> |
1152 | 3 #include "icq.h" /* well, we're doing ICQ, right? */ |
4 #include "multi.h" /* needed for gaim_connection */ | |
5 #include "prpl.h" /* needed for prpl */ | |
6 #include "gaim.h" /* needed for every other damn thing */ | |
7 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
8 #include "pixmaps/gnomeicu-online.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
9 #include "pixmaps/gnomeicu-away.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
10 #include "pixmaps/gnomeicu-dnd.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
11 #include "pixmaps/gnomeicu-na.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
12 #include "pixmaps/gnomeicu-occ.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
13 #include "pixmaps/gnomeicu-ffc.xpm" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
14 |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
15 #define USEROPT_NICK 0 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
16 |
1152 | 17 struct icq_data { |
18 ICQLINK *link; | |
19 int cur_status; | |
20 int tcp_timer; | |
21 int ack_timer; | |
22 }; | |
23 | |
24 static struct gaim_connection *find_gaim_conn_by_icq_link(ICQLINK *link) { | |
25 GSList *c = connections; | |
26 struct gaim_connection *gc = NULL; | |
27 struct icq_data *id; | |
28 | |
29 while (c) { | |
30 gc = (struct gaim_connection *)c->data; | |
31 if (gc->protocol == PROTO_ICQ) { | |
32 id = (struct icq_data *)gc->proto_data; | |
33 if (id->link == link) | |
34 break; | |
35 } | |
36 gc = NULL; | |
37 c = c->next; | |
38 } | |
39 | |
40 return gc; | |
41 } | |
42 | |
43 static char *icq_name() { | |
44 return "ICQ"; | |
45 } | |
46 | |
47 static void icq_do_log(ICQLINK *link, time_t time, unsigned char level, const char *log) { | |
48 debug_printf("ICQ debug %d: %s", level, log); | |
49 } | |
50 | |
51 static gint icq_tcp_timer(ICQLINK *link) { | |
52 icq_TCPMain(link); | |
53 return TRUE; | |
54 } | |
55 | |
56 static void icq_callback(gpointer data, gint source, GdkInputCondition condition) { | |
57 struct gaim_connection *gc = (struct gaim_connection *)data; | |
58 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
59 debug_printf("ICQ Callback handler\n"); | |
60 | |
61 icq_HandleServerResponse(id->link); | |
62 } | |
63 | |
64 static void icq_online(ICQLINK *link) { | |
65 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
66 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
67 debug_printf("%s is now online.\n", gc->username); | |
68 account_online(gc); | |
1153
3063e6743913
[gaim-migrate @ 1163]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1152
diff
changeset
|
69 gc->options |= OPT_USR_KEEPALV; |
1152 | 70 serv_finish_login(gc); |
71 | |
72 if (bud_list_cache_exists(gc)) | |
73 do_import(NULL, gc); | |
74 | |
75 icq_ChangeStatus(id->link, STATUS_ONLINE); | |
76 } | |
77 | |
78 static void icq_logged_off(ICQLINK *link) { | |
79 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
80 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
81 int icqSocket; | |
82 | |
83 gtk_timeout_remove(id->tcp_timer); | |
84 gdk_input_remove(gc->inpa); | |
85 | |
86 if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) { | |
87 hide_login_progress(gc, "Unable to connect"); | |
88 signoff(gc); | |
89 return; | |
90 } | |
91 | |
92 icqSocket = icq_GetSok(link); | |
93 gc->inpa = gdk_input_add(icqSocket, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, icq_callback, gc); | |
94 | |
95 icq_Login(link, STATUS_ONLINE); | |
96 id->cur_status = STATUS_ONLINE; | |
97 | |
98 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link); | |
99 } | |
100 | |
101 static void icq_msg_incoming(ICQLINK *link, unsigned long uin, unsigned char hour, unsigned char minute, | |
102 unsigned char day, unsigned char month, unsigned short year, const char *data) { | |
103 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
104 char buf[256], *tmp = g_strdup(data); | |
105 g_snprintf(buf, sizeof buf, "%lu", uin); | |
106 serv_got_im(gc, buf, tmp, 0); | |
107 g_free(tmp); | |
108 } | |
109 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
110 static void icq_user_online(ICQLINK *link, unsigned long uin, unsigned long st, |
1152 | 111 unsigned long ip, unsigned short port, unsigned long real_ip, |
112 unsigned char tcp_flags) { | |
113 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
114 guint status; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
115 char buf[256]; |
1232
0c7c659fc730
[gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1222
diff
changeset
|
116 time_t t; |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
117 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
118 g_snprintf(buf, sizeof buf, "%lu", uin); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
119 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5); |
1232
0c7c659fc730
[gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1222
diff
changeset
|
120 time(&t); |
0c7c659fc730
[gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1222
diff
changeset
|
121 serv_got_update(gc, buf, 1, 0, t, 0, status, 0); |
1152 | 122 } |
123 | |
124 static void icq_user_offline(ICQLINK *link, unsigned long uin) { | |
125 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
126 char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin); | |
127 serv_got_update(gc, buf, 0, 0, 0, 0, 0, 0); | |
128 } | |
129 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
130 static void icq_user_status(ICQLINK *link, unsigned long uin, unsigned long st) { |
1152 | 131 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
132 guint status; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
133 char buf[256]; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
134 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
135 g_snprintf(buf, sizeof buf, "%lu", uin); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
136 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
137 serv_got_update(gc, buf, 1, 0, 0, 0, status, 0); |
1152 | 138 } |
139 | |
140 static gint icq_set_timeout_cb(struct icq_data *id) { | |
141 icq_HandleTimeout(id->link); | |
142 id->ack_timer = -1; | |
143 return FALSE; | |
144 } | |
145 | |
146 static void icq_set_timeout(ICQLINK *link, long interval) { | |
147 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
148 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
149 | |
150 debug_printf("icq_SetTimeout: %ld\n", interval); | |
151 if (interval > 0 && id->ack_timer < 1) | |
152 id->ack_timer = gtk_timeout_add(interval * 1000, (GtkFunction)icq_set_timeout_cb, id); | |
153 else if (id->ack_timer > 0) { | |
154 gtk_timeout_remove(id->ack_timer); | |
155 id->ack_timer = -1; | |
156 } | |
157 } | |
158 | |
159 static void icq_url_incoming(struct icq_link *link, unsigned long uin, unsigned char hour, | |
160 unsigned char minute, unsigned char day, unsigned char month, | |
161 unsigned short year, const char *url, const char *descr) { | |
162 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
163 int len = strlen(url) + strlen(descr) + 25; /* 25 is straight out of my ass */ | |
164 char *msg = g_malloc(len), buf[256]; | |
165 g_snprintf(msg, len, "<A HREF=\"%s\">%s</A>", url, descr); | |
166 g_snprintf(buf, 256, "%lu", uin); | |
167 serv_got_im(gc, buf, msg, 0); | |
168 g_free(msg); | |
169 } | |
170 | |
171 static void icq_wrong_passwd(struct icq_link *link) { | |
172 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
173 hide_login_progress(gc, "Invalid password."); | |
174 signoff(gc); | |
175 } | |
176 | |
177 static void icq_invalid_uin(struct icq_link *link) { | |
178 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); | |
179 hide_login_progress(gc, "Invalid UIN."); | |
180 signoff(gc); | |
181 } | |
182 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
183 static void icq_info_reply(struct icq_link *link, unsigned long uin, const char *nick, |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
184 const char *first, const char *last, const char *email, char auth) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
185 char buf[16 * 1024]; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
186 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
187 g_snprintf(buf, sizeof buf, |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
188 "<B>UIN:</B> %lu<BR>" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
189 "<B>Nick:</B> %s<BR>" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
190 "<B>Name:</B> %s %s<BR>" |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
191 "<B>Email:</B> %s\n", |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
192 uin, |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
193 nick, |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
194 first, last, |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
195 email); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
196 g_show_info_text(buf); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
197 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
198 |
1222
5186c154e90d
[gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1220
diff
changeset
|
199 static void icq_req_notify(struct icq_link *link, unsigned long id, int result, |
5186c154e90d
[gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1220
diff
changeset
|
200 unsigned int length, void *data) { |
5186c154e90d
[gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1220
diff
changeset
|
201 } |
5186c154e90d
[gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1220
diff
changeset
|
202 |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
203 static void icq_web_pager(struct icq_link *link, unsigned char hour, unsigned char minute, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
204 unsigned char day, unsigned char month, unsigned short year, const char *nick, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
205 const char *email, const char *msg) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
206 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
207 char *who = g_strdup_printf("ICQ Web Pager: %s (%s)", nick, email); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
208 char *what = g_strdup(msg); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
209 serv_got_im(gc, who, what, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
210 g_free(who); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
211 g_free(what); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
212 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
213 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
214 static void icq_mail_express(struct icq_link *link, unsigned char hour, unsigned char minute, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
215 unsigned char day, unsigned char month, unsigned short year, const char *nick, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
216 const char *email, const char *msg) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
217 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
218 char *who = g_strdup_printf("ICQ Mail Express: %s (%s)", nick, email); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
219 char *what = g_strdup(msg); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
220 serv_got_im(gc, who, what, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
221 g_free(who); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
222 g_free(what); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
223 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
224 |
1152 | 225 static void icq_login(struct aim_user *user) { |
226 struct gaim_connection *gc = new_gaim_conn(user); | |
227 struct icq_data *id = gc->proto_data = g_new0(struct icq_data, 1); | |
1309
0a766047b4fd
[gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1232
diff
changeset
|
228 ICQLINK *link = id->link = icq_ICQLINKNew(atol(user->username), user->password, |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
229 user->proto_opt[USEROPT_NICK][0] ? user->proto_opt[USEROPT_NICK] : "gaim user", |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
230 TRUE); |
1152 | 231 int icqSocket; |
232 | |
233 icq_LogLevel = ICQ_LOG_MESSAGE; | |
234 | |
235 link->icq_Logged = icq_online; | |
236 link->icq_Disconnected = icq_logged_off; | |
237 link->icq_RecvMessage = icq_msg_incoming; | |
238 link->icq_RecvURL = icq_url_incoming; | |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
239 link->icq_RecvWebPager = icq_web_pager; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
240 link->icq_RecvMailExpress = icq_mail_express; |
1152 | 241 link->icq_UserOnline = icq_user_online; |
242 link->icq_UserOffline = icq_user_offline; | |
243 link->icq_UserStatusUpdate = icq_user_status; | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
244 link->icq_InfoReply = icq_info_reply; |
1152 | 245 link->icq_WrongPassword = icq_wrong_passwd; |
246 link->icq_InvalidUIN = icq_invalid_uin; | |
247 link->icq_Log = icq_do_log; | |
1222
5186c154e90d
[gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1220
diff
changeset
|
248 link->icq_RequestNotify = icq_req_notify; |
1152 | 249 link->icq_SetTimeout = icq_set_timeout; |
250 | |
251 icq_UnsetProxy(link); | |
252 | |
253 if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) { | |
254 hide_login_progress(gc, "Unable to connect"); | |
255 signoff(gc); | |
256 return; | |
257 } | |
258 | |
259 icqSocket = icq_GetSok(link); | |
260 gc->inpa = gdk_input_add(icqSocket, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, icq_callback, gc); | |
261 | |
262 icq_Login(link, STATUS_ONLINE); | |
263 id->cur_status = STATUS_ONLINE; | |
264 | |
265 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link); | |
266 | |
267 set_login_progress(gc, 0, "Connecting..."); | |
268 } | |
269 | |
270 static void icq_close(struct gaim_connection *gc) { | |
271 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
272 | |
1374
8331d967288e
[gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1336
diff
changeset
|
273 if (id->tcp_timer > 0) |
8331d967288e
[gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1336
diff
changeset
|
274 gtk_timeout_remove(id->tcp_timer); |
8331d967288e
[gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1336
diff
changeset
|
275 if (gc->inpa > 0) |
8331d967288e
[gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1336
diff
changeset
|
276 gdk_input_remove(gc->inpa); |
1152 | 277 icq_Logout(id->link); |
278 icq_Disconnect(id->link); | |
1309
0a766047b4fd
[gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1232
diff
changeset
|
279 icq_ICQLINKDelete(id->link); |
0a766047b4fd
[gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1232
diff
changeset
|
280 g_free(id); |
1152 | 281 } |
282 | |
283 static struct prpl *my_protocol = NULL; | |
284 | |
285 static void icq_send_msg(struct gaim_connection *gc, char *who, char *msg, int away) { | |
286 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
1335
4d1dc4f66b4e
[gaim-migrate @ 1345]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1309
diff
changeset
|
287 icq_SendMessage(id->link, atol(who), msg, ICQ_SEND_BESTWAY); |
1152 | 288 } |
289 | |
290 static void icq_keepalive(struct gaim_connection *gc) { | |
291 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
292 icq_KeepAlive(id->link); | |
293 } | |
294 | |
295 static void icq_add_buddy(struct gaim_connection *gc, char *who) { | |
296 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
297 icq_ContactAdd(id->link, atol(who)); | |
298 icq_ContactSetVis(id->link, atol(who), TRUE); | |
299 icq_SendNewUser(id->link, atol(who)); | |
300 } | |
301 | |
302 static void icq_add_buddies(struct gaim_connection *gc, GList *whos) { | |
303 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
304 while (whos) { | |
305 icq_ContactAdd(id->link, atol(whos->data)); | |
306 icq_ContactSetVis(id->link, atol(whos->data), TRUE); | |
307 icq_SendNewUser(id->link, atol(whos->data)); | |
308 whos = whos->next; | |
309 } | |
310 } | |
311 | |
312 static void icq_rem_buddy(struct gaim_connection *gc, char *who) { | |
313 struct icq_data *id = (struct icq_data *)gc->proto_data; | |
314 icq_ContactRemove(id->link, atol(who)); | |
315 } | |
316 | |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
317 static void icq_set_away(struct gaim_connection *gc, char *state, char *msg) { |
1152 | 318 struct icq_data *id = (struct icq_data *)gc->proto_data; |
319 | |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
320 if (!strcmp(state, "Online")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
321 icq_ChangeStatus(id->link, STATUS_ONLINE); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
322 else if (!strcmp(state, "Away")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
323 icq_ChangeStatus(id->link, STATUS_AWAY); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
324 else if (!strcmp(state, "Do Not Disturb")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
325 icq_ChangeStatus(id->link, STATUS_DND); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
326 else if (!strcmp(state, "Not Available")) |
1152 | 327 icq_ChangeStatus(id->link, STATUS_NA); |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
328 else if (!strcmp(state, "Occupied")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
329 icq_ChangeStatus(id->link, STATUS_OCCUPIED); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
330 else if (!strcmp(state, "Free For Chat")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
331 icq_ChangeStatus(id->link, STATUS_FREE_CHAT); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
332 else if (!strcmp(state, "Invisible")) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
333 icq_ChangeStatus(id->link, STATUS_INVISIBLE); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
334 else if (!strcmp(state, GAIM_AWAY_CUSTOM)) |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
335 /* we have to do this even though we don't have a custom state */ |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
336 icq_ChangeStatus(id->link, STATUS_NA); |
1152 | 337 } |
338 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
339 static char **icq_list_icon(int uc) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
340 guint status; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
341 if (uc == UC_NORMAL) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
342 return icon_online_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
343 status = uc >> 5; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
344 if (status & STATUS_NA) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
345 return icon_na_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
346 if (status & STATUS_DND) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
347 return icon_dnd_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
348 if (status & STATUS_OCCUPIED) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
349 return icon_occ_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
350 if (status & STATUS_AWAY) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
351 return icon_away_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
352 if (status & STATUS_FREE_CHAT) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
353 return icon_ffc_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
354 if (status & STATUS_INVISIBLE) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
355 return NULL; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
356 return icon_online_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
357 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
358 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
359 static void icq_get_info(struct gaim_connection *gc, char *who) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
360 struct icq_data *id = (struct icq_data *)gc->proto_data; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
361 icq_SendInfoReq(id->link, atol(who)); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
362 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
363 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
364 static void icq_info(GtkObject *obj, char *who) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
365 serv_get_info(gtk_object_get_user_data(obj), who); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
366 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
367 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
368 static void icq_action_menu(GtkWidget *menu, struct gaim_connection *gc, char *who) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
369 GtkWidget *button; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
370 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
371 button = gtk_menu_item_new_with_label(_("Get Info")); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
372 gtk_signal_connect(GTK_OBJECT(button), "activate", |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
373 GTK_SIGNAL_FUNC(icq_info), who); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
374 gtk_object_set_user_data(GTK_OBJECT(button), gc); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
375 gtk_menu_append(GTK_MENU(menu), button); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
376 gtk_widget_show(button); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
377 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
378 |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
379 static void icq_print_option(GtkEntry *entry, struct aim_user *user) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
380 int entrynum; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
381 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
382 entrynum = (int) gtk_object_get_user_data(GTK_OBJECT(entry)); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
383 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
384 if (entrynum == USEROPT_NICK) |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
385 g_snprintf(user->proto_opt[USEROPT_NICK], |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
386 sizeof(user->proto_opt[USEROPT_NICK]), |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
387 "%s", gtk_entry_get_text(entry)); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
388 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
389 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
390 static void icq_user_opts(GtkWidget *book, struct aim_user *user) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
391 GtkWidget *vbox; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
392 GtkWidget *hbox; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
393 GtkWidget *label; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
394 GtkWidget *entry; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
395 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
396 vbox = gtk_vbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
397 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
398 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
399 gtk_label_new("ICQ Options")); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
400 gtk_widget_show(vbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
401 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
402 hbox = gtk_hbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
403 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
404 gtk_widget_show(hbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
405 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
406 label = gtk_label_new("Nick"); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
407 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
408 gtk_widget_show(label); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
409 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
410 entry = gtk_entry_new(); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
411 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
412 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_NICK); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
413 gtk_signal_connect(GTK_OBJECT(entry), "changed", |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
414 GTK_SIGNAL_FUNC(icq_print_option), user); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
415 if (user->proto_opt[USEROPT_NICK][0]) |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
416 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_NICK]); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
417 else |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
418 gtk_entry_set_text(GTK_ENTRY(entry), "gaim user"); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
419 gtk_widget_show(entry); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
420 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
421 hbox = gtk_hbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
422 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
423 gtk_widget_show(hbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
424 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
425 |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
426 static GList *icq_away_states() { |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
427 GList *m = NULL; |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
428 |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
429 m = g_list_append(m, "Online"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
430 m = g_list_append(m, "Away"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
431 m = g_list_append(m, "Do Not Disturb"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
432 m = g_list_append(m, "Not Available"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
433 m = g_list_append(m, "Occupied"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
434 m = g_list_append(m, "Free For Chat"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
435 m = g_list_append(m, "Invisible"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
436 } |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
437 |
1152 | 438 static void icq_init(struct prpl *ret) { |
439 ret->protocol = PROTO_ICQ; | |
440 ret->name = icq_name; | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
441 ret->list_icon = icq_list_icon; |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
442 ret->away_states = icq_away_states; |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
443 ret->action_menu = icq_action_menu; |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
444 ret->user_opts = icq_user_opts; |
1152 | 445 ret->login = icq_login; |
446 ret->close = icq_close; | |
447 ret->send_im = icq_send_msg; | |
448 ret->add_buddy = icq_add_buddy; | |
449 ret->add_buddies = icq_add_buddies; | |
450 ret->remove_buddy = icq_rem_buddy; | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
451 ret->get_info = icq_get_info; |
1152 | 452 ret->set_away = icq_set_away; |
453 ret->keepalive = icq_keepalive; | |
454 | |
455 my_protocol = ret; | |
456 } | |
457 | |
458 char *gaim_plugin_init(GModule *handle) { | |
459 load_protocol(icq_init); | |
460 return NULL; | |
461 } | |
462 | |
463 void gaim_plugin_remove() { | |
464 struct prpl *p = find_prpl(PROTO_ICQ); | |
465 if (p == my_protocol) | |
466 unload_protocol(p); | |
467 } | |
468 | |
469 char *name() { | |
470 return "ICQ"; | |
471 } | |
472 | |
473 char *description() { | |
474 return "Allows gaim to use the ICQ protocol"; | |
475 } |