src/protocols/msn/state.c

branch
soc.2006.msnp13
changeset 13891
a357e7e3cddb
parent 13889
1030d616ee64
equal deleted inserted replaced
13890:a3fa24a63d1b 13891:a357e7e3cddb
106 g_free(payloadNode); 106 g_free(payloadNode);
107 107
108 return psm; 108 return psm;
109 } 109 }
110 110
111 /* set the MSN's PSM info,Currently Read from the status Line
112 * Thanks for Cris Code
113 */
111 void 114 void
112 msn_set_psm(MsnSession *session) 115 msn_set_psm(MsnSession *session)
113 { 116 {
117 GaimAccount *account = session->account;
118 GaimPresence *presence;
119 GaimStatus *status;
114 MsnCmdProc *cmdproc; 120 MsnCmdProc *cmdproc;
115 MsnTransaction *trans; 121 MsnTransaction *trans;
116 char *payload; 122 char *payload,*statusline;
123
124 g_return_if_fail(session != NULL);
125 g_return_if_fail(session->notification != NULL);
117 126
118 cmdproc = session->notification->cmdproc; 127 cmdproc = session->notification->cmdproc;
119 /*prepare PSM info*/ 128 /*prepare PSM info*/
120 if(session->psm){ 129 if(session->psm){
121 g_free(session->psm); 130 g_free(session->psm);
122 } 131 }
123 session ->psm = g_strdup(msn_build_psm("Hello",NULL,NULL)); 132 /*Get the PSM string from Gaim's Status Line*/
133 presence = gaim_account_get_presence(account);
134 status = gaim_presence_get_active_status(presence);
135 statusline = gaim_status_get_attr_string(status, "message");
136 session ->psm = g_strdup(msn_build_psm(statusline,NULL,NULL));
124 payload = session->psm; 137 payload = session->psm;
125 138
126 gaim_debug_info("MaYuan","UUX{%s}\n",payload); 139 gaim_debug_info("MaYuan","UUX{%s}\n",payload);
127 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload)); 140 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload));
128 msn_transaction_set_payload(trans, payload, strlen(payload)); 141 msn_transaction_set_payload(trans, payload, strlen(payload));
164 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text, 177 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text,
165 MSN_CLIENT_ID, gaim_url_encode(msnobj_str)); 178 MSN_CLIENT_ID, gaim_url_encode(msnobj_str));
166 179
167 g_free(msnobj_str); 180 g_free(msnobj_str);
168 } 181 }
182 msn_set_psm(session);
169 } 183 }
170 184
171 const char * 185 const char *
172 msn_away_get_text(MsnAwayType type) 186 msn_away_get_text(MsnAwayType type)
173 { 187 {

mercurial