# HG changeset patch # User Ka-Hing Cheung # Date 1206691100 0 # Node ID 1168dc635ac15dceb211b1b031047f23b922d1bf # Parent 207f51e16b5028ff16bae963670b3fea9107de9f some other mobile stuff that Maiku fixed, fixes #2359 diff -r 207f51e16b50 -r 1168dc635ac1 libpurple/protocols/msn/notification.c --- 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); diff -r 207f51e16b50 -r 1168dc635ac1 libpurple/protocols/msn/user.c --- 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)