Mercurial > pidgin
comparison libpurple/protocols/myspace/user.c @ 25130:16734635febf
Start hiding blist.h internals in prpls.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 27 Sep 2008 06:33:42 +0000 |
parents | 85fc34efe733 |
children | 8d562557ed6f |
comparison
equal
deleted
inserted
replaced
24188:d1cfa8c11902 | 25130:16734635febf |
---|---|
103 * Other prpls show this. */ | 103 * Other prpls show this. */ |
104 if (user->username) { | 104 if (user->username) { |
105 purple_notify_user_info_add_pair(user_info, _("User"), user->username); | 105 purple_notify_user_info_add_pair(user_info, _("User"), user->username); |
106 } | 106 } |
107 | 107 |
108 uid = purple_blist_node_get_int(&user->buddy->node, "UserID"); | 108 uid = purple_blist_node_get_int((PurpleBlistNode *)user->buddy, "UserID"); |
109 | 109 |
110 if (full) { | 110 if (full) { |
111 /* TODO: link to username, if available */ | 111 /* TODO: link to username, if available */ |
112 if (uid) { | 112 if (uid) { |
113 char *profile = g_strdup_printf("<a href=\"http://myspace.com/%d\">http://myspace.com/%d</a>", | 113 char *profile = g_strdup_printf("<a href=\"http://myspace.com/%d\">http://myspace.com/%d</a>", |
196 * individually, which purple_prpl_got_user_status() doesn't do. | 196 * individually, which purple_prpl_got_user_status() doesn't do. |
197 */ | 197 */ |
198 static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title) | 198 static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title) |
199 { | 199 { |
200 PurplePresence *presence; | 200 PurplePresence *presence; |
201 PurpleAccount *account; | |
201 const char *prev_artist, *prev_title; | 202 const char *prev_artist, *prev_title; |
203 const char *name; | |
202 | 204 |
203 prev_artist = NULL; | 205 prev_artist = NULL; |
204 prev_title = NULL; | 206 prev_title = NULL; |
205 | 207 |
206 if (new_artist && !strlen(new_artist)) | 208 if (new_artist && !strlen(new_artist)) |
207 new_artist = NULL; | 209 new_artist = NULL; |
208 if (new_title && !strlen(new_title)) | 210 if (new_title && !strlen(new_title)) |
209 new_title = NULL; | 211 new_title = NULL; |
210 | 212 |
213 account = purple_buddy_get_account(user->buddy); | |
214 name = purple_buddy_get_name(user->buddy); | |
215 | |
211 if (!new_artist && !new_title) { | 216 if (!new_artist && !new_title) { |
212 purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune"); | 217 purple_prpl_got_user_status_deactive(account, name, "tune"); |
213 return; | 218 return; |
214 } | 219 } |
215 | 220 |
216 presence = purple_buddy_get_presence(user->buddy); | 221 presence = purple_buddy_get_presence(user->buddy); |
217 | 222 |
227 new_artist = prev_artist; | 232 new_artist = prev_artist; |
228 | 233 |
229 if (!new_title) | 234 if (!new_title) |
230 new_title = prev_title; | 235 new_title = prev_title; |
231 | 236 |
232 purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune", | 237 purple_prpl_got_user_status(account, name, "tune", |
233 PURPLE_TUNE_TITLE, new_title, | 238 PURPLE_TUNE_TITLE, new_title, |
234 PURPLE_TUNE_ARTIST, new_artist, | 239 PURPLE_TUNE_ARTIST, new_artist, |
235 NULL); | 240 NULL); |
236 } | 241 } |
237 | 242 |
243 * @param user User to store data in. Existing data will be replaced. | 248 * @param user User to store data in. Existing data will be replaced. |
244 * */ | 249 * */ |
245 void | 250 void |
246 msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) | 251 msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) |
247 { | 252 { |
253 const char *name = user->buddy ? purple_buddy_get_name(user->buddy) : NULL; | |
248 if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) { | 254 if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) { |
249 /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */ | 255 /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */ |
250 if (user->buddy) | 256 if (user->buddy) |
251 { | 257 { |
252 purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name); | 258 purple_debug_info("msim", "associating uid %s with username %s\n", key_str, name); |
253 purple_blist_node_set_int(&user->buddy->node, "UserID", atol(value_str)); | 259 purple_blist_node_set_int((PurpleBlistNode *)user->buddy, "UserID", atol(value_str)); |
254 } | 260 } |
255 /* Need to store in MsimUser, too? What if not on blist? */ | 261 /* Need to store in MsimUser, too? What if not on blist? */ |
256 } else if (g_str_equal(key_str, "Age")) { | 262 } else if (g_str_equal(key_str, "Age")) { |
257 user->age = atol(value_str); | 263 user->age = atol(value_str); |
258 g_free(value_str); | 264 g_free(value_str); |
298 user->image_url = value_str; | 304 user->image_url = value_str; |
299 | 305 |
300 /* Instead of showing 'no photo' picture, show nothing. */ | 306 /* Instead of showing 'no photo' picture, show nothing. */ |
301 if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) | 307 if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) |
302 { | 308 { |
303 purple_buddy_icons_set_for_user(user->buddy->account, | 309 purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy), |
304 user->buddy->name, | 310 name, NULL, 0, NULL); |
305 NULL, 0, NULL); | |
306 return; | 311 return; |
307 } | 312 } |
308 | 313 |
309 /* TODO: use ETag for checksum */ | 314 /* TODO: use ETag for checksum */ |
310 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy); | 315 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy); |
537 const gchar *url_text, | 542 const gchar *url_text, |
538 gsize len, | 543 gsize len, |
539 const gchar *error_message) | 544 const gchar *error_message) |
540 { | 545 { |
541 MsimUser *user; | 546 MsimUser *user; |
547 const char *name; | |
542 | 548 |
543 user = (MsimUser *)user_data; | 549 user = (MsimUser *)user_data; |
550 name = purple_buddy_get_name(user->buddy); | |
544 | 551 |
545 purple_debug_info("msim_downloaded_buddy_icon", | 552 purple_debug_info("msim_downloaded_buddy_icon", |
546 "Downloaded %" G_GSIZE_FORMAT " bytes\n", len); | 553 "Downloaded %" G_GSIZE_FORMAT " bytes\n", len); |
547 | 554 |
548 if (!url_text) { | 555 if (!url_text) { |
549 purple_debug_info("msim_downloaded_buddy_icon", | 556 purple_debug_info("msim_downloaded_buddy_icon", |
550 "failed to download icon for %s", | 557 "failed to download icon for %s", |
551 user->buddy->name); | 558 name); |
552 return; | 559 return; |
553 } | 560 } |
554 | 561 |
555 purple_buddy_icons_set_for_user(user->buddy->account, | 562 purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy), |
556 user->buddy->name, | 563 name, g_memdup((gchar *)url_text, len), len, |
557 g_memdup((gchar *)url_text, len), len, | |
558 /* Use URL itself as buddy icon "checksum" (TODO: ETag) */ | 564 /* Use URL itself as buddy icon "checksum" (TODO: ETag) */ |
559 user->image_url); /* checksum */ | 565 user->image_url); /* checksum */ |
560 } | 566 } |
561 | 567 |
562 /*** | 568 /*** |