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 /***