Mercurial > pidgin.yaz
changeset 22553:1168dc635ac1
some other mobile stuff that Maiku fixed, fixes #2359
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Fri, 28 Mar 2008 07:58:20 +0000 |
parents | 207f51e16b50 |
children | 8041c74e36d7 22114ffecd79 |
files | libpurple/protocols/msn/notification.c libpurple/protocols/msn/user.c |
diffstat | 2 files changed, 22 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/notification.c Thu Mar 27 06:32:31 2008 +0000 +++ b/libpurple/protocols/msn/notification.c Fri Mar 28 07:58:20 2008 +0000 @@ -1039,6 +1039,7 @@ PurpleConnection *gc; MsnUser *user; MsnObject *msnobj; + unsigned long clientid; int wlmclient; const char *state, *passport, *friendly; @@ -1064,6 +1065,9 @@ msn_user_set_object(user, msnobj); } + clientid = strtoul(cmd->params[5], NULL, 10); + user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE) || (user->phone.mobile && user->phone.mobile[0] == '+'); + msn_user_set_state(user, state); msn_user_update(user); } @@ -1179,7 +1183,7 @@ } clientid = strtoul(cmd->params[4], NULL, 10); - user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE); + user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE) || (user->phone.mobile && user->phone.mobile[0] == '+'); msn_user_set_state(user, state); msn_user_update(user);
--- a/libpurple/protocols/msn/user.c Thu Mar 27 06:32:31 2008 +0000 +++ b/libpurple/protocols/msn/user.c Fri Mar 28 07:58:20 2008 +0000 @@ -97,8 +97,22 @@ if (user->status != NULL) { gboolean offline = (strcmp(user->status, "offline") == 0); - purple_prpl_got_user_status(account, user->passport, user->status, - "message", user->statusline, NULL); + + if (!offline) { + purple_prpl_got_user_status(account, user->passport, user->status, + "message", user->statusline, NULL); + } else { + if (user->mobile) { + purple_prpl_got_user_status(account, user->passport, "mobile", NULL); + purple_prpl_got_user_status(account, user->passport, "available", NULL); + } else { + purple_prpl_got_user_status(account, user->passport, user->status, NULL); + } + } + + if (!offline || !user->mobile) { + purple_prpl_got_user_status_deactive(account, user->passport, "mobile"); + } if (!offline && user->media.title) { purple_prpl_got_user_status(account, user->passport, "tune", @@ -108,13 +122,7 @@ NULL); } else { purple_prpl_got_user_status_deactive(account, user->passport, "tune"); - } - - if (!offline && user->mobile) { - purple_prpl_got_user_status(account, user->passport, "mobile", NULL); - } else { - purple_prpl_got_user_status_deactive(account, user->passport, "mobile"); - } + } } if (user->idle)