Mercurial > pidgin
annotate libgaim/protocols/msn/state.c @ 20392:9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
"uploaded a diff, this diff is unchanged from the last tarball that I
previously uploaded, except that it's against HEAD. This should be a little
easier for most people."
(This was apparently msn-p13-merge-head.diff, which SourceForge didn't allow to
be uploaded.)
PLUS
"Updated the diff with basically no change, except with simom's icon fix.
The previous diff was broken because some of the files were not added"
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 03:01:41 +0000 |
parents | 0b0ecee55091 |
children |
rev | line source |
---|---|
14192 | 1 /** |
2 * @file state.c State functions and definitions | |
3 * | |
4 * gaim | |
5 * | |
6 * Gaim is the legal property of its developers, whose names are too numerous | |
7 * to list here. Please refer to the COPYRIGHT file distributed with this | |
8 * source distribution. | |
9 * | |
10 * This program is free software; you can redistribute it and/or modify | |
11 * it under the terms of the GNU General Public License as published by | |
12 * the Free Software Foundation; either version 2 of the License, or | |
13 * (at your option) any later version. | |
14 * | |
15 * This program is distributed in the hope that it will be useful, | |
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
19 * | |
20 * You should have received a copy of the GNU General Public License | |
21 * along with this program; if not, write to the Free Software | |
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
23 */ | |
24 #include "msn.h" | |
25 #include "state.h" | |
26 | |
27 static const char *away_text[] = | |
28 { | |
29 N_("Available"), | |
30 N_("Available"), | |
31 N_("Busy"), | |
32 N_("Idle"), | |
33 N_("Be Right Back"), | |
34 N_("Away From Computer"), | |
35 N_("On The Phone"), | |
36 N_("Out To Lunch"), | |
37 N_("Available"), | |
38 N_("Available") | |
39 }; | |
40 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
41 /* Local Function Prototype*/ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
42 static char *msn_build_psm(const char *psmstr,const char *mediastr, |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
43 const char *guidstr); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
44 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
45 /* |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
46 * WLM media PSM info build prcedure |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
47 * |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
48 * Result can like: |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
49 * <CurrentMedia>\0Music\01\0{0} - {1}\0 Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
50 * <CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
51 * <CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>" |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
52 */ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
53 static char * |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
54 msn_build_psm(const char *psmstr,const char *mediastr, const char *guidstr) |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
55 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
56 xmlnode *dataNode,*psmNode,*mediaNode,*guidNode; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
57 char *result; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
58 int length; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
59 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
60 dataNode = xmlnode_new("Data"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
61 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
62 psmNode = xmlnode_new("PSM"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
63 if(psmstr != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
64 xmlnode_insert_data(psmNode,psmstr,strlen(psmstr)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
65 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
66 xmlnode_insert_child(dataNode,psmNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
67 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
68 mediaNode = xmlnode_new("CurrentMedia"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
69 if(mediastr != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
70 xmlnode_insert_data(psmNode,mediastr,strlen(mediastr)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
71 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
72 xmlnode_insert_child(dataNode,mediaNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
73 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
74 guidNode = xmlnode_new("MachineGuid"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
75 if(guidstr != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
76 xmlnode_insert_data(guidNode,guidstr,strlen(guidstr)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
77 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
78 xmlnode_insert_child(dataNode,guidNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
79 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
80 result = xmlnode_to_str(dataNode,&length); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
81 return result; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
82 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
83 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
84 /*get the PSM info from the XML string*/ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
85 char * |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
86 msn_get_psm(char *xml_str, gsize len) |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
87 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
88 xmlnode *payloadNode, *psmNode; |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
89 char *psm_str, *psm; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
90 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
91 gaim_debug_info("Ma Yuan","msn get PSM\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
92 payloadNode = xmlnode_from_str(xml_str, len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
93 if (!payloadNode){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
94 gaim_debug_error("MaYuan","PSM XML parse Error!\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
95 return NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
96 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
97 psmNode = xmlnode_get_child(payloadNode, "PSM"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
98 if (psmNode == NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
99 gaim_debug_info("Ma Yuan","No PSM status Node"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
100 g_free(payloadNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
101 return NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
102 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
103 psm_str = xmlnode_get_data(psmNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
104 psm = g_strdup(psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
105 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
106 g_free(psmNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
107 g_free(payloadNode); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
108 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
109 return psm; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
110 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
111 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
112 /* set the MSN's PSM info,Currently Read from the status Line |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
113 * Thanks for Cris Code |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
114 */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
115 void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
116 msn_set_psm(MsnSession *session) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
117 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
118 GaimAccount *account = session->account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
119 GaimPresence *presence; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
120 GaimStatus *status; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
121 MsnCmdProc *cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
122 MsnTransaction *trans; |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
123 char *payload; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
124 const char *statusline; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
125 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
126 g_return_if_fail(session != NULL); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
127 g_return_if_fail(session->notification != NULL); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
128 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
129 cmdproc = session->notification->cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
130 /*prepare PSM info*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
131 if(session->psm){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
132 g_free(session->psm); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
133 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
134 /*Get the PSM string from Gaim's Status Line*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
135 presence = gaim_account_get_presence(account); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
136 status = gaim_presence_get_active_status(presence); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
137 statusline = gaim_status_get_attr_string(status, "message"); |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
138 session ->psm = msn_build_psm(statusline, NULL, NULL); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
139 payload = session->psm; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
140 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
141 gaim_debug_info("MaYuan","UUX{%s}\n",payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
142 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
143 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
144 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
145 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
146 |
14192 | 147 void |
148 msn_change_status(MsnSession *session) | |
149 { | |
14391 | 150 GaimAccount *account; |
14192 | 151 MsnCmdProc *cmdproc; |
152 MsnUser *user; | |
153 MsnObject *msnobj; | |
154 const char *state_text; | |
155 | |
156 g_return_if_fail(session != NULL); | |
157 g_return_if_fail(session->notification != NULL); | |
158 | |
14391 | 159 account = session->account; |
14192 | 160 cmdproc = session->notification->cmdproc; |
161 user = session->user; | |
162 state_text = msn_state_get_text(msn_state_from_account(account)); | |
163 | |
164 /* If we're not logged in yet, don't send the status to the server, | |
165 * it will be sent when login completes | |
166 */ | |
167 if (!session->logged_in) | |
168 return; | |
169 | |
170 msnobj = msn_user_get_object(user); | |
171 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
172 if (msnobj == NULL){ |
14192 | 173 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text, |
174 MSN_CLIENT_ID); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
175 }else{ |
14192 | 176 char *msnobj_str; |
177 | |
178 msnobj_str = msn_object_to_string(msnobj); | |
179 | |
180 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text, | |
181 MSN_CLIENT_ID, gaim_url_encode(msnobj_str)); | |
182 | |
183 g_free(msnobj_str); | |
184 } | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14391
diff
changeset
|
185 msn_set_psm(session); |
14192 | 186 } |
187 | |
188 const char * | |
189 msn_away_get_text(MsnAwayType type) | |
190 { | |
191 g_return_val_if_fail(type <= MSN_HIDDEN, NULL); | |
192 | |
193 return _(away_text[type]); | |
194 } | |
195 | |
196 const char * | |
197 msn_state_get_text(MsnAwayType state) | |
198 { | |
199 static char *status_text[] = | |
200 { "NLN", "NLN", "BSY", "IDL", "BRB", "AWY", "PHN", "LUN", "HDN", "HDN" }; | |
201 | |
202 return status_text[state]; | |
203 } | |
204 | |
205 MsnAwayType | |
206 msn_state_from_account(GaimAccount *account) | |
207 { | |
208 MsnAwayType msnstatus; | |
209 GaimPresence *presence; | |
210 GaimStatus *status; | |
211 const char *status_id; | |
212 | |
213 presence = gaim_account_get_presence(account); | |
214 status = gaim_presence_get_active_status(presence); | |
215 status_id = gaim_status_get_id(status); | |
216 | |
217 if (!strcmp(status_id, "away")) | |
218 msnstatus = MSN_AWAY; | |
219 else if (!strcmp(status_id, "brb")) | |
220 msnstatus = MSN_BRB; | |
221 else if (!strcmp(status_id, "busy")) | |
222 msnstatus = MSN_BUSY; | |
223 else if (!strcmp(status_id, "phone")) | |
224 msnstatus = MSN_PHONE; | |
225 else if (!strcmp(status_id, "lunch")) | |
226 msnstatus = MSN_LUNCH; | |
227 else if (!strcmp(status_id, "invisible")) | |
228 msnstatus = MSN_HIDDEN; | |
229 else | |
230 msnstatus = MSN_ONLINE; | |
231 | |
232 if ((msnstatus == MSN_ONLINE) && gaim_presence_is_idle(presence)) | |
233 msnstatus = MSN_IDLE; | |
234 | |
235 return msnstatus; | |
236 } |