src/protocols/msn/state.c

branch
soc.2006.msnp13
changeset 13856
a6511183749e
parent 11992
906176cc9b22
child 13866
b6a2c8d390ef
equal deleted inserted replaced
13855:24cff9e060d7 13856:a6511183749e
36 N_("Out To Lunch"), 36 N_("Out To Lunch"),
37 N_("Available"), 37 N_("Available"),
38 N_("Available") 38 N_("Available")
39 }; 39 };
40 40
41 char *
42 msn_build_psm(char * psmstr,char *mediastr,char * guidstr)
43 {
44 xmlnode *dataNode,*psmNode,*mediaNode,*guidNode;
45 char *result;
46 int length;
47
48 dataNode = xmlnode_new("Data");
49
50 psmNode = xmlnode_new("PSM");
51 if(psmstr != NULL){
52 xmlnode_insert_data(psmNode,psmstr,strlen(psmstr));
53 }
54 xmlnode_insert_child(dataNode,psmNode);
55
56 //"<CurrentMedia>\0Music\01\0{0} - {1}\0 Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\
57 <CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\
58 <CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>"
59
60 mediaNode = xmlnode_new("CurrentMedia");
61 if(mediastr != NULL){
62 xmlnode_insert_data(psmNode,mediastr,strlen(mediastr));
63 }
64 xmlnode_insert_child(dataNode,mediaNode);
65
66 guidNode = xmlnode_new("MachineGuid");
67 if(guidstr != NULL){
68 xmlnode_insert_data(guidNode,guidstr,strlen(guidstr));
69 }
70 xmlnode_insert_child(dataNode,guidNode);
71
72 result = xmlnode_to_str(dataNode,&length);
73 return result;
74 }
75
76 void
77 msn_set_psm(MsnSession *session)
78 {
79 MsnCmdProc *cmdproc;
80 MsnTransaction *trans;
81 char *payload;
82
83 cmdproc = session->notification->cmdproc;
84 /*prepare PSM info*/
85 if(session->psm){
86 g_free(session->psm);
87 }
88 session ->psm = g_strdup(msn_build_psm("Hello",NULL,NULL));
89 payload = session->psm;
90
91 gaim_debug_info("MaYuan","UUX{%s}\n",payload);
92 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload));
93 msn_transaction_set_payload(trans, payload, strlen(payload));
94 msn_cmdproc_send_trans(cmdproc, trans);
95 }
96
41 void 97 void
42 msn_change_status(MsnSession *session) 98 msn_change_status(MsnSession *session)
43 { 99 {
44 GaimAccount *account = session->account; 100 GaimAccount *account = session->account;
45 MsnCmdProc *cmdproc; 101 MsnCmdProc *cmdproc;
60 if (!session->logged_in) 116 if (!session->logged_in)
61 return; 117 return;
62 118
63 msnobj = msn_user_get_object(user); 119 msnobj = msn_user_get_object(user);
64 120
65 if (msnobj == NULL) 121 if (msnobj == NULL){
66 {
67 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text, 122 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text,
68 MSN_CLIENT_ID); 123 MSN_CLIENT_ID);
69 } 124 }else{
70 else
71 {
72 char *msnobj_str; 125 char *msnobj_str;
73 126
74 msnobj_str = msn_object_to_string(msnobj); 127 msnobj_str = msn_object_to_string(msnobj);
75 128
76 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text, 129 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text,

mercurial