Mercurial > pidgin
annotate libgaim/protocols/msn/msn.c @ 20392:9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
"uploaded a diff, this diff is unchanged from the last tarball that I
previously uploaded, except that it's against HEAD. This should be a little
easier for most people."
(This was apparently msn-p13-merge-head.diff, which SourceForge didn't allow to
be uploaded.)
PLUS
"Updated the diff with basically no change, except with simom's icon fix.
The previous diff was broken because some of the files were not added"
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 03:01:41 +0000 |
parents | 0b0ecee55091 |
children | 40a04930b233 |
rev | line source |
---|---|
14192 | 1 /** |
2 * @file msn.c The MSN protocol plugin | |
3 * | |
4 * gaim | |
5 * | |
6 * Gaim is the legal property of its developers, whose names are too numerous | |
7 * to list here. Please refer to the COPYRIGHT file distributed with this | |
8 * source distribution. | |
9 * | |
10 * This program is free software; you can redistribute it and/or modify | |
11 * it under the terms of the GNU General Public License as published by | |
12 * the Free Software Foundation; either version 2 of the License, or | |
13 * (at your option) any later version. | |
14 * | |
15 * This program is distributed in the hope that it will be useful, | |
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
19 * | |
20 * You should have received a copy of the GNU General Public License | |
21 * along with this program; if not, write to the Free Software | |
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
23 */ | |
24 #define PHOTO_SUPPORT 1 | |
25 | |
26 #include <glib.h> | |
27 | |
28 #include "msn.h" | |
29 #include "accountopt.h" | |
30 #include "msg.h" | |
31 #include "page.h" | |
32 #include "pluginpref.h" | |
33 #include "prefs.h" | |
34 #include "session.h" | |
35 #include "state.h" | |
36 #include "util.h" | |
37 #include "cmds.h" | |
38 #include "prpl.h" | |
20392
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
39 #include "msnutils.h" |
14192 | 40 #include "version.h" |
41 | |
42 #include "switchboard.h" | |
43 #include "notification.h" | |
44 #include "sync.h" | |
45 #include "slplink.h" | |
46 | |
47 #if PHOTO_SUPPORT | |
48 #include "imgstore.h" | |
49 #endif | |
50 | |
51 typedef struct | |
52 { | |
53 GaimConnection *gc; | |
54 const char *passport; | |
55 | |
56 } MsnMobileData; | |
57 | |
58 typedef struct | |
59 { | |
60 GaimConnection *gc; | |
61 char *name; | |
62 | |
63 } MsnGetInfoData; | |
64 | |
65 typedef struct | |
66 { | |
67 MsnGetInfoData *info_data; | |
68 char *stripped; | |
69 char *url_buffer; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
70 GaimNotifyUserInfo *user_info; |
14192 | 71 char *photo_url_text; |
72 | |
73 } MsnGetInfoStepTwoData; | |
74 | |
75 static const char * | |
76 msn_normalize(const GaimAccount *account, const char *str) | |
77 { | |
78 static char buf[BUF_LEN]; | |
79 char *tmp; | |
80 | |
81 g_return_val_if_fail(str != NULL, NULL); | |
82 | |
83 g_snprintf(buf, sizeof(buf), "%s%s", str, | |
84 (strchr(str, '@') ? "" : "@hotmail.com")); | |
85 | |
86 tmp = g_utf8_strdown(buf, -1); | |
87 strncpy(buf, tmp, sizeof(buf)); | |
88 g_free(tmp); | |
89 | |
90 return buf; | |
91 } | |
92 | |
93 static GaimCmdRet | |
94 msn_cmd_nudge(GaimConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data) | |
95 { | |
96 GaimAccount *account = gaim_conversation_get_account(conv); | |
97 GaimConnection *gc = gaim_account_get_connection(account); | |
98 MsnMessage *msg; | |
99 MsnSession *session; | |
100 MsnSwitchBoard *swboard; | |
101 | |
102 msg = msn_message_new_nudge(); | |
103 session = gc->proto_data; | |
104 swboard = msn_session_get_swboard(session, gaim_conversation_get_name(conv), MSN_SB_FLAG_IM); | |
105 | |
106 if (swboard == NULL) | |
107 return GAIM_CMD_RET_FAILED; | |
108 | |
109 msn_switchboard_send_msg(swboard, msg, TRUE); | |
110 | |
111 gaim_conversation_write(conv, NULL, _("You have just sent a Nudge!"), GAIM_MESSAGE_SYSTEM, time(NULL)); | |
112 | |
113 return GAIM_CMD_RET_OK; | |
114 } | |
115 | |
116 static void | |
117 msn_act_id(GaimConnection *gc, const char *entry) | |
118 { | |
119 MsnCmdProc *cmdproc; | |
120 MsnSession *session; | |
121 GaimAccount *account; | |
122 const char *alias; | |
123 | |
124 session = gc->proto_data; | |
125 cmdproc = session->notification->cmdproc; | |
126 account = gaim_connection_get_account(gc); | |
127 | |
128 if(entry && strlen(entry)) | |
129 alias = gaim_url_encode(entry); | |
130 else | |
131 alias = ""; | |
132 | |
133 if (strlen(alias) > BUDDY_ALIAS_MAXLEN) | |
134 { | |
135 gaim_notify_error(gc, NULL, | |
136 _("Your new MSN friendly name is too long."), NULL); | |
137 return; | |
138 } | |
139 | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
140 if (*alias != '\0') { |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
141 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
142 } else { |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
143 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
144 gaim_url_encode(gaim_account_get_username(account))); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
145 } |
14192 | 146 } |
147 | |
148 static void | |
149 msn_set_prp(GaimConnection *gc, const char *type, const char *entry) | |
150 { | |
151 MsnCmdProc *cmdproc; | |
152 MsnSession *session; | |
153 | |
154 session = gc->proto_data; | |
155 cmdproc = session->notification->cmdproc; | |
156 | |
157 if (entry == NULL || *entry == '\0') | |
158 { | |
159 msn_cmdproc_send(cmdproc, "PRP", "%s", type); | |
160 } | |
161 else | |
162 { | |
163 msn_cmdproc_send(cmdproc, "PRP", "%s %s", type, | |
164 gaim_url_encode(entry)); | |
165 } | |
166 } | |
167 | |
168 static void | |
169 msn_set_home_phone_cb(GaimConnection *gc, const char *entry) | |
170 { | |
171 msn_set_prp(gc, "PHH", entry); | |
172 } | |
173 | |
174 static void | |
175 msn_set_work_phone_cb(GaimConnection *gc, const char *entry) | |
176 { | |
177 msn_set_prp(gc, "PHW", entry); | |
178 } | |
179 | |
180 static void | |
181 msn_set_mobile_phone_cb(GaimConnection *gc, const char *entry) | |
182 { | |
183 msn_set_prp(gc, "PHM", entry); | |
184 } | |
185 | |
186 static void | |
187 enable_msn_pages_cb(GaimConnection *gc) | |
188 { | |
189 msn_set_prp(gc, "MOB", "Y"); | |
190 } | |
191 | |
192 static void | |
193 disable_msn_pages_cb(GaimConnection *gc) | |
194 { | |
195 msn_set_prp(gc, "MOB", "N"); | |
196 } | |
197 | |
198 static void | |
199 send_to_mobile(GaimConnection *gc, const char *who, const char *entry) | |
200 { | |
201 MsnTransaction *trans; | |
202 MsnSession *session; | |
203 MsnCmdProc *cmdproc; | |
204 MsnPage *page; | |
205 char *payload; | |
206 size_t payload_len; | |
207 | |
208 session = gc->proto_data; | |
209 cmdproc = session->notification->cmdproc; | |
210 | |
211 page = msn_page_new(); | |
212 msn_page_set_body(page, entry); | |
213 | |
214 payload = msn_page_gen_payload(page, &payload_len); | |
215 | |
216 trans = msn_transaction_new(cmdproc, "PGD", "%s 1 %d", who, payload_len); | |
217 | |
218 msn_transaction_set_payload(trans, payload, payload_len); | |
219 | |
220 msn_page_destroy(page); | |
221 | |
222 msn_cmdproc_send_trans(cmdproc, trans); | |
223 } | |
224 | |
225 static void | |
226 send_to_mobile_cb(MsnMobileData *data, const char *entry) | |
227 { | |
228 send_to_mobile(data->gc, data->passport, entry); | |
229 g_free(data); | |
230 } | |
231 | |
232 static void | |
233 close_mobile_page_cb(MsnMobileData *data, const char *entry) | |
234 { | |
235 g_free(data); | |
236 } | |
237 | |
238 /* -- */ | |
239 | |
240 static void | |
241 msn_show_set_friendly_name(GaimPluginAction *action) | |
242 { | |
243 GaimConnection *gc; | |
244 | |
245 gc = (GaimConnection *) action->context; | |
246 | |
247 gaim_request_input(gc, NULL, _("Set your friendly name."), | |
248 _("This is the name that other MSN buddies will " | |
249 "see you as."), | |
250 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL, | |
251 _("OK"), G_CALLBACK(msn_act_id), | |
252 _("Cancel"), NULL, gc); | |
253 } | |
254 | |
255 static void | |
256 msn_show_set_home_phone(GaimPluginAction *action) | |
257 { | |
258 GaimConnection *gc; | |
259 MsnSession *session; | |
260 | |
261 gc = (GaimConnection *) action->context; | |
262 session = gc->proto_data; | |
263 | |
264 gaim_request_input(gc, NULL, _("Set your home phone number."), NULL, | |
265 msn_user_get_home_phone(session->user), FALSE, FALSE, NULL, | |
266 _("OK"), G_CALLBACK(msn_set_home_phone_cb), | |
267 _("Cancel"), NULL, gc); | |
268 } | |
269 | |
270 static void | |
271 msn_show_set_work_phone(GaimPluginAction *action) | |
272 { | |
273 GaimConnection *gc; | |
274 MsnSession *session; | |
275 | |
276 gc = (GaimConnection *) action->context; | |
277 session = gc->proto_data; | |
278 | |
279 gaim_request_input(gc, NULL, _("Set your work phone number."), NULL, | |
280 msn_user_get_work_phone(session->user), FALSE, FALSE, NULL, | |
281 _("OK"), G_CALLBACK(msn_set_work_phone_cb), | |
282 _("Cancel"), NULL, gc); | |
283 } | |
284 | |
285 static void | |
286 msn_show_set_mobile_phone(GaimPluginAction *action) | |
287 { | |
288 GaimConnection *gc; | |
289 MsnSession *session; | |
290 | |
291 gc = (GaimConnection *) action->context; | |
292 session = gc->proto_data; | |
293 | |
294 gaim_request_input(gc, NULL, _("Set your mobile phone number."), NULL, | |
295 msn_user_get_mobile_phone(session->user), FALSE, FALSE, NULL, | |
296 _("OK"), G_CALLBACK(msn_set_mobile_phone_cb), | |
297 _("Cancel"), NULL, gc); | |
298 } | |
299 | |
300 static void | |
301 msn_show_set_mobile_pages(GaimPluginAction *action) | |
302 { | |
303 GaimConnection *gc; | |
304 | |
305 gc = (GaimConnection *) action->context; | |
306 | |
307 gaim_request_action(gc, NULL, _("Allow MSN Mobile pages?"), | |
308 _("Do you want to allow or disallow people on " | |
309 "your buddy list to send you MSN Mobile pages " | |
310 "to your cell phone or other mobile device?"), | |
311 -1, gc, 3, | |
312 _("Allow"), G_CALLBACK(enable_msn_pages_cb), | |
313 _("Disallow"), G_CALLBACK(disable_msn_pages_cb), | |
314 _("Cancel"), NULL); | |
315 } | |
316 | |
317 static void | |
318 msn_show_hotmail_inbox(GaimPluginAction *action) | |
319 { | |
320 GaimConnection *gc; | |
321 MsnSession *session; | |
322 | |
323 gc = (GaimConnection *) action->context; | |
324 session = gc->proto_data; | |
325 | |
326 if (session->passport_info.file == NULL) | |
327 { | |
328 gaim_notify_error(gc, NULL, | |
329 _("This Hotmail account may not be active."), NULL); | |
330 return; | |
331 } | |
332 | |
333 gaim_notify_uri(gc, session->passport_info.file); | |
334 } | |
335 | |
336 static void | |
337 show_send_to_mobile_cb(GaimBlistNode *node, gpointer ignored) | |
338 { | |
339 GaimBuddy *buddy; | |
340 GaimConnection *gc; | |
341 MsnSession *session; | |
342 MsnMobileData *data; | |
343 | |
344 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); | |
345 | |
346 buddy = (GaimBuddy *) node; | |
347 gc = gaim_account_get_connection(buddy->account); | |
348 | |
349 session = gc->proto_data; | |
350 | |
351 data = g_new0(MsnMobileData, 1); | |
352 data->gc = gc; | |
353 data->passport = buddy->name; | |
354 | |
355 gaim_request_input(gc, NULL, _("Send a mobile message."), NULL, | |
356 NULL, TRUE, FALSE, NULL, | |
357 _("Page"), G_CALLBACK(send_to_mobile_cb), | |
358 _("Close"), G_CALLBACK(close_mobile_page_cb), | |
359 data); | |
360 } | |
361 | |
362 static void | |
363 initiate_chat_cb(GaimBlistNode *node, gpointer data) | |
364 { | |
365 GaimBuddy *buddy; | |
366 GaimConnection *gc; | |
367 | |
368 MsnSession *session; | |
369 MsnSwitchBoard *swboard; | |
370 | |
371 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); | |
372 | |
373 buddy = (GaimBuddy *) node; | |
374 gc = gaim_account_get_connection(buddy->account); | |
375 | |
376 session = gc->proto_data; | |
377 | |
378 swboard = msn_switchboard_new(session); | |
379 msn_switchboard_request(swboard); | |
380 msn_switchboard_request_add_user(swboard, buddy->name); | |
381 | |
382 /* TODO: This might move somewhere else, after USR might be */ | |
383 swboard->chat_id = session->conv_seq++; | |
384 swboard->conv = serv_got_joined_chat(gc, swboard->chat_id, "MSN Chat"); | |
385 swboard->flag = MSN_SB_FLAG_IM; | |
386 | |
387 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), | |
388 gaim_account_get_username(buddy->account), NULL, GAIM_CBFLAGS_NONE, TRUE); | |
389 } | |
390 | |
391 static void | |
392 t_msn_xfer_init(GaimXfer *xfer) | |
393 { | |
394 MsnSlpLink *slplink; | |
395 const char *filename; | |
396 FILE *fp; | |
397 | |
398 filename = gaim_xfer_get_local_filename(xfer); | |
399 | |
400 slplink = xfer->data; | |
401 | |
402 if ((fp = g_fopen(filename, "rb")) == NULL) | |
403 { | |
404 GaimAccount *account; | |
405 const char *who; | |
406 char *msg; | |
407 | |
408 account = slplink->session->account; | |
409 who = slplink->remote_user; | |
410 | |
411 msg = g_strdup_printf(_("Error reading %s: \n%s.\n"), | |
412 filename, strerror(errno)); | |
413 gaim_xfer_error(gaim_xfer_get_type(xfer), account, xfer->who, msg); | |
414 gaim_xfer_cancel_local(xfer); | |
415 g_free(msg); | |
416 | |
417 return; | |
418 } | |
419 fclose(fp); | |
420 | |
421 msn_slplink_request_ft(slplink, xfer); | |
422 } | |
423 | |
424 static GaimXfer* | |
425 msn_new_xfer(GaimConnection *gc, const char *who) | |
426 { | |
427 MsnSession *session; | |
428 MsnSlpLink *slplink; | |
429 GaimXfer *xfer; | |
430 | |
431 session = gc->proto_data; | |
432 | |
433 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who); | |
20392
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
434 if (xfer) |
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
435 { |
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
436 slplink = msn_session_get_slplink(session, who); |
14192 | 437 |
20392
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
438 xfer->data = slplink; |
14192 | 439 |
20392
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
440 gaim_xfer_set_init_fnc(xfer, t_msn_xfer_init); |
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
441 } |
14192 | 442 |
443 return xfer; | |
444 } | |
445 | |
446 static void | |
447 msn_send_file(GaimConnection *gc, const char *who, const char *file) | |
448 { | |
449 GaimXfer *xfer = msn_new_xfer(gc, who); | |
450 | |
451 if (file) | |
452 gaim_xfer_request_accepted(xfer, file); | |
453 else | |
454 gaim_xfer_request(xfer); | |
455 } | |
456 | |
457 static gboolean | |
458 msn_can_receive_file(GaimConnection *gc, const char *who) | |
459 { | |
460 GaimAccount *account; | |
461 char *normal; | |
462 gboolean ret; | |
463 | |
464 account = gaim_connection_get_account(gc); | |
465 | |
466 normal = g_strdup(msn_normalize(account, gaim_account_get_username(account))); | |
467 | |
468 ret = strcmp(normal, msn_normalize(account, who)); | |
469 | |
470 g_free(normal); | |
471 | |
472 return ret; | |
473 } | |
474 | |
475 /************************************************************************** | |
476 * Protocol Plugin ops | |
477 **************************************************************************/ | |
478 | |
479 static const char * | |
480 msn_list_icon(GaimAccount *a, GaimBuddy *b) | |
481 { | |
482 return "msn"; | |
483 } | |
484 | |
485 static void | |
486 msn_list_emblems(GaimBuddy *b, const char **se, const char **sw, | |
487 const char **nw, const char **ne) | |
488 { | |
489 MsnUser *user; | |
490 GaimPresence *presence; | |
491 const char *emblems[4] = { NULL, NULL, NULL, NULL }; | |
492 int i = 0; | |
493 | |
494 user = b->proto_data; | |
495 presence = gaim_buddy_get_presence(b); | |
496 | |
497 if (!gaim_presence_is_online(presence)) | |
498 emblems[i++] = "offline"; | |
499 else if (gaim_presence_is_status_active(presence, "busy") || | |
500 gaim_presence_is_status_active(presence, "phone")) | |
501 emblems[i++] = "occupied"; | |
502 else if (!gaim_presence_is_available(presence)) | |
503 emblems[i++] = "away"; | |
504 | |
505 if (user == NULL) | |
506 { | |
507 emblems[0] = "offline"; | |
508 } | |
509 else | |
510 { | |
511 if (user->mobile) | |
512 emblems[i++] = "wireless"; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
513 if (!(user->list_op & (1 << MSN_LIST_RL))) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
514 emblems[i++] = "nr"; |
14192 | 515 } |
516 | |
517 *se = emblems[0]; | |
518 *sw = emblems[1]; | |
519 *nw = emblems[2]; | |
520 *ne = emblems[3]; | |
521 } | |
522 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
523 /* |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
524 * Set the User status text |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
525 * Add the PSM String Using "Name - PSM String" format |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
526 */ |
14192 | 527 static char * |
528 msn_status_text(GaimBuddy *buddy) | |
529 { | |
530 GaimPresence *presence; | |
531 GaimStatus *status; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
532 const char *msg, *name; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
533 char *psm_str, *tmp2, *text; |
14192 | 534 |
535 presence = gaim_buddy_get_presence(buddy); | |
536 status = gaim_presence_get_active_status(presence); | |
537 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
538 msg = gaim_status_get_attr_string(status, "message"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
539 if (!gaim_presence_is_available(presence) && !gaim_presence_is_idle(presence)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
540 name = gaim_status_get_name(status); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
541 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
542 name = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
543 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
544 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
545 if (msg != NULL) { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
546 tmp2 = gaim_markup_strip_html(msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
547 if (name){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
548 psm_str = g_strdup_printf("%s - %s", name, tmp2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
549 g_free(tmp2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
550 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
551 psm_str = tmp2; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
552 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
553 text = g_markup_escape_text(psm_str, -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
554 g_free(psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
555 return text; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
556 } else { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
557 if (!gaim_presence_is_available(presence) && !gaim_presence_is_idle(presence)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
558 psm_str = g_strdup(gaim_status_get_name(status)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
559 text = g_markup_escape_text(psm_str, -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
560 g_free(psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
561 return text; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
562 } |
14192 | 563 } |
564 | |
565 return NULL; | |
566 } | |
567 | |
568 static void | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
569 msn_tooltip_text(GaimBuddy *buddy, GaimNotifyUserInfo *user_info, gboolean full) |
14192 | 570 { |
571 MsnUser *user; | |
572 GaimPresence *presence = gaim_buddy_get_presence(buddy); | |
573 GaimStatus *status = gaim_presence_get_active_status(presence); | |
574 | |
575 user = buddy->proto_data; | |
576 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
577 |
14192 | 578 if (gaim_presence_is_online(presence)) |
579 { | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
580 char *psm; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
581 psm = msn_status_text(buddy); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
582 |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
583 gaim_notify_user_info_add_pair(user_info, _("Status"), |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
584 (gaim_presence_is_idle(presence) ? _("Idle") : gaim_status_get_name(status))); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
585 if (psm) { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
586 gaim_notify_user_info_add_pair(user_info, _("PSM"), psm); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
587 g_free(psm); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
588 } |
14192 | 589 } |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
590 |
14192 | 591 if (full && user) |
592 { | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
593 gaim_notify_user_info_add_pair(user_info, _("Has you"), |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
594 ((user->list_op & (1 << MSN_LIST_RL)) ? _("Yes") : _("No"))); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
595 } |
14192 | 596 |
597 /* XXX: This is being shown in non-full tooltips because the | |
598 * XXX: blocked icon overlay isn't always accurate for MSN. | |
599 * XXX: This can die as soon as gaim_privacy_check() knows that | |
600 * XXX: this prpl always honors both the allow and deny lists. */ | |
601 if (user) | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
602 { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
603 gaim_notify_user_info_add_pair(user_info, _("Blocked"), |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
604 ((user->list_op & (1 << MSN_LIST_BL)) ? _("Yes") : _("No"))); |
14192 | 605 } |
606 } | |
607 | |
608 static GList * | |
609 msn_status_types(GaimAccount *account) | |
610 { | |
611 GaimStatusType *status; | |
612 GList *types = NULL; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
613 #if 0 |
14192 | 614 status = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
615 NULL, NULL, FALSE, TRUE, FALSE); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
616 #endif |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
617 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
618 GAIM_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
619 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
620 NULL); |
14192 | 621 types = g_list_append(types, status); |
622 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
623 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
624 GAIM_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
625 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
626 NULL); |
14192 | 627 types = g_list_append(types, status); |
628 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
629 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
630 GAIM_STATUS_AWAY, "brb", _("Be Right Back"), TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
631 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
632 NULL); |
14192 | 633 types = g_list_append(types, status); |
634 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
635 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
636 GAIM_STATUS_AWAY, "busy", _("Busy"), TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
637 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
638 NULL); |
14192 | 639 types = g_list_append(types, status); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
640 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
641 GAIM_STATUS_AWAY, "phone", _("On the Phone"), TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
642 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
643 NULL); |
14192 | 644 types = g_list_append(types, status); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
645 status = gaim_status_type_new_with_attrs( |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
646 GAIM_STATUS_AWAY, "lunch", _("Out to Lunch"), TRUE, TRUE, FALSE, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
647 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
648 NULL); |
14192 | 649 types = g_list_append(types, status); |
650 | |
651 status = gaim_status_type_new_full(GAIM_STATUS_INVISIBLE, | |
652 NULL, NULL, FALSE, TRUE, FALSE); | |
653 types = g_list_append(types, status); | |
654 | |
655 status = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, | |
656 NULL, NULL, FALSE, TRUE, FALSE); | |
657 types = g_list_append(types, status); | |
658 | |
659 return types; | |
660 } | |
661 | |
662 static GList * | |
663 msn_actions(GaimPlugin *plugin, gpointer context) | |
664 { | |
665 GaimConnection *gc = (GaimConnection *)context; | |
666 GaimAccount *account; | |
667 const char *user; | |
668 | |
669 GList *m = NULL; | |
670 GaimPluginAction *act; | |
671 | |
672 act = gaim_plugin_action_new(_("Set Friendly Name..."), | |
673 msn_show_set_friendly_name); | |
674 m = g_list_append(m, act); | |
675 m = g_list_append(m, NULL); | |
676 | |
677 act = gaim_plugin_action_new(_("Set Home Phone Number..."), | |
678 msn_show_set_home_phone); | |
679 m = g_list_append(m, act); | |
680 | |
681 act = gaim_plugin_action_new(_("Set Work Phone Number..."), | |
682 msn_show_set_work_phone); | |
683 m = g_list_append(m, act); | |
684 | |
685 act = gaim_plugin_action_new(_("Set Mobile Phone Number..."), | |
686 msn_show_set_mobile_phone); | |
687 m = g_list_append(m, act); | |
688 m = g_list_append(m, NULL); | |
689 | |
690 #if 0 | |
691 act = gaim_plugin_action_new(_("Enable/Disable Mobile Devices..."), | |
692 msn_show_set_mobile_support); | |
693 m = g_list_append(m, act); | |
694 #endif | |
695 | |
696 act = gaim_plugin_action_new(_("Allow/Disallow Mobile Pages..."), | |
697 msn_show_set_mobile_pages); | |
698 m = g_list_append(m, act); | |
699 | |
700 account = gaim_connection_get_account(gc); | |
701 user = msn_normalize(account, gaim_account_get_username(account)); | |
702 | |
703 if (strstr(user, "@hotmail.com") != NULL) | |
704 { | |
705 m = g_list_append(m, NULL); | |
706 act = gaim_plugin_action_new(_("Open Hotmail Inbox"), | |
707 msn_show_hotmail_inbox); | |
708 m = g_list_append(m, act); | |
709 } | |
710 | |
711 return m; | |
712 } | |
713 | |
714 static GList * | |
715 msn_buddy_menu(GaimBuddy *buddy) | |
716 { | |
717 MsnUser *user; | |
718 | |
719 GList *m = NULL; | |
720 GaimMenuAction *act; | |
721 | |
722 g_return_val_if_fail(buddy != NULL, NULL); | |
723 | |
724 user = buddy->proto_data; | |
725 | |
726 if (user != NULL) | |
727 { | |
728 if (user->mobile) | |
729 { | |
730 act = gaim_menu_action_new(_("Send to Mobile"), | |
731 GAIM_CALLBACK(show_send_to_mobile_cb), | |
732 NULL, NULL); | |
733 m = g_list_append(m, act); | |
734 } | |
735 } | |
736 | |
737 if (g_ascii_strcasecmp(buddy->name, | |
738 gaim_account_get_username(buddy->account))) | |
739 { | |
740 act = gaim_menu_action_new(_("Initiate _Chat"), | |
741 GAIM_CALLBACK(initiate_chat_cb), | |
742 NULL, NULL); | |
743 m = g_list_append(m, act); | |
744 } | |
745 | |
746 return m; | |
747 } | |
748 | |
749 static GList * | |
750 msn_blist_node_menu(GaimBlistNode *node) | |
751 { | |
752 if(GAIM_BLIST_NODE_IS_BUDDY(node)) | |
753 { | |
754 return msn_buddy_menu((GaimBuddy *) node); | |
755 } | |
756 else | |
757 { | |
758 return NULL; | |
759 } | |
760 } | |
761 | |
762 static void | |
763 msn_login(GaimAccount *account) | |
764 { | |
765 GaimConnection *gc; | |
766 MsnSession *session; | |
767 const char *username; | |
768 const char *host; | |
769 gboolean http_method = FALSE; | |
770 int port; | |
771 | |
772 gc = gaim_account_get_connection(account); | |
773 | |
774 if (!gaim_ssl_is_supported()) | |
775 { | |
776 gc->wants_to_die = TRUE; | |
777 gaim_connection_error(gc, | |
778 _("SSL support is needed for MSN. Please install a supported " | |
779 "SSL library. See http://gaim.sf.net/faq-ssl.php for more " | |
780 "information.")); | |
781 | |
782 return; | |
783 } | |
784 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
785 if (gaim_account_get_bool(account, "http_method", FALSE)) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
786 http_method = TRUE; |
14192 | 787 |
788 host = gaim_account_get_string(account, "server", MSN_SERVER); | |
789 port = gaim_account_get_int(account, "port", MSN_PORT); | |
790 | |
791 session = msn_session_new(account); | |
792 | |
793 gc->proto_data = session; | |
794 gc->flags |= GAIM_CONNECTION_HTML | GAIM_CONNECTION_FORMATTING_WBFO | GAIM_CONNECTION_NO_BGCOLOR | GAIM_CONNECTION_NO_FONTSIZE | GAIM_CONNECTION_NO_URLDESC; | |
795 | |
796 msn_session_set_login_step(session, MSN_LOGIN_STEP_START); | |
797 | |
798 /* Hmm, I don't like this. */ | |
799 /* XXX shx: Me neither */ | |
800 username = msn_normalize(account, gaim_account_get_username(account)); | |
801 | |
802 if (strcmp(username, gaim_account_get_username(account))) | |
803 gaim_account_set_username(account, username); | |
804 | |
805 if (!msn_session_connect(session, host, port, http_method)) | |
806 gaim_connection_error(gc, _("Failed to connect to server.")); | |
807 } | |
808 | |
809 static void | |
810 msn_close(GaimConnection *gc) | |
811 { | |
812 MsnSession *session; | |
813 | |
814 session = gc->proto_data; | |
815 | |
816 g_return_if_fail(session != NULL); | |
817 | |
818 msn_session_destroy(session); | |
819 | |
820 gc->proto_data = NULL; | |
821 } | |
822 | |
823 static int | |
824 msn_send_im(GaimConnection *gc, const char *who, const char *message, | |
825 GaimMessageFlags flags) | |
826 { | |
827 GaimAccount *account; | |
828 MsnMessage *msg; | |
829 char *msgformat; | |
830 char *msgtext; | |
831 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
832 gaim_debug_info("MaYuan","send IM {%s} to %s\n",message,who); |
14192 | 833 account = gaim_connection_get_account(gc); |
834 | |
835 msn_import_html(message, &msgformat, &msgtext); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
836 if(msn_user_is_online(account, who)|| |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
837 msn_user_is_yahoo(account, who)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
838 /*User online,then send Online Instant Message*/ |
14192 | 839 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
840 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
841 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
842 g_free(msgformat); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
843 g_free(msgtext); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
844 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
845 return -E2BIG; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
846 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
847 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
848 msg = msn_message_new_plain(msgtext); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
849 msg->remote_user = g_strdup(who); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
850 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
851 |
14192 | 852 g_free(msgformat); |
853 g_free(msgtext); | |
854 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
855 gaim_debug_info("MaYuan","prepare to send online Message\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
856 if (g_ascii_strcasecmp(who, gaim_account_get_username(account))) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
857 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
858 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
859 MsnSwitchBoard *swboard; |
14192 | 860 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
861 session = gc->proto_data; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
862 if(msn_user_is_yahoo(account,who)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
863 /*we send the online and offline Message to Yahoo User via UBM*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
864 gaim_debug_info("MaYuan","send to Yahoo User\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
865 uum_send_msg(session,msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
866 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
867 gaim_debug_info("MaYuan","send via switchboard\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
868 swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
869 msn_switchboard_send_msg(swboard, msg, TRUE); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
870 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
871 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
872 else |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
873 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
874 char *body_str, *body_enc, *pre, *post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
875 const char *format; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
876 /* |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
877 * In MSN, you can't send messages to yourself, so |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
878 * we'll fake like we received it ;) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
879 */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
880 body_str = msn_message_to_string(msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
881 body_enc = g_markup_escape_text(body_str, -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
882 g_free(body_str); |
14192 | 883 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
884 format = msn_message_get_attr(msg, "X-MMS-IM-Format"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
885 msn_parse_format(format, &pre, &post); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
886 body_str = g_strdup_printf("%s%s%s", pre ? pre : "", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
887 body_enc ? body_enc : "", post ? post : ""); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
888 g_free(body_enc); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
889 g_free(pre); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
890 g_free(post); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
891 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
892 serv_got_typing_stopped(gc, who); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
893 serv_got_im(gc, who, body_str, flags, time(NULL)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
894 g_free(body_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
895 } |
14192 | 896 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
897 msn_message_destroy(msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
898 }else { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
899 /*send Offline Instant Message,only to MSN Passport User*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
900 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
901 MsnOim *oim; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
902 char *friendname; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
903 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
904 gaim_debug_info("MaYuan","prepare to send offline Message\n"); |
14192 | 905 session = gc->proto_data; |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
906 /* XXX/khc: hack */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
907 if (!session->oim) |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
908 session->oim = msn_oim_new(session); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
909 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
910 oim = session->oim; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
911 friendname = msn_encode_mime(account->username); |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
912 msn_oim_prep_send_msg_info(oim, gaim_account_get_username(account), |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20390
diff
changeset
|
913 friendname, who, message); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
914 msn_oim_send_msg(oim); |
14192 | 915 } |
916 return 1; | |
917 } | |
918 | |
919 static unsigned int | |
920 msn_send_typing(GaimConnection *gc, const char *who, GaimTypingState state) | |
921 { | |
922 GaimAccount *account; | |
923 MsnSession *session; | |
924 MsnSwitchBoard *swboard; | |
925 MsnMessage *msg; | |
926 | |
927 account = gaim_connection_get_account(gc); | |
928 session = gc->proto_data; | |
929 | |
930 /* | |
931 * TODO: I feel like this should be "if (state != GAIM_TYPING)" | |
932 * but this is how it was before, and I don't want to break | |
933 * anything. --KingAnt | |
934 */ | |
935 if (state == GAIM_NOT_TYPING) | |
936 return 0; | |
937 | |
938 if (!g_ascii_strcasecmp(who, gaim_account_get_username(account))) | |
939 { | |
940 /* We'll just fake it, since we're sending to ourself. */ | |
941 serv_got_typing(gc, who, MSN_TYPING_RECV_TIMEOUT, GAIM_TYPING); | |
942 | |
943 return MSN_TYPING_SEND_TIMEOUT; | |
944 } | |
945 | |
946 swboard = msn_session_find_swboard(session, who); | |
947 | |
948 if (swboard == NULL || !msn_switchboard_can_send(swboard)) | |
949 return 0; | |
950 | |
951 swboard->flag |= MSN_SB_FLAG_IM; | |
952 | |
953 msg = msn_message_new(MSN_MSG_TYPING); | |
954 msn_message_set_content_type(msg, "text/x-msmsgscontrol"); | |
955 msn_message_set_flag(msg, 'U'); | |
956 msn_message_set_attr(msg, "TypingUser", | |
957 gaim_account_get_username(account)); | |
958 msn_message_set_bin_data(msg, "\r\n", 2); | |
959 | |
960 msn_switchboard_send_msg(swboard, msg, FALSE); | |
961 | |
962 msn_message_destroy(msg); | |
963 | |
964 return MSN_TYPING_SEND_TIMEOUT; | |
965 } | |
966 | |
967 static void | |
968 msn_set_status(GaimAccount *account, GaimStatus *status) | |
969 { | |
970 GaimConnection *gc; | |
971 MsnSession *session; | |
972 | |
973 gc = gaim_account_get_connection(account); | |
974 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
975 if (gc != NULL){ |
14192 | 976 session = gc->proto_data; |
977 msn_change_status(session); | |
978 } | |
979 } | |
980 | |
981 static void | |
982 msn_set_idle(GaimConnection *gc, int idle) | |
983 { | |
984 MsnSession *session; | |
985 | |
986 session = gc->proto_data; | |
987 | |
988 msn_change_status(session); | |
989 } | |
990 | |
991 #if 0 | |
992 static void | |
993 fake_userlist_add_buddy(MsnUserList *userlist, | |
994 const char *who, int list_id, | |
995 const char *group_name) | |
996 { | |
997 MsnUser *user; | |
998 static int group_id_c = 1; | |
999 int group_id; | |
1000 | |
1001 group_id = -1; | |
1002 | |
1003 if (group_name != NULL) | |
1004 { | |
1005 MsnGroup *group; | |
1006 group = msn_group_new(userlist, group_id_c, group_name); | |
1007 group_id = group_id_c++; | |
1008 } | |
1009 | |
1010 user = msn_userlist_find_user(userlist, who); | |
1011 | |
1012 if (user == NULL) | |
1013 { | |
1014 user = msn_user_new(userlist, who, NULL); | |
1015 msn_userlist_add_user(userlist, user); | |
1016 } | |
1017 else | |
1018 if (user->list_op & (1 << list_id)) | |
1019 { | |
1020 if (list_id == MSN_LIST_FL) | |
1021 { | |
1022 if (group_id >= 0) | |
1023 if (g_list_find(user->group_ids, | |
1024 GINT_TO_POINTER(group_id))) | |
1025 return; | |
1026 } | |
1027 else | |
1028 return; | |
1029 } | |
1030 | |
1031 if (group_id >= 0) | |
1032 { | |
1033 user->group_ids = g_list_append(user->group_ids, | |
1034 GINT_TO_POINTER(group_id)); | |
1035 } | |
1036 | |
1037 user->list_op |= (1 << list_id); | |
1038 } | |
1039 #endif | |
1040 | |
1041 static void | |
1042 msn_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) | |
1043 { | |
1044 MsnSession *session; | |
1045 MsnUserList *userlist; | |
1046 const char *who; | |
1047 | |
1048 session = gc->proto_data; | |
1049 userlist = session->userlist; | |
1050 who = msn_normalize(gc->account, buddy->name); | |
1051 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1052 gaim_debug_info("MaYuan","add user:{%s} to group:{%s}\n",who,group->name); |
14192 | 1053 if (!session->logged_in) |
1054 { | |
1055 #if 0 | |
1056 fake_userlist_add_buddy(session->sync_userlist, who, MSN_LIST_FL, | |
1057 group ? group->name : NULL); | |
1058 #else | |
1059 gaim_debug_error("msn", "msn_add_buddy called before connected\n"); | |
1060 #endif | |
1061 | |
1062 return; | |
1063 } | |
1064 | |
1065 #if 0 | |
1066 if (group != NULL && group->name != NULL) | |
1067 gaim_debug_info("msn", "msn_add_buddy: %s, %s\n", who, group->name); | |
1068 else | |
1069 gaim_debug_info("msn", "msn_add_buddy: %s\n", who); | |
1070 #endif | |
1071 | |
1072 #if 0 | |
1073 /* Which is the max? */ | |
1074 if (session->fl_users_count >= 150) | |
1075 { | |
1076 gaim_debug_info("msn", "Too many buddies\n"); | |
1077 /* Buddy list full */ | |
1078 /* TODO: gaim should be notified of this */ | |
1079 return; | |
1080 } | |
1081 #endif | |
1082 | |
1083 /* XXX - Would group ever be NULL here? I don't think so... | |
1084 * shx: Yes it should; MSN handles non-grouped buddies, and this is only | |
1085 * internal. */ | |
1086 msn_userlist_add_buddy(userlist, who, MSN_LIST_FL, | |
1087 group ? group->name : NULL); | |
1088 } | |
1089 | |
1090 static void | |
1091 msn_rem_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) | |
1092 { | |
1093 MsnSession *session; | |
1094 MsnUserList *userlist; | |
1095 | |
1096 session = gc->proto_data; | |
1097 userlist = session->userlist; | |
1098 | |
1099 if (!session->logged_in) | |
1100 return; | |
1101 | |
1102 /* XXX - Does buddy->name need to be msn_normalize'd here? --KingAnt */ | |
1103 msn_userlist_rem_buddy(userlist, buddy->name, MSN_LIST_FL, group->name); | |
1104 } | |
1105 | |
1106 static void | |
1107 msn_add_permit(GaimConnection *gc, const char *who) | |
1108 { | |
1109 MsnSession *session; | |
1110 MsnUserList *userlist; | |
1111 MsnUser *user; | |
1112 | |
1113 session = gc->proto_data; | |
1114 userlist = session->userlist; | |
1115 user = msn_userlist_find_user(userlist, who); | |
1116 | |
1117 if (!session->logged_in) | |
1118 return; | |
1119 | |
1120 if (user != NULL && user->list_op & MSN_LIST_BL_OP) | |
1121 msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL); | |
1122 | |
1123 msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL); | |
1124 } | |
1125 | |
1126 static void | |
1127 msn_add_deny(GaimConnection *gc, const char *who) | |
1128 { | |
1129 MsnSession *session; | |
1130 MsnUserList *userlist; | |
1131 MsnUser *user; | |
1132 | |
1133 session = gc->proto_data; | |
1134 userlist = session->userlist; | |
1135 user = msn_userlist_find_user(userlist, who); | |
1136 | |
1137 if (!session->logged_in) | |
1138 return; | |
1139 | |
1140 if (user != NULL && user->list_op & MSN_LIST_AL_OP) | |
1141 msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL); | |
1142 | |
1143 msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL); | |
1144 } | |
1145 | |
1146 static void | |
1147 msn_rem_permit(GaimConnection *gc, const char *who) | |
1148 { | |
1149 MsnSession *session; | |
1150 MsnUserList *userlist; | |
1151 MsnUser *user; | |
1152 | |
1153 session = gc->proto_data; | |
1154 userlist = session->userlist; | |
1155 | |
1156 if (!session->logged_in) | |
1157 return; | |
1158 | |
1159 user = msn_userlist_find_user(userlist, who); | |
1160 | |
1161 msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL); | |
1162 | |
1163 if (user != NULL && user->list_op & MSN_LIST_RL_OP) | |
1164 msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL); | |
1165 } | |
1166 | |
1167 static void | |
1168 msn_rem_deny(GaimConnection *gc, const char *who) | |
1169 { | |
1170 MsnSession *session; | |
1171 MsnUserList *userlist; | |
1172 MsnUser *user; | |
1173 | |
1174 session = gc->proto_data; | |
1175 userlist = session->userlist; | |
1176 | |
1177 if (!session->logged_in) | |
1178 return; | |
1179 | |
1180 user = msn_userlist_find_user(userlist, who); | |
1181 | |
1182 msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL); | |
1183 | |
1184 if (user != NULL && user->list_op & MSN_LIST_RL_OP) | |
1185 msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL); | |
1186 } | |
1187 | |
1188 static void | |
1189 msn_set_permit_deny(GaimConnection *gc) | |
1190 { | |
1191 GaimAccount *account; | |
1192 MsnSession *session; | |
1193 MsnCmdProc *cmdproc; | |
1194 | |
1195 account = gaim_connection_get_account(gc); | |
1196 session = gc->proto_data; | |
1197 cmdproc = session->notification->cmdproc; | |
1198 | |
1199 if (account->perm_deny == GAIM_PRIVACY_ALLOW_ALL || | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1200 account->perm_deny == GAIM_PRIVACY_DENY_USERS){ |
14192 | 1201 msn_cmdproc_send(cmdproc, "BLP", "%s", "AL"); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1202 }else{ |
14192 | 1203 msn_cmdproc_send(cmdproc, "BLP", "%s", "BL"); |
1204 } | |
1205 } | |
1206 | |
1207 static void | |
1208 msn_chat_invite(GaimConnection *gc, int id, const char *msg, | |
1209 const char *who) | |
1210 { | |
1211 MsnSession *session; | |
1212 MsnSwitchBoard *swboard; | |
1213 | |
1214 session = gc->proto_data; | |
1215 | |
1216 swboard = msn_session_find_swboard_with_id(session, id); | |
1217 | |
1218 if (swboard == NULL) | |
1219 { | |
1220 /* if we have no switchboard, everyone else left the chat already */ | |
1221 swboard = msn_switchboard_new(session); | |
1222 msn_switchboard_request(swboard); | |
1223 swboard->chat_id = id; | |
1224 swboard->conv = gaim_find_chat(gc, id); | |
1225 } | |
1226 | |
1227 swboard->flag |= MSN_SB_FLAG_IM; | |
1228 | |
1229 msn_switchboard_request_add_user(swboard, who); | |
1230 } | |
1231 | |
1232 static void | |
1233 msn_chat_leave(GaimConnection *gc, int id) | |
1234 { | |
1235 MsnSession *session; | |
1236 MsnSwitchBoard *swboard; | |
1237 GaimConversation *conv; | |
1238 | |
1239 session = gc->proto_data; | |
1240 | |
1241 swboard = msn_session_find_swboard_with_id(session, id); | |
1242 | |
1243 /* if swboard is NULL we were the only person left anyway */ | |
1244 if (swboard == NULL) | |
1245 return; | |
1246 | |
1247 conv = swboard->conv; | |
1248 | |
1249 msn_switchboard_release(swboard, MSN_SB_FLAG_IM); | |
1250 | |
1251 /* If other switchboards managed to associate themselves with this | |
1252 * conv, make sure they know it's gone! */ | |
1253 if (conv != NULL) | |
1254 { | |
1255 while ((swboard = msn_session_find_swboard_with_conv(session, conv)) != NULL) | |
1256 swboard->conv = NULL; | |
1257 } | |
1258 } | |
1259 | |
1260 static int | |
1261 msn_chat_send(GaimConnection *gc, int id, const char *message, GaimMessageFlags flags) | |
1262 { | |
1263 GaimAccount *account; | |
1264 MsnSession *session; | |
1265 MsnSwitchBoard *swboard; | |
1266 MsnMessage *msg; | |
1267 char *msgformat; | |
1268 char *msgtext; | |
1269 | |
1270 account = gaim_connection_get_account(gc); | |
1271 session = gc->proto_data; | |
1272 swboard = msn_session_find_swboard_with_id(session, id); | |
1273 | |
1274 if (swboard == NULL) | |
1275 return -EINVAL; | |
1276 | |
1277 if (!swboard->ready) | |
1278 return 0; | |
1279 | |
1280 swboard->flag |= MSN_SB_FLAG_IM; | |
1281 | |
1282 msn_import_html(message, &msgformat, &msgtext); | |
1283 | |
1284 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) | |
1285 { | |
1286 g_free(msgformat); | |
1287 g_free(msgtext); | |
1288 | |
1289 return -E2BIG; | |
1290 } | |
1291 | |
1292 msg = msn_message_new_plain(msgtext); | |
1293 msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat); | |
1294 msn_switchboard_send_msg(swboard, msg, FALSE); | |
1295 msn_message_destroy(msg); | |
1296 | |
1297 g_free(msgformat); | |
1298 g_free(msgtext); | |
1299 | |
1300 serv_got_chat_in(gc, id, gaim_account_get_username(account), 0, | |
1301 message, time(NULL)); | |
1302 | |
1303 return 0; | |
1304 } | |
1305 | |
1306 static void | |
1307 msn_keepalive(GaimConnection *gc) | |
1308 { | |
1309 MsnSession *session; | |
1310 | |
1311 session = gc->proto_data; | |
1312 | |
1313 if (!session->http_method) | |
1314 { | |
1315 MsnCmdProc *cmdproc; | |
1316 | |
1317 cmdproc = session->notification->cmdproc; | |
1318 | |
1319 msn_cmdproc_send_quick(cmdproc, "PNG", NULL, NULL); | |
1320 } | |
1321 } | |
1322 | |
1323 static void | |
1324 msn_group_buddy(GaimConnection *gc, const char *who, | |
1325 const char *old_group_name, const char *new_group_name) | |
1326 { | |
1327 MsnSession *session; | |
1328 MsnUserList *userlist; | |
1329 | |
1330 session = gc->proto_data; | |
1331 userlist = session->userlist; | |
1332 | |
1333 msn_userlist_move_buddy(userlist, who, old_group_name, new_group_name); | |
1334 } | |
1335 | |
1336 static void | |
1337 msn_rename_group(GaimConnection *gc, const char *old_name, | |
1338 GaimGroup *group, GList *moved_buddies) | |
1339 { | |
1340 MsnSession *session; | |
1341 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1342 const char *old_gid; |
14192 | 1343 const char *enc_new_group_name; |
1344 | |
1345 session = gc->proto_data; | |
1346 cmdproc = session->notification->cmdproc; | |
1347 enc_new_group_name = gaim_url_encode(group->name); | |
1348 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1349 gaim_debug_info("MaYuan","rename group:old{%s},new{%s}",old_name,enc_new_group_name); |
14192 | 1350 old_gid = msn_userlist_find_group_id(session->userlist, old_name); |
1351 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1352 if (old_gid != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1353 /*find a Group*/ |
14192 | 1354 msn_cmdproc_send(cmdproc, "REG", "%d %s 0", old_gid, |
1355 enc_new_group_name); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1356 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1357 /*not found*/ |
14192 | 1358 msn_cmdproc_send(cmdproc, "ADG", "%s 0", enc_new_group_name); |
1359 } | |
1360 } | |
1361 | |
1362 static void | |
1363 msn_convo_closed(GaimConnection *gc, const char *who) | |
1364 { | |
1365 MsnSession *session; | |
1366 MsnSwitchBoard *swboard; | |
1367 GaimConversation *conv; | |
1368 | |
1369 session = gc->proto_data; | |
1370 | |
1371 swboard = msn_session_find_swboard(session, who); | |
1372 | |
1373 /* | |
1374 * Don't perform an assertion here. If swboard is NULL, then the | |
1375 * switchboard was either closed by the other party, or the person | |
1376 * is talking to himself. | |
1377 */ | |
1378 if (swboard == NULL) | |
1379 return; | |
1380 | |
1381 conv = swboard->conv; | |
1382 | |
1383 msn_switchboard_release(swboard, MSN_SB_FLAG_IM); | |
1384 | |
1385 /* If other switchboards managed to associate themselves with this | |
1386 * conv, make sure they know it's gone! */ | |
1387 if (conv != NULL) | |
1388 { | |
1389 while ((swboard = msn_session_find_swboard_with_conv(session, conv)) != NULL) | |
1390 swboard->conv = NULL; | |
1391 } | |
1392 } | |
1393 | |
1394 static void | |
1395 msn_set_buddy_icon(GaimConnection *gc, const char *filename) | |
1396 { | |
1397 MsnSession *session; | |
1398 MsnUser *user; | |
1399 | |
1400 session = gc->proto_data; | |
1401 user = session->user; | |
1402 | |
1403 msn_user_set_buddy_icon(user, filename); | |
1404 | |
1405 msn_change_status(session); | |
1406 } | |
1407 | |
1408 static void | |
1409 msn_remove_group(GaimConnection *gc, GaimGroup *group) | |
1410 { | |
1411 MsnSession *session; | |
1412 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1413 const char *group_id; |
14192 | 1414 |
1415 session = gc->proto_data; | |
1416 cmdproc = session->notification->cmdproc; | |
1417 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1418 /*we can't delete the default group*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1419 if(!strcmp(group->name,MSN_INDIVIDUALS_GROUP_NAME)|| |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1420 !strcmp(group->name,MSN_NON_IM_GROUP_NAME)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1421 return ; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1422 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1423 group_id = msn_userlist_find_group_id(session->userlist, group->name); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1424 if (group_id != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1425 msn_del_group(session,group_id); |
14192 | 1426 } |
1427 } | |
1428 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1429 /** |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1430 * Extract info text from info_data and add it to user_info |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1431 */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1432 static gboolean |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1433 msn_tooltip_extract_info_text(GaimNotifyUserInfo *user_info, MsnGetInfoData *info_data) |
14192 | 1434 { |
1435 GaimBuddy *b; | |
1436 | |
1437 b = gaim_find_buddy(gaim_connection_get_account(info_data->gc), | |
1438 info_data->name); | |
1439 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1440 if (b){ |
14192 | 1441 char *tmp; |
1442 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1443 if (b->alias && b->alias[0]){ |
14192 | 1444 char *aliastext = g_markup_escape_text(b->alias, -1); |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1445 gaim_notify_user_info_add_pair(user_info, _("Alias"), aliastext); |
14192 | 1446 g_free(aliastext); |
1447 } | |
1448 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1449 if (b->server_alias){ |
14192 | 1450 char *nicktext = g_markup_escape_text(b->server_alias, -1); |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1451 tmp = g_strdup_printf("<font sml=\"msn\">%s</font><br>", nicktext); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1452 gaim_notify_user_info_add_pair(user_info, _("Nickname"), tmp); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1453 g_free(tmp); |
14192 | 1454 g_free(nicktext); |
1455 } | |
1456 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1457 /* Add the tooltip information */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1458 msn_tooltip_text(b, user_info, TRUE); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1459 |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1460 return TRUE; |
14192 | 1461 } |
1462 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1463 return FALSE; |
14192 | 1464 } |
1465 | |
1466 #if PHOTO_SUPPORT | |
1467 | |
1468 static char * | |
1469 msn_get_photo_url(const char *url_text) | |
1470 { | |
1471 char *p, *q; | |
1472 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1473 if ((p = strstr(url_text, PHOTO_URL)) != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1474 p += strlen(PHOTO_URL); |
14192 | 1475 } |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1476 if (p && (strncmp(p, "http://",strlen("http://")) == 0) && ((q = strchr(p, '"')) != NULL)) |
14192 | 1477 return g_strndup(p, q - p); |
1478 | |
1479 return NULL; | |
1480 } | |
1481 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1482 static void msn_got_photo(GaimUtilFetchUrlData *url_data, gpointer data, |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1483 const gchar *url_text, size_t len, const gchar *error_message); |
14192 | 1484 |
1485 #endif | |
1486 | |
1487 #if 0 | |
1488 static char *msn_info_date_reformat(const char *field, size_t len) | |
1489 { | |
1490 char *tmp = g_strndup(field, len); | |
1491 time_t t = gaim_str_to_time(tmp, FALSE, NULL, NULL, NULL); | |
1492 | |
1493 g_free(tmp); | |
1494 return g_strdup(gaim_date_format_short(localtime(&t))); | |
1495 } | |
1496 #endif | |
1497 | |
1498 #define MSN_GOT_INFO_GET_FIELD(a, b) \ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1499 found = gaim_markup_extract_info_field(stripped, stripped_len, user_info, \ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1500 "\n" a ":", 0, "\n", 0, "Undisclosed", b, 0, NULL, NULL); \ |
14192 | 1501 if (found) \ |
1502 sect_info = TRUE; | |
1503 | |
1504 static void | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1505 msn_got_info(GaimUtilFetchUrlData *url_data, gpointer data, |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1506 const gchar *url_text, size_t len, const gchar *error_message) |
14192 | 1507 { |
1508 MsnGetInfoData *info_data = (MsnGetInfoData *)data; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1509 GaimNotifyUserInfo *user_info; |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1510 char *stripped, *p, *q, *tmp; |
14192 | 1511 char *user_url = NULL; |
1512 gboolean found; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1513 gboolean has_tooltip_text = FALSE; |
14192 | 1514 gboolean has_info = FALSE; |
1515 gboolean sect_info = FALSE; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1516 gboolean has_contact_info = FALSE; |
14192 | 1517 char *url_buffer; |
1518 GString *s, *s2; | |
1519 int stripped_len; | |
1520 #if PHOTO_SUPPORT | |
1521 char *photo_url_text = NULL; | |
1522 MsnGetInfoStepTwoData *info2_data = NULL; | |
1523 #endif | |
1524 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1525 gaim_debug_info("msn", "In msn_got_info,url_text:{%s}\n",url_text); |
14192 | 1526 |
1527 /* Make sure the connection is still valid */ | |
1528 if (g_list_find(gaim_connections_get_all(), info_data->gc) == NULL) | |
1529 { | |
1530 gaim_debug_warning("msn", "invalid connection. ignoring buddy info.\n"); | |
1531 g_free(info_data->name); | |
1532 g_free(info_data); | |
1533 return; | |
1534 } | |
1535 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1536 user_info = gaim_notify_user_info_new(); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1537 has_tooltip_text = msn_tooltip_extract_info_text(user_info, info_data); |
14192 | 1538 |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1539 if (error_message != NULL || url_text == NULL || strcmp(url_text, "") == 0) |
14192 | 1540 { |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1541 tmp = g_strdup_printf("<b>%s</b>", _("Error retrieving profile")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1542 gaim_notify_user_info_add_pair(user_info, NULL, tmp); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1543 g_free(tmp); |
14192 | 1544 |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1545 gaim_notify_userinfo(info_data->gc, info_data->name, user_info, NULL, NULL); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1546 gaim_notify_user_info_destroy(user_info); |
14192 | 1547 |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1548 g_free(info_data->name); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1549 g_free(info_data); |
14192 | 1550 return; |
1551 } | |
1552 | |
1553 url_buffer = g_strdup(url_text); | |
1554 | |
1555 /* If they have a homepage link, MSN masks it such that we need to | |
1556 * fetch the url out before gaim_markup_strip_html() nukes it */ | |
1557 /* I don't think this works with the new spaces profiles - Stu 3/2/06 */ | |
1558 if ((p = strstr(url_text, | |
1559 "Take a look at my </font><A class=viewDesc title=\"")) != NULL) | |
1560 { | |
1561 p += 50; | |
1562 | |
1563 if ((q = strchr(p, '"')) != NULL) | |
1564 user_url = g_strndup(p, q - p); | |
1565 } | |
1566 | |
1567 /* | |
1568 * gaim_markup_strip_html() doesn't strip out character entities like | |
1569 * and · | |
1570 */ | |
1571 while ((p = strstr(url_buffer, " ")) != NULL) | |
1572 { | |
1573 *p = ' '; /* Turn 's into ordinary blanks */ | |
1574 p += 1; | |
1575 memmove(p, p + 5, strlen(p + 5)); | |
1576 url_buffer[strlen(url_buffer) - 5] = '\0'; | |
1577 } | |
1578 | |
1579 while ((p = strstr(url_buffer, "·")) != NULL) | |
1580 { | |
1581 memmove(p, p + 6, strlen(p + 6)); | |
1582 url_buffer[strlen(url_buffer) - 6] = '\0'; | |
1583 } | |
1584 | |
1585 /* Nuke the nasty \r's that just get in the way */ | |
1586 gaim_str_strip_char(url_buffer, '\r'); | |
1587 | |
1588 /* MSN always puts in ' for apostrophes...replace them */ | |
1589 while ((p = strstr(url_buffer, "'")) != NULL) | |
1590 { | |
1591 *p = '\''; | |
1592 memmove(p + 1, p + 5, strlen(p + 5)); | |
1593 url_buffer[strlen(url_buffer) - 4] = '\0'; | |
1594 } | |
1595 | |
1596 /* Nuke the html, it's easier than trying to parse the horrid stuff */ | |
1597 stripped = gaim_markup_strip_html(url_buffer); | |
1598 stripped_len = strlen(stripped); | |
1599 | |
1600 gaim_debug_misc("msn", "stripped = %p\n", stripped); | |
1601 gaim_debug_misc("msn", "url_buffer = %p\n", url_buffer); | |
1602 | |
1603 /* Gonna re-use the memory we've already got for url_buffer */ | |
1604 /* No we're not. */ | |
1605 s = g_string_sized_new(strlen(url_buffer)); | |
1606 s2 = g_string_sized_new(strlen(url_buffer)); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1607 |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1608 /* General section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1609 if (has_tooltip_text) |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1610 gaim_notify_user_info_add_section_break(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1611 |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1612 gaim_notify_user_info_add_section_header(user_info, _("General")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1613 |
14192 | 1614 /* Extract their Name and put it in */ |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1615 MSN_GOT_INFO_GET_FIELD("Name", _("Name")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1616 |
14192 | 1617 /* General */ |
1618 MSN_GOT_INFO_GET_FIELD("Nickname", _("Nickname")); | |
1619 MSN_GOT_INFO_GET_FIELD("Age", _("Age")); | |
1620 MSN_GOT_INFO_GET_FIELD("Gender", _("Gender")); | |
1621 MSN_GOT_INFO_GET_FIELD("Occupation", _("Occupation")); | |
1622 MSN_GOT_INFO_GET_FIELD("Location", _("Location")); | |
1623 | |
1624 /* Extract their Interests and put it in */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1625 found = gaim_markup_extract_info_field(stripped, stripped_len, user_info, |
14192 | 1626 "\nInterests\t", 0, " (/default.aspx?page=searchresults", 0, |
1627 "Undisclosed", _("Hobbies and Interests") /* _("Interests") */, | |
1628 0, NULL, NULL); | |
1629 | |
1630 if (found) | |
1631 sect_info = TRUE; | |
1632 | |
1633 MSN_GOT_INFO_GET_FIELD("More about me", _("A Little About Me")); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1634 |
14192 | 1635 if (sect_info) |
1636 { | |
1637 has_info = TRUE; | |
1638 sect_info = FALSE; | |
1639 } | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1640 else |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1641 { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1642 /* Remove the section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1643 gaim_notify_user_info_remove_last_item(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1644 if (has_tooltip_text) |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1645 gaim_notify_user_info_remove_last_item(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1646 } |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1647 |
14192 | 1648 /* Social */ |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1649 gaim_notify_user_info_add_section_break(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1650 gaim_notify_user_info_add_section_header(user_info, _("Social")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1651 |
14192 | 1652 MSN_GOT_INFO_GET_FIELD("Marital status", _("Marital Status")); |
1653 MSN_GOT_INFO_GET_FIELD("Interested in", _("Interests")); | |
1654 MSN_GOT_INFO_GET_FIELD("Pets", _("Pets")); | |
1655 MSN_GOT_INFO_GET_FIELD("Hometown", _("Hometown")); | |
1656 MSN_GOT_INFO_GET_FIELD("Places lived", _("Places Lived")); | |
1657 MSN_GOT_INFO_GET_FIELD("Fashion", _("Fashion")); | |
1658 MSN_GOT_INFO_GET_FIELD("Humor", _("Humor")); | |
1659 MSN_GOT_INFO_GET_FIELD("Music", _("Music")); | |
1660 MSN_GOT_INFO_GET_FIELD("Favorite quote", _("Favorite Quote")); | |
1661 | |
1662 if (sect_info) | |
1663 { | |
1664 has_info = TRUE; | |
1665 sect_info = FALSE; | |
1666 } | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1667 else |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1668 { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1669 /* Remove the section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1670 gaim_notify_user_info_remove_last_item(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1671 gaim_notify_user_info_remove_last_item(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1672 } |
14192 | 1673 |
1674 /* Contact Info */ | |
1675 /* Personal */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1676 gaim_notify_user_info_add_section_break(user_info); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1677 gaim_notify_user_info_add_section_header(user_info, _("Contact Info")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1678 gaim_notify_user_info_add_section_header(user_info, _("Personal")); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1679 |
14192 | 1680 MSN_GOT_INFO_GET_FIELD("Name", _("Name")); |
1681 MSN_GOT_INFO_GET_FIELD("Significant other", _("Significant Other")); | |
1682 MSN_GOT_INFO_GET_FIELD("Home phone", _("Home Phone")); | |
1683 MSN_GOT_INFO_GET_FIELD("Home phone 2", _("Home Phone 2")); | |
1684 MSN_GOT_INFO_GET_FIELD("Home address", _("Home Address")); | |
1685 MSN_GOT_INFO_GET_FIELD("Personal Mobile", _("Personal Mobile")); | |
1686 MSN_GOT_INFO_GET_FIELD("Home fax", _("Home Fax")); | |
1687 MSN_GOT_INFO_GET_FIELD("Personal e-mail", _("Personal E-Mail")); | |
1688 MSN_GOT_INFO_GET_FIELD("Personal IM", _("Personal IM")); | |
1689 MSN_GOT_INFO_GET_FIELD("Birthday", _("Birthday")); | |
1690 MSN_GOT_INFO_GET_FIELD("Anniversary", _("Anniversary")); | |
1691 MSN_GOT_INFO_GET_FIELD("Notes", _("Notes")); | |
1692 | |
1693 if (sect_info) | |
1694 { | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1695 has_info = TRUE; |
14192 | 1696 sect_info = FALSE; |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1697 has_contact_info = TRUE; |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1698 } |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1699 else |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1700 { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1701 /* Remove the section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1702 gaim_notify_user_info_remove_last_item(user_info); |
14192 | 1703 } |
1704 | |
1705 /* Business */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1706 gaim_notify_user_info_add_section_header(user_info, _("Work")); |
14192 | 1707 MSN_GOT_INFO_GET_FIELD("Name", _("Name")); |
1708 MSN_GOT_INFO_GET_FIELD("Job title", _("Job Title")); | |
1709 MSN_GOT_INFO_GET_FIELD("Company", _("Company")); | |
1710 MSN_GOT_INFO_GET_FIELD("Department", _("Department")); | |
1711 MSN_GOT_INFO_GET_FIELD("Profession", _("Profession")); | |
1712 MSN_GOT_INFO_GET_FIELD("Work phone 1", _("Work Phone")); | |
1713 MSN_GOT_INFO_GET_FIELD("Work phone 2", _("Work Phone 2")); | |
1714 MSN_GOT_INFO_GET_FIELD("Work address", _("Work Address")); | |
1715 MSN_GOT_INFO_GET_FIELD("Work mobile", _("Work Mobile")); | |
1716 MSN_GOT_INFO_GET_FIELD("Work pager", _("Work Pager")); | |
1717 MSN_GOT_INFO_GET_FIELD("Work fax", _("Work Fax")); | |
1718 MSN_GOT_INFO_GET_FIELD("Work e-mail", _("Work E-Mail")); | |
1719 MSN_GOT_INFO_GET_FIELD("Work IM", _("Work IM")); | |
1720 MSN_GOT_INFO_GET_FIELD("Start date", _("Start Date")); | |
1721 MSN_GOT_INFO_GET_FIELD("Notes", _("Notes")); | |
1722 | |
1723 if (sect_info) | |
1724 { | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1725 has_info = TRUE; |
14192 | 1726 sect_info = FALSE; |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1727 has_contact_info = TRUE; |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1728 } |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1729 else |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1730 { |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1731 /* Remove the section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1732 gaim_notify_user_info_remove_last_item(user_info); |
14192 | 1733 } |
1734 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1735 if (!has_contact_info) |
14192 | 1736 { |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1737 /* Remove the Contact Info section header */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1738 gaim_notify_user_info_remove_last_item(user_info); |
14192 | 1739 } |
1740 | |
1741 #if 0 /* these probably don't show up any more */ | |
1742 /* | |
1743 * The fields, 'A Little About Me', 'Favorite Things', 'Hobbies | |
1744 * and Interests', 'Favorite Quote', and 'My Homepage' may or may | |
1745 * not appear, in any combination. However, they do appear in | |
1746 * certain order, so we can successively search to pin down the | |
1747 * distinct values. | |
1748 */ | |
1749 | |
1750 /* Check if they have A Little About Me */ | |
1751 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1752 " A Little About Me \n\n", 0, "Favorite Things", '\n', NULL, | |
1753 _("A Little About Me"), 0, NULL, NULL); | |
1754 | |
1755 if (!found) | |
1756 { | |
1757 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1758 " A Little About Me \n\n", 0, "Hobbies and Interests", '\n', | |
1759 NULL, _("A Little About Me"), 0, NULL, NULL); | |
1760 } | |
1761 | |
1762 if (!found) | |
1763 { | |
1764 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1765 " A Little About Me \n\n", 0, "Favorite Quote", '\n', NULL, | |
1766 _("A Little About Me"), 0, NULL, NULL); | |
1767 } | |
1768 | |
1769 if (!found) | |
1770 { | |
1771 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1772 " A Little About Me \n\n", 0, "My Homepage \n\nTake a look", | |
1773 '\n', | |
1774 NULL, _("A Little About Me"), 0, NULL, NULL); | |
1775 } | |
1776 | |
1777 if (!found) | |
1778 { | |
1779 gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1780 " A Little About Me \n\n", 0, "last updated", '\n', NULL, | |
1781 _("A Little About Me"), 0, NULL, NULL); | |
1782 } | |
1783 | |
1784 if (found) | |
1785 has_info = TRUE; | |
1786 | |
1787 /* Check if they have Favorite Things */ | |
1788 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1789 " Favorite Things \n\n", 0, "Hobbies and Interests", '\n', NULL, | |
1790 _("Favorite Things"), 0, NULL, NULL); | |
1791 | |
1792 if (!found) | |
1793 { | |
1794 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1795 " Favorite Things \n\n", 0, "Favorite Quote", '\n', NULL, | |
1796 _("Favorite Things"), 0, NULL, NULL); | |
1797 } | |
1798 | |
1799 if (!found) | |
1800 { | |
1801 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1802 " Favorite Things \n\n", 0, "My Homepage \n\nTake a look", '\n', | |
1803 NULL, _("Favorite Things"), 0, NULL, NULL); | |
1804 } | |
1805 | |
1806 if (!found) | |
1807 { | |
1808 gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1809 " Favorite Things \n\n", 0, "last updated", '\n', NULL, | |
1810 _("Favorite Things"), 0, NULL, NULL); | |
1811 } | |
1812 | |
1813 if (found) | |
1814 has_info = TRUE; | |
1815 | |
1816 /* Check if they have Hobbies and Interests */ | |
1817 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1818 " Hobbies and Interests \n\n", 0, "Favorite Quote", '\n', NULL, | |
1819 _("Hobbies and Interests"), 0, NULL, NULL); | |
1820 | |
1821 if (!found) | |
1822 { | |
1823 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1824 " Hobbies and Interests \n\n", 0, "My Homepage \n\nTake a look", | |
1825 '\n', NULL, _("Hobbies and Interests"), 0, NULL, NULL); | |
1826 } | |
1827 | |
1828 if (!found) | |
1829 { | |
1830 gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1831 " Hobbies and Interests \n\n", 0, "last updated", '\n', NULL, | |
1832 _("Hobbies and Interests"), 0, NULL, NULL); | |
1833 } | |
1834 | |
1835 if (found) | |
1836 has_info = TRUE; | |
1837 | |
1838 /* Check if they have Favorite Quote */ | |
1839 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1840 "Favorite Quote \n\n", 0, "My Homepage \n\nTake a look", '\n', NULL, | |
1841 _("Favorite Quote"), 0, NULL, NULL); | |
1842 | |
1843 if (!found) | |
1844 { | |
1845 gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1846 "Favorite Quote \n\n", 0, "last updated", '\n', NULL, | |
1847 _("Favorite Quote"), 0, NULL, NULL); | |
1848 } | |
1849 | |
1850 if (found) | |
1851 has_info = TRUE; | |
1852 | |
1853 /* Extract the last updated date and put it in */ | |
1854 found = gaim_markup_extract_info_field(stripped, stripped_len, s, | |
1855 " last updated:", 1, "\n", 0, NULL, _("Last Updated"), 0, | |
1856 NULL, msn_info_date_reformat); | |
1857 | |
1858 if (found) | |
1859 has_info = TRUE; | |
1860 #endif | |
1861 | |
1862 /* If we were able to fetch a homepage url earlier, stick it in there */ | |
1863 if (user_url != NULL) | |
1864 { | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1865 tmp = g_strdup_printf("<a href=\"%s\">%s</a>", user_url, user_url); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1866 gaim_notify_user_info_add_pair(user_info, _("Homepage"), tmp); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1867 g_free(tmp); |
14192 | 1868 g_free(user_url); |
1869 | |
1870 has_info = TRUE; | |
1871 } | |
1872 | |
1873 if (!has_info) | |
1874 { | |
1875 /* MSN doesn't actually distinguish between "unknown member" and | |
1876 * a known member with an empty profile. Try to explain this fact. | |
1877 * Note that if we have a nonempty tooltip_text, we know the user | |
1878 * exists. | |
1879 */ | |
1880 /* This doesn't work with the new spaces profiles - Stu 3/2/06 | |
1881 char *p = strstr(url_buffer, "Unknown Member </TITLE>"); | |
1882 * This might not work for long either ... */ | |
1883 char *p = strstr(url_buffer, "form id=\"SpacesSearch\" name=\"SpacesSearch\""); | |
1884 GaimBuddy *b = gaim_find_buddy | |
1885 (gaim_connection_get_account(info_data->gc), info_data->name); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1886 gaim_notify_user_info_add_pair(user_info, _("Error retrieving profile"), |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1887 ((p && b) ? _("The user has not created a public profile.") : |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1888 (p ? _("MSN reported not being able to find the user's profile. " |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1889 "This either means that the user does not exist, " |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1890 "or that the user exists " |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1891 "but has not created a public profile.") : |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1892 _("Gaim could not find " /* This should never happen */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1893 "any information in the user's profile. " |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1894 "The user most likely does not exist.")))); |
14192 | 1895 } |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1896 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1897 /* put a link to the actual profile URL */ |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1898 tmp = g_strdup_printf("<a href=\"%s%s\">%s%s</a>", |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1899 PROFILE_URL, info_data->name, PROFILE_URL, info_data->name); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1900 gaim_notify_user_info_add_pair(user_info, _("Profile URL"), tmp); |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1901 g_free(tmp); |
14192 | 1902 |
1903 #if PHOTO_SUPPORT | |
1904 /* Find the URL to the photo; must be before the marshalling [Bug 994207] */ | |
1905 photo_url_text = msn_get_photo_url(url_text); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
1906 gaim_debug_info("Ma Yuan","photo url:{%s}\n",photo_url_text); |
14192 | 1907 |
1908 /* Marshall the existing state */ | |
1909 info2_data = g_malloc0(sizeof(MsnGetInfoStepTwoData)); | |
1910 info2_data->info_data = info_data; | |
1911 info2_data->stripped = stripped; | |
1912 info2_data->url_buffer = url_buffer; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1913 info2_data->user_info = user_info; |
14192 | 1914 info2_data->photo_url_text = photo_url_text; |
1915 | |
1916 /* Try to put the photo in there too, if there's one */ | |
1917 if (photo_url_text) | |
1918 { | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1919 gaim_util_fetch_url(photo_url_text, FALSE, NULL, FALSE, msn_got_photo, |
14192 | 1920 info2_data); |
1921 } | |
1922 else | |
1923 { | |
1924 /* Emulate a callback */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1925 /* TODO: Huh? */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1926 msn_got_photo(NULL, info2_data, NULL, 0, NULL); |
14192 | 1927 } |
1928 } | |
1929 | |
1930 static void | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1931 msn_got_photo(GaimUtilFetchUrlData *url_data, gpointer user_data, |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1932 const gchar *url_text, size_t len, const gchar *error_message) |
14192 | 1933 { |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1934 MsnGetInfoStepTwoData *info2_data = (MsnGetInfoStepTwoData *)user_data; |
14192 | 1935 int id = -1; |
1936 | |
1937 /* Unmarshall the saved state */ | |
1938 MsnGetInfoData *info_data = info2_data->info_data; | |
1939 char *stripped = info2_data->stripped; | |
1940 char *url_buffer = info2_data->url_buffer; | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1941 GaimNotifyUserInfo *user_info = info2_data->user_info; |
14192 | 1942 char *photo_url_text = info2_data->photo_url_text; |
1943 | |
1944 /* Make sure the connection is still valid if we got here by fetching a photo url */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1945 if (url_text && (error_message != NULL || |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1946 g_list_find(gaim_connections_get_all(), info_data->gc) == NULL)) |
14192 | 1947 { |
1948 gaim_debug_warning("msn", "invalid connection. ignoring buddy photo info.\n"); | |
1949 g_free(stripped); | |
1950 g_free(url_buffer); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1951 g_free(user_info); |
14192 | 1952 g_free(info_data->name); |
1953 g_free(info_data); | |
1954 g_free(photo_url_text); | |
1955 g_free(info2_data); | |
1956 | |
1957 return; | |
1958 } | |
1959 | |
1960 /* Try to put the photo in there too, if there's one and is readable */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1961 if (user_data && url_text && len != 0) |
14192 | 1962 { |
1963 if (strstr(url_text, "400 Bad Request") | |
1964 || strstr(url_text, "403 Forbidden") | |
1965 || strstr(url_text, "404 Not Found")) | |
1966 { | |
1967 | |
1968 gaim_debug_info("msn", "Error getting %s: %s\n", | |
1969 photo_url_text, url_text); | |
1970 } | |
1971 else | |
1972 { | |
1973 char buf[1024]; | |
1974 gaim_debug_info("msn", "%s is %d bytes\n", photo_url_text, len); | |
1975 id = gaim_imgstore_add(url_text, len, NULL); | |
1976 g_snprintf(buf, sizeof(buf), "<img id=\"%d\"><br>", id); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1977 gaim_notify_user_info_prepend_pair(user_info, NULL, buf); |
14192 | 1978 } |
1979 } | |
1980 | |
1981 /* We continue here from msn_got_info, as if nothing has happened */ | |
1982 #endif | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1983 gaim_notify_userinfo(info_data->gc, info_data->name, user_info, NULL, NULL); |
14192 | 1984 |
1985 g_free(stripped); | |
1986 g_free(url_buffer); | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1987 gaim_notify_user_info_destroy(user_info); |
14192 | 1988 g_free(info_data->name); |
1989 g_free(info_data); | |
1990 #if PHOTO_SUPPORT | |
1991 g_free(photo_url_text); | |
1992 g_free(info2_data); | |
1993 if (id != -1) | |
1994 gaim_imgstore_unref(id); | |
1995 #endif | |
1996 } | |
1997 | |
1998 static void | |
1999 msn_get_info(GaimConnection *gc, const char *name) | |
2000 { | |
2001 MsnGetInfoData *data; | |
2002 char *url; | |
2003 | |
2004 data = g_new0(MsnGetInfoData, 1); | |
2005 data->gc = gc; | |
2006 data->name = g_strdup(name); | |
2007 | |
2008 url = g_strdup_printf("%s%s", PROFILE_URL, name); | |
2009 | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2010 gaim_util_fetch_url(url, FALSE, |
14192 | 2011 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", |
2012 TRUE, msn_got_info, data); | |
2013 | |
2014 g_free(url); | |
2015 } | |
2016 | |
2017 static gboolean msn_load(GaimPlugin *plugin) | |
2018 { | |
2019 msn_notification_init(); | |
2020 msn_switchboard_init(); | |
2021 msn_sync_init(); | |
2022 | |
2023 return TRUE; | |
2024 } | |
2025 | |
2026 static gboolean msn_unload(GaimPlugin *plugin) | |
2027 { | |
2028 msn_notification_end(); | |
2029 msn_switchboard_end(); | |
2030 msn_sync_end(); | |
2031 | |
2032 return TRUE; | |
2033 } | |
2034 | |
2035 static GaimPluginProtocolInfo prpl_info = | |
2036 { | |
2037 OPT_PROTO_MAIL_CHECK, | |
2038 NULL, /* user_splits */ | |
2039 NULL, /* protocol_options */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2040 {"png", 0, 0, 96, 96, 0, GAIM_ICON_SCALE_SEND}, /* icon_spec */ |
14192 | 2041 msn_list_icon, /* list_icon */ |
2042 msn_list_emblems, /* list_emblems */ | |
2043 msn_status_text, /* status_text */ | |
2044 msn_tooltip_text, /* tooltip_text */ | |
2045 msn_status_types, /* away_states */ | |
2046 msn_blist_node_menu, /* blist_node_menu */ | |
2047 NULL, /* chat_info */ | |
2048 NULL, /* chat_info_defaults */ | |
2049 msn_login, /* login */ | |
2050 msn_close, /* close */ | |
2051 msn_send_im, /* send_im */ | |
2052 NULL, /* set_info */ | |
2053 msn_send_typing, /* send_typing */ | |
2054 msn_get_info, /* get_info */ | |
2055 msn_set_status, /* set_away */ | |
2056 msn_set_idle, /* set_idle */ | |
2057 NULL, /* change_passwd */ | |
2058 msn_add_buddy, /* add_buddy */ | |
2059 NULL, /* add_buddies */ | |
2060 msn_rem_buddy, /* remove_buddy */ | |
2061 NULL, /* remove_buddies */ | |
2062 msn_add_permit, /* add_permit */ | |
2063 msn_add_deny, /* add_deny */ | |
2064 msn_rem_permit, /* rem_permit */ | |
2065 msn_rem_deny, /* rem_deny */ | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
2066 msn_set_permit_deny, /* set_permit_deny */ |
14192 | 2067 NULL, /* join_chat */ |
2068 NULL, /* reject chat invite */ | |
2069 NULL, /* get_chat_name */ | |
2070 msn_chat_invite, /* chat_invite */ | |
2071 msn_chat_leave, /* chat_leave */ | |
2072 NULL, /* chat_whisper */ | |
2073 msn_chat_send, /* chat_send */ | |
2074 msn_keepalive, /* keepalive */ | |
2075 NULL, /* register_user */ | |
2076 NULL, /* get_cb_info */ | |
2077 NULL, /* get_cb_away */ | |
2078 NULL, /* alias_buddy */ | |
2079 msn_group_buddy, /* group_buddy */ | |
2080 msn_rename_group, /* rename_group */ | |
2081 NULL, /* buddy_free */ | |
2082 msn_convo_closed, /* convo_closed */ | |
2083 msn_normalize, /* normalize */ | |
2084 msn_set_buddy_icon, /* set_buddy_icon */ | |
2085 msn_remove_group, /* remove_group */ | |
2086 NULL, /* get_cb_real_name */ | |
2087 NULL, /* set_chat_topic */ | |
2088 NULL, /* find_blist_chat */ | |
2089 NULL, /* roomlist_get_list */ | |
2090 NULL, /* roomlist_cancel */ | |
2091 NULL, /* roomlist_expand_category */ | |
2092 msn_can_receive_file, /* can_receive_file */ | |
2093 msn_send_file, /* send_file */ | |
2094 msn_new_xfer, /* new_xfer */ | |
2095 NULL, /* offline_message */ | |
2096 NULL, /* whiteboard_prpl_ops */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2097 NULL, /* send_raw */ |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2098 NULL, /* roomlist_room_serialize */ |
14192 | 2099 }; |
2100 | |
2101 static GaimPluginInfo info = | |
2102 { | |
2103 GAIM_PLUGIN_MAGIC, | |
2104 GAIM_MAJOR_VERSION, | |
2105 GAIM_MINOR_VERSION, | |
2106 GAIM_PLUGIN_PROTOCOL, /**< type */ | |
2107 NULL, /**< ui_requirement */ | |
2108 0, /**< flags */ | |
2109 NULL, /**< dependencies */ | |
2110 GAIM_PRIORITY_DEFAULT, /**< priority */ | |
2111 | |
2112 "prpl-msn", /**< id */ | |
2113 "MSN", /**< name */ | |
2114 VERSION, /**< version */ | |
2115 /** summary */ | |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2116 N_("Windows Live Messenger Protocol Plugin"), |
14192 | 2117 /** description */ |
20390
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2118 N_("Windows Live Messenger Protocol Plugin"), |
d634f88e25d8
msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
2119 "MaYuan <mayuan2006@gmail.com>", /**< author */ |
14192 | 2120 GAIM_WEBSITE, /**< homepage */ |
2121 | |
2122 msn_load, /**< load */ | |
2123 msn_unload, /**< unload */ | |
2124 NULL, /**< destroy */ | |
2125 | |
2126 NULL, /**< ui_info */ | |
2127 &prpl_info, /**< extra_info */ | |
2128 NULL, /**< prefs_info */ | |
2129 msn_actions | |
2130 }; | |
2131 | |
2132 static void | |
2133 init_plugin(GaimPlugin *plugin) | |
2134 { | |
2135 GaimAccountOption *option; | |
2136 | |
2137 option = gaim_account_option_string_new(_("Server"), "server", | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
2138 WLM_SERVER); |
14192 | 2139 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
2140 option); | |
2141 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
15283
diff
changeset
|
2142 option = gaim_account_option_int_new(_("Port"), "port", WLM_PORT); |
14192 | 2143 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
2144 option); | |
2145 | |
2146 option = gaim_account_option_bool_new(_("Use HTTP Method"), | |
2147 "http_method", FALSE); | |
2148 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, | |
2149 option); | |
2150 | |
2151 option = gaim_account_option_bool_new(_("Show custom smileys"), | |
2152 "custom_smileys", TRUE); | |
2153 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, | |
2154 option); | |
2155 | |
2156 gaim_cmd_register("nudge", "", GAIM_CMD_P_PRPL, | |
2157 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_PRPL_ONLY, | |
2158 "prpl-msn", msn_cmd_nudge, | |
2159 _("nudge: nudge a user to get their attention"), NULL); | |
2160 | |
2161 gaim_prefs_remove("/plugins/prpl/msn"); | |
2162 } | |
2163 | |
2164 GAIM_INIT_PLUGIN(msn, init_plugin, info); |