Mercurial > pidgin
diff libpurple/protocols/myspace/user.c @ 25877:1260a3fb60f4
propagate from branch 'im.pidgin.pidgin' (head b8d6086aef6b2e65d86e8ce60220ab7f460d5079)
to branch 'im.pidgin.pidgin.next.minor' (head c165595260a2efa0ca23704ada46a303e0412e19)
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Fri, 12 Dec 2008 20:03:58 +0000 |
| parents | 128a77f3b3c4 8d562557ed6f |
| children | be87547aa431 |
line wrap: on
line diff
--- a/libpurple/protocols/myspace/user.c Fri Dec 12 17:18:59 2008 +0000 +++ b/libpurple/protocols/myspace/user.c Fri Dec 12 20:03:58 2008 +0000 @@ -57,17 +57,14 @@ return NULL; } - if (!buddy->proto_data) { + if (!(user = purple_buddy_get_protocol_data(buddy))) { /* No MsimUser for this buddy; make one. */ /* TODO: where is this freed? */ user = g_new0(MsimUser, 1); user->buddy = buddy; - user->id = purple_blist_node_get_int(&buddy->node, "UserID"); - buddy->proto_data = (gpointer)user; - } - - user = (MsimUser *)(buddy->proto_data); + purple_buddy_set_protocol_data(buddy, user); + } return user; } @@ -97,6 +94,7 @@ { PurplePresence *presence; gchar *str; + guint uid; guint cv; /* Useful to identify the account the tooltip refers to. @@ -105,6 +103,19 @@ purple_notify_user_info_add_pair(user_info, _("User"), user->username); } + uid = purple_blist_node_get_int((PurpleBlistNode *)user->buddy, "UserID"); + + if (full) { + /* TODO: link to username, if available */ + if (uid) { + char *profile = g_strdup_printf("<a href=\"http://myspace.com/%d\">http://myspace.com/%d</a>", + uid, uid); + purple_notify_user_info_add_pair(user_info, _("Profile"), profile); + g_free(profile); + } + } + + /* a/s/l...the vitals */ if (user->age) { char age[16]; @@ -197,7 +208,9 @@ static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title) { PurplePresence *presence; + PurpleAccount *account; const char *prev_artist, *prev_title; + const char *name; if (user->buddy == NULL) /* User not on buddy list so nothing to do */ @@ -211,8 +224,11 @@ if (new_title && !*new_title) new_title = NULL; + account = purple_buddy_get_account(user->buddy); + name = purple_buddy_get_name(user->buddy); + if (!new_artist && !new_title) { - purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune"); + purple_prpl_got_user_status_deactive(account, name, "tune"); return; } @@ -232,7 +248,7 @@ if (!new_title) new_title = prev_title; - purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune", + purple_prpl_got_user_status(account, name, "tune", PURPLE_TUNE_TITLE, new_title, PURPLE_TUNE_ARTIST, new_artist, NULL); @@ -248,13 +264,14 @@ void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) { + const char *name = user->buddy ? purple_buddy_get_name(user->buddy) : NULL; if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) { /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */ user->id = atol(value_str); if (user->buddy) { - purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name); - purple_blist_node_set_int(&user->buddy->node, "UserID", user->id); + purple_debug_info("msim", "associating uid %s with username %s\n", key_str, name); + purple_blist_node_set_int((PurpleBlistNode *)user->buddy, "UserID", user->id); } /* Need to store in MsimUser, too? What if not on blist? */ } else if (g_str_equal(key_str, "Age")) { @@ -304,9 +321,8 @@ /* Instead of showing 'no photo' picture, show nothing. */ if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) { - purple_buddy_icons_set_for_user(user->buddy->account, - user->buddy->name, - NULL, 0, NULL); + purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy), + name, NULL, 0, NULL); return; } @@ -543,8 +559,10 @@ const gchar *error_message) { MsimUser *user; + const char *name; user = (MsimUser *)user_data; + name = purple_buddy_get_name(user->buddy); purple_debug_info("msim_downloaded_buddy_icon", "Downloaded %" G_GSIZE_FORMAT " bytes\n", len); @@ -552,13 +570,12 @@ if (!url_text) { purple_debug_info("msim_downloaded_buddy_icon", "failed to download icon for %s", - user->buddy->name); + name); return; } - purple_buddy_icons_set_for_user(user->buddy->account, - user->buddy->name, - g_memdup((gchar *)url_text, len), len, + purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy), + name, g_memdup((gchar *)url_text, len), len, /* Use URL itself as buddy icon "checksum" (TODO: ETag) */ user->image_url); /* checksum */ }
