Mercurial > pidgin
annotate plugins/icq/gaim_icq.c @ 1402:65f4a0325022
[gaim-migrate @ 1412]
whoops. this should work better.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 11 Jan 2001 08:02:35 +0000 |
parents | bf041349b11e |
children | 96e93119268d |
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); |
1402
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
334 else if (!strcmp(state, GAIM_AWAY_CUSTOM)) { |
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
335 if (msg) |
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
336 icq_ChangeStatus(id->link, STATUS_NA); |
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
337 else |
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
338 icq_ChangeStatus(id->link, STATUS_ONLINE); |
65f4a0325022
[gaim-migrate @ 1412]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1401
diff
changeset
|
339 } |
1152 | 340 } |
341 | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
342 static char **icq_list_icon(int uc) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
343 guint status; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
344 if (uc == UC_NORMAL) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
345 return icon_online_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
346 status = uc >> 5; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
347 if (status & STATUS_NA) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
348 return icon_na_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
349 if (status & STATUS_DND) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
350 return icon_dnd_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
351 if (status & STATUS_OCCUPIED) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
352 return icon_occ_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
353 if (status & STATUS_AWAY) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
354 return icon_away_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
355 if (status & STATUS_FREE_CHAT) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
356 return icon_ffc_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
357 if (status & STATUS_INVISIBLE) |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
358 return NULL; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
359 return icon_online_xpm; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
360 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
361 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
362 static void icq_get_info(struct gaim_connection *gc, char *who) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
363 struct icq_data *id = (struct icq_data *)gc->proto_data; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
364 icq_SendInfoReq(id->link, atol(who)); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
365 } |
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 static void icq_info(GtkObject *obj, char *who) { |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
368 serv_get_info(gtk_object_get_user_data(obj), who); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
369 } |
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 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
|
372 GtkWidget *button; |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
373 |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
374 button = gtk_menu_item_new_with_label(_("Get Info")); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
375 gtk_signal_connect(GTK_OBJECT(button), "activate", |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
376 GTK_SIGNAL_FUNC(icq_info), who); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
377 gtk_object_set_user_data(GTK_OBJECT(button), gc); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
378 gtk_menu_append(GTK_MENU(menu), button); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
379 gtk_widget_show(button); |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
380 } |
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
381 |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
382 static void icq_print_option(GtkEntry *entry, struct aim_user *user) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
383 int entrynum; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
384 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
385 entrynum = (int) gtk_object_get_user_data(GTK_OBJECT(entry)); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
386 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
387 if (entrynum == USEROPT_NICK) |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
388 g_snprintf(user->proto_opt[USEROPT_NICK], |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
389 sizeof(user->proto_opt[USEROPT_NICK]), |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
390 "%s", gtk_entry_get_text(entry)); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
391 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
392 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
393 static void icq_user_opts(GtkWidget *book, struct aim_user *user) { |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
394 GtkWidget *vbox; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
395 GtkWidget *hbox; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
396 GtkWidget *label; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
397 GtkWidget *entry; |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
398 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
399 vbox = gtk_vbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
400 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
401 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
402 gtk_label_new("ICQ Options")); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
403 gtk_widget_show(vbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
404 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
405 hbox = gtk_hbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
406 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
407 gtk_widget_show(hbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
408 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
409 label = gtk_label_new("Nick"); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
410 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
411 gtk_widget_show(label); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
412 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
413 entry = gtk_entry_new(); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
414 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
415 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_NICK); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
416 gtk_signal_connect(GTK_OBJECT(entry), "changed", |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
417 GTK_SIGNAL_FUNC(icq_print_option), user); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
418 if (user->proto_opt[USEROPT_NICK][0]) |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
419 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
|
420 else |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
421 gtk_entry_set_text(GTK_ENTRY(entry), "gaim user"); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
422 gtk_widget_show(entry); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
423 |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
424 hbox = gtk_hbox_new(FALSE, 5); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
425 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
426 gtk_widget_show(hbox); |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
427 } |
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
428 |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
429 static GList *icq_away_states() { |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
430 GList *m = NULL; |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
431 |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
432 m = g_list_append(m, "Online"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
433 m = g_list_append(m, "Away"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
434 m = g_list_append(m, "Do Not Disturb"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
435 m = g_list_append(m, "Not Available"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
436 m = g_list_append(m, "Occupied"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
437 m = g_list_append(m, "Free For Chat"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
438 m = g_list_append(m, "Invisible"); |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
439 } |
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
440 |
1152 | 441 static void icq_init(struct prpl *ret) { |
442 ret->protocol = PROTO_ICQ; | |
443 ret->name = icq_name; | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
444 ret->list_icon = icq_list_icon; |
1401
bf041349b11e
[gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1374
diff
changeset
|
445 ret->away_states = icq_away_states; |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
446 ret->action_menu = icq_action_menu; |
1336
f3303fc05572
[gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1335
diff
changeset
|
447 ret->user_opts = icq_user_opts; |
1152 | 448 ret->login = icq_login; |
449 ret->close = icq_close; | |
450 ret->send_im = icq_send_msg; | |
451 ret->add_buddy = icq_add_buddy; | |
452 ret->add_buddies = icq_add_buddies; | |
453 ret->remove_buddy = icq_rem_buddy; | |
1220
16ea7a3fdbb6
[gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1167
diff
changeset
|
454 ret->get_info = icq_get_info; |
1152 | 455 ret->set_away = icq_set_away; |
456 ret->keepalive = icq_keepalive; | |
457 | |
458 my_protocol = ret; | |
459 } | |
460 | |
461 char *gaim_plugin_init(GModule *handle) { | |
462 load_protocol(icq_init); | |
463 return NULL; | |
464 } | |
465 | |
466 void gaim_plugin_remove() { | |
467 struct prpl *p = find_prpl(PROTO_ICQ); | |
468 if (p == my_protocol) | |
469 unload_protocol(p); | |
470 } | |
471 | |
472 char *name() { | |
473 return "ICQ"; | |
474 } | |
475 | |
476 char *description() { | |
477 return "Allows gaim to use the ICQ protocol"; | |
478 } |