diff -r a9b545eb6e4f -r 6e76f1367896 src/protocols/msn/state.c --- a/src/protocols/msn/state.c Sun Jun 06 02:16:08 2004 +0000 +++ b/src/protocols/msn/state.c Sun Jun 06 02:39:08 2004 +0000 @@ -36,6 +36,40 @@ N_("Available") }; +void +msn_change_status(MsnSession *session, MsnAwayType state) +{ + MsnCmdProc *cmdproc; + MsnUser *user; + MsnObject *msnobj; + const char *state_text; + + cmdproc = session->notification->cmdproc; + user = session->user; + state_text = msn_state_get_text(state); + + g_return_if_fail(session != NULL); + + msnobj = msn_user_get_object(user); + + if (msnobj == NULL) + { + msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text, + MSN_CLIENT_ID); + } + else + { + char *msnobj_str; + + msnobj_str = msn_object_to_string(msnobj); + + msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text, + MSN_CLIENT_ID, gaim_url_encode(msnobj_str)); + + g_free(msnobj_str); + } +} + const char * msn_away_get_text(MsnAwayType type) { @@ -43,3 +77,12 @@ return _(away_text[type]); } + +const char * +msn_state_get_text(MsnAwayType state) +{ + static char *status_text[] = + { "NLN", "NLN", "BSY", "IDL", "BRB", "AWY", "PHN", "LUN", "HDN", "HDN" }; + + return status_text[state]; +}