| 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, |