Mercurial > pidgin.yaz
comparison libpurple/protocols/msn/msn.c @ 27937:1337d2813b2d
propagate from branch 'im.pidgin.pidgin' (head 5ab68ddb0251205f7ef97f4c280e65696cbd5ff2)
to branch 'im.pidgin.pidgin.yaz' (head 7a5d48783707dd377fd754961d3b009c3e492827)
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 07 Apr 2009 14:32:50 +0000 |
parents | e23a74d7c97c d8e6a2d592a4 |
children | fb593c327870 |
comparison
equal
deleted
inserted
replaced
26588:1a94a964bddf | 27937:1337d2813b2d |
---|---|
171 { | 171 { |
172 MsnCmdProc *cmdproc; | 172 MsnCmdProc *cmdproc; |
173 MsnSession *session; | 173 MsnSession *session; |
174 PurpleAccount *account; | 174 PurpleAccount *account; |
175 const char *alias; | 175 const char *alias; |
176 gchar *tmp; | |
177 gsize dummy; | |
176 | 178 |
177 session = gc->proto_data; | 179 session = gc->proto_data; |
178 cmdproc = session->notification->cmdproc; | 180 cmdproc = session->notification->cmdproc; |
179 account = purple_connection_get_account(gc); | 181 account = purple_connection_get_account(gc); |
180 | 182 |
181 if(entry && strlen(entry)) | 183 if(entry && strlen(entry)) { |
182 alias = purple_url_encode(entry); | 184 tmp = botch_utf(entry, strlen(entry), &dummy); |
185 alias = purple_url_encode(tmp); | |
186 g_free(tmp); | |
187 } | |
183 else | 188 else |
184 alias = ""; | 189 alias = ""; |
185 | 190 |
186 if (strlen(alias) > BUDDY_ALIAS_MAXLEN) | 191 if (strlen(alias) > BUDDY_ALIAS_MAXLEN) |
187 { | 192 { |
193 if (*alias == '\0') { | 198 if (*alias == '\0') { |
194 alias = purple_url_encode(purple_account_get_username(account)); | 199 alias = purple_url_encode(purple_account_get_username(account)); |
195 } | 200 } |
196 | 201 |
197 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias); | 202 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias); |
203 // propagate change on server side to local --yaz | |
204 purple_account_set_alias(account, entry); //oct16 <-- XXX questionable. Sep19. | |
198 | 205 |
199 } | 206 } |
200 | 207 |
201 static void | 208 static void |
202 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry) | 209 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry) |
318 purple_connection_get_display_name(gc), FALSE, FALSE, NULL, | 325 purple_connection_get_display_name(gc), FALSE, FALSE, NULL, |
319 _("OK"), G_CALLBACK(msn_act_id), | 326 _("OK"), G_CALLBACK(msn_act_id), |
320 _("Cancel"), NULL, | 327 _("Cancel"), NULL, |
321 purple_connection_get_account(gc), NULL, NULL, | 328 purple_connection_get_account(gc), NULL, NULL, |
322 gc); | 329 gc); |
330 } | |
331 | |
332 static void | |
333 msn_ipc_init(PurplePlugin *plugin) | |
334 { | |
335 purple_plugin_ipc_register(plugin, "msn_set_friendly_name", | |
336 PURPLE_CALLBACK(msn_act_id), | |
337 purple_marshal_VOID__POINTER_POINTER, | |
338 purple_value_new(PURPLE_TYPE_UNKNOWN),2, | |
339 purple_value_new(PURPLE_TYPE_POINTER), | |
340 purple_value_new(PURPLE_TYPE_POINTER)); | |
341 } | |
342 | |
343 static void | |
344 msn_ipc_end(PurplePlugin *plugin) | |
345 { | |
346 purple_plugin_ipc_unregister_all(plugin); | |
323 } | 347 } |
324 | 348 |
325 static void | 349 static void |
326 msn_show_set_home_phone(PurplePluginAction *action) | 350 msn_show_set_home_phone(PurplePluginAction *action) |
327 { | 351 { |
1087 | 1111 |
1088 static void | 1112 static void |
1089 msn_send_emoticons(MsnSwitchBoard *swboard, GString *body) | 1113 msn_send_emoticons(MsnSwitchBoard *swboard, GString *body) |
1090 { | 1114 { |
1091 MsnMessage *msg; | 1115 MsnMessage *msg; |
1116 gchar *tmp; | |
1117 gsize len; | |
1092 | 1118 |
1093 g_return_if_fail(body != NULL); | 1119 g_return_if_fail(body != NULL); |
1094 | 1120 |
1095 msg = msn_message_new(MSN_MSG_SLP); | 1121 msg = msn_message_new(MSN_MSG_SLP); |
1096 msn_message_set_content_type(msg, "text/x-mms-emoticon"); | 1122 msn_message_set_content_type(msg, "text/x-mms-emoticon"); |
1097 msn_message_set_flag(msg, 'N'); | 1123 msn_message_set_flag(msg, 'N'); |
1098 msn_message_set_bin_data(msg, body->str, body->len); | 1124 |
1125 tmp = botch_utf(body->str, -1, &len); | |
1126 msn_message_set_bin_data(msg, tmp, len); | |
1127 g_free(tmp); | |
1099 | 1128 |
1100 msn_switchboard_send_msg(swboard, msg, TRUE); | 1129 msn_switchboard_send_msg(swboard, msg, TRUE); |
1101 msn_message_destroy(msg); | 1130 msn_message_destroy(msg); |
1102 } | 1131 } |
1103 | 1132 |
2461 { | 2490 { |
2462 msn_notification_init(); | 2491 msn_notification_init(); |
2463 msn_switchboard_init(); | 2492 msn_switchboard_init(); |
2464 msn_sync_init(); | 2493 msn_sync_init(); |
2465 | 2494 |
2495 // yaz | |
2496 msn_ipc_init(plugin); | |
2497 | |
2466 return TRUE; | 2498 return TRUE; |
2467 } | 2499 } |
2468 | 2500 |
2469 static gboolean msn_unload(PurplePlugin *plugin) | 2501 static gboolean msn_unload(PurplePlugin *plugin) |
2470 { | 2502 { |
2471 msn_notification_end(); | 2503 msn_notification_end(); |
2472 msn_switchboard_end(); | 2504 msn_switchboard_end(); |
2473 msn_sync_end(); | 2505 msn_sync_end(); |
2506 | |
2507 // yaz | |
2508 msn_ipc_end(plugin); | |
2474 | 2509 |
2475 return TRUE; | 2510 return TRUE; |
2476 } | 2511 } |
2477 | 2512 |
2478 static PurpleAccount *find_acct(const char *prpl, const char *acct_id) | 2513 static PurpleAccount *find_acct(const char *prpl, const char *acct_id) |