comparison libpurple/protocols/msn/notification.c @ 20570:5913725cbcd6

Use an independant status type for 'current media' stuff, instead of using status attributes. This includes changes in both xmpp and msn. Also, in MSN, CurrentMedia is sent with PSM if you turn on the status and set the attributes on the account.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Thu, 20 Sep 2007 16:30:17 +0000
parents 723b5a2f91ce
children 5f829728a1a5
comparison
equal deleted inserted replaced
20569:7393ee28c819 20570:5913725cbcd6
1623 MsnSession *session; 1623 MsnSession *session;
1624 PurpleAccount *account; 1624 PurpleAccount *account;
1625 PurpleConnection *gc; 1625 PurpleConnection *gc;
1626 MsnUser *user; 1626 MsnUser *user;
1627 const char *passport; 1627 const char *passport;
1628 char *psm_str, *currentmedia_str, *str; 1628 char *psm_str, *str;
1629 1629 CurrentMedia media = {NULL, NULL, NULL};
1630 /*get the payload content*/
1631 // purple_debug_info("MSNP14","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload);
1632 1630
1633 session = cmdproc->session; 1631 session = cmdproc->session;
1634 account = session->account; 1632 account = session->account;
1635 gc = purple_account_get_connection(account); 1633 gc = purple_account_get_connection(account);
1636 1634
1637 passport = cmd->params[0]; 1635 passport = cmd->params[0];
1638 user = msn_userlist_find_user(session->userlist, passport); 1636 user = msn_userlist_find_user(session->userlist, passport);
1639 1637
1640 psm_str = msn_get_psm(cmd->payload,len); 1638 psm_str = msn_get_psm(cmd->payload,len);
1641 currentmedia_str = msn_parse_currentmedia( 1639 msn_user_set_statusline(user, psm_str);
1642 str = msn_get_currentmedia(cmd->payload, len)); 1640 g_free(psm_str);
1641
1642 str = msn_get_currentmedia(cmd->payload, len);
1643 if (msn_parse_currentmedia(str, &media))
1644 msn_user_set_currentmedia(user, &media);
1645 else
1646 msn_user_set_currentmedia(user, NULL);
1643 g_free(str); 1647 g_free(str);
1644 1648
1645 msn_user_set_statusline(user, psm_str);
1646 msn_user_set_currentmedia(user, currentmedia_str);
1647 msn_user_update(user); 1649 msn_user_update(user);
1648
1649 g_free(psm_str);
1650 g_free(currentmedia_str);
1651 } 1650 }
1652 1651
1653 static void 1652 static void
1654 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 1653 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
1655 { 1654 {