Mon, 24 Nov 2008 05:51:18 +0000
Add the Games and Office media to MSN as attributes tacked on to the tune
status, as suggested by rlaager. Should probably generalize "tune" into
"media" for 3.0. Also, updates the status text to include the album, if
it's available.
Fixes #4872.
| 5361 | 1 | /** |
| 2 | * @file state.c State functions and definitions | |
| 3 | * | |
| 15884 | 4 | * purple |
| 5361 | 5 | * |
| 15884 | 6 | * Purple is the legal property of its developers, whose names are too numerous |
|
9198
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
8 | * source distribution. |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5824
diff
changeset
|
9 | * |
| 5361 | 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 | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
15884
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 5361 | 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 | ||
| 13866 | 41 | /* Local Function Prototype*/ |
|
20474
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
42 | static char *msn_build_psm(const char *psmstr,const char *mediastr, |
|
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
43 | const char *guidstr); |
| 13866 | 44 | |
| 45 | /* | |
| 46 | * WLM media PSM info build prcedure | |
| 47 | * | |
| 48 | * Result can like: | |
|
20591
8469ac3acbec
Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents:
20590
diff
changeset
|
49 | * <CurrentMedia>\0Music\01\0{0} - {1}\0Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\ |
| 13866 | 50 | * <CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\ |
| 51 | * <CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>" | |
| 52 | */ | |
|
20474
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
53 | static char * |
|
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
54 | msn_build_psm(const char *psmstr,const char *mediastr, const char *guidstr) |
| 13856 | 55 | { |
| 56 | xmlnode *dataNode,*psmNode,*mediaNode,*guidNode; | |
| 57 | char *result; | |
| 58 | int length; | |
| 59 | ||
| 60 | dataNode = xmlnode_new("Data"); | |
| 61 | ||
| 62 | psmNode = xmlnode_new("PSM"); | |
| 63 | if(psmstr != NULL){ | |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
64 | xmlnode_insert_data(psmNode, psmstr, -1); |
| 13856 | 65 | } |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
66 | xmlnode_insert_child(dataNode, psmNode); |
| 13856 | 67 | |
| 68 | mediaNode = xmlnode_new("CurrentMedia"); | |
| 69 | if(mediastr != NULL){ | |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
70 | xmlnode_insert_data(mediaNode, mediastr, -1); |
| 13856 | 71 | } |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
72 | xmlnode_insert_child(dataNode, mediaNode); |
| 13856 | 73 | |
| 74 | guidNode = xmlnode_new("MachineGuid"); | |
| 75 | if(guidstr != NULL){ | |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
76 | xmlnode_insert_data(guidNode, guidstr, -1); |
| 13856 | 77 | } |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
78 | xmlnode_insert_child(dataNode, guidNode); |
| 13856 | 79 | |
|
24025
7827cb5dabe2
Rely on xmlnode_insert_data to call strlen on a bunch of MSN status strings.
Will Thompson <resiak@pidgin.im>
parents:
23830
diff
changeset
|
80 | result = xmlnode_to_str(dataNode, &length); |
|
20574
41544383ab30
Plug some leak.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20551
diff
changeset
|
81 | xmlnode_free(dataNode); |
| 13856 | 82 | return result; |
| 83 | } | |
| 84 | ||
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
85 | /* parse CurrentMedia string */ |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
86 | gboolean |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
87 | msn_parse_currentmedia(const char *cmedia, CurrentMedia *media) |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
88 | { |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
89 | char **cmedia_array; |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
90 | int strings = 0; |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
91 | gboolean parsed = FALSE; |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
92 | |
|
20589
312d830f7169
Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20578
diff
changeset
|
93 | if ((cmedia == NULL) || (*cmedia == '\0')) { |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
94 | purple_debug_info("msn", "No currentmedia string\n"); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
95 | return FALSE; |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
96 | } |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
97 | |
|
20522
177cad886d4c
A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20508
diff
changeset
|
98 | purple_debug_info("msn", "Parsing currentmedia string: \"%s\"\n", cmedia); |
|
177cad886d4c
A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20508
diff
changeset
|
99 | |
|
20589
312d830f7169
Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20578
diff
changeset
|
100 | cmedia_array = g_strsplit(cmedia, "\\0", 0); |
|
312d830f7169
Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20578
diff
changeset
|
101 | |
|
21194
c2da1eed951e
Remove commented out code, and add soem notes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21193
diff
changeset
|
102 | /* |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
103 | * 0: Application |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
104 | * 1: 'Music'/'Games'/'Office' |
|
21194
c2da1eed951e
Remove commented out code, and add soem notes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21193
diff
changeset
|
105 | * 2: '1' if enabled, '0' if not |
|
c2da1eed951e
Remove commented out code, and add soem notes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21193
diff
changeset
|
106 | * 3: Format (eg. {0} by {1}) |
|
c2da1eed951e
Remove commented out code, and add soem notes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21193
diff
changeset
|
107 | * 4: Title |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
108 | * If 'Music': |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
109 | * 5: Artist |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
110 | * 6: Album |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
111 | * 7: ? |
|
21194
c2da1eed951e
Remove commented out code, and add soem notes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21193
diff
changeset
|
112 | */ |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
113 | #if GLIB_CHECK_VERSION(2,6,0) |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
114 | strings = g_strv_length(cmedia_array); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
115 | #else |
|
20591
8469ac3acbec
Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents:
20590
diff
changeset
|
116 | while (cmedia_array[++strings] != NULL); |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
117 | #endif |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
118 | |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
119 | if (strings >= 4 && !strcmp(cmedia_array[2], "1")) { |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
120 | parsed = TRUE; |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
121 | |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
122 | if (!strcmp(cmedia_array[1], "Music")) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
123 | media->type = CURRENT_MEDIA_MUSIC; |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
124 | else if (!strcmp(cmedia_array[1], "Games")) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
125 | media->type = CURRENT_MEDIA_GAMES; |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
126 | else if (!strcmp(cmedia_array[1], "Office")) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
127 | media->type = CURRENT_MEDIA_OFFICE; |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
128 | else |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
129 | media->type = CURRENT_MEDIA_UNKNOWN; |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
130 | |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
131 | g_free(media->title); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
132 | if (strings == 4) { |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
133 | media->title = g_strdup(cmedia_array[3]); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
134 | } else { |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
135 | media->title = g_strdup(cmedia_array[4]); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
136 | } |
|
20591
8469ac3acbec
Various (untested) changes to the CurrentMedia parsing. This code is a
Richard Laager <rlaager@pidgin.im>
parents:
20590
diff
changeset
|
137 | |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
138 | g_free(media->artist); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
139 | if (strings > 5) |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
140 | media->artist = g_strdup(cmedia_array[5]); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
141 | else |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
142 | media->artist = NULL; |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
143 | |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
144 | g_free(media->album); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
145 | if (strings > 6) |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
146 | media->album = g_strdup(cmedia_array[6]); |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
147 | else |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
148 | media->album = NULL; |
|
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
149 | |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
150 | } |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
151 | |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
152 | g_strfreev(cmedia_array); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
153 | |
|
22965
f19cc28257f8
Leak plug in parsing MSN currentmedia.
Daniel Atallah <datallah@pidgin.im>
parents:
21906
diff
changeset
|
154 | return parsed; |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
155 | } |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
156 | |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
157 | /* get the CurrentMedia info from the XML string */ |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
158 | char * |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
159 | msn_get_currentmedia(char *xml_str, gsize len) |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
160 | { |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
161 | xmlnode *payloadNode, *currentmediaNode; |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
162 | char *currentmedia; |
|
23441
fd45c23a3eb2
Delete trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
22969
diff
changeset
|
163 | |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
164 | purple_debug_info("msn", "Get CurrentMedia\n"); |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
165 | payloadNode = xmlnode_from_str(xml_str, len); |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
166 | if (!payloadNode) { |
|
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
167 | purple_debug_error("msn", "PSM XML parse Error!\n"); |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
168 | return NULL; |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
169 | } |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
170 | currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia"); |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
171 | if (currentmediaNode == NULL) { |
|
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
172 | purple_debug_info("msn", "No CurrentMedia Node"); |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
173 | xmlnode_free(payloadNode); |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
174 | return NULL; |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
175 | } |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
176 | currentmedia = xmlnode_get_data(currentmediaNode); |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
177 | |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
178 | xmlnode_free(payloadNode); |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
179 | |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
180 | return currentmedia; |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
181 | } |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
182 | |
| 13888 | 183 | /*get the PSM info from the XML string*/ |
|
20474
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
184 | char * |
|
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
185 | msn_get_psm(char *xml_str, gsize len) |
| 13888 | 186 | { |
| 187 | xmlnode *payloadNode, *psmNode; | |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
188 | char *psm; |
|
23441
fd45c23a3eb2
Delete trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
22969
diff
changeset
|
189 | |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
190 | purple_debug_info("msn", "msn get PSM\n"); |
| 13888 | 191 | payloadNode = xmlnode_from_str(xml_str, len); |
| 192 | if (!payloadNode){ | |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
193 | purple_debug_error("msn", "PSM XML parse Error!\n"); |
| 13888 | 194 | return NULL; |
| 195 | } | |
| 196 | psmNode = xmlnode_get_child(payloadNode, "PSM"); | |
| 13889 | 197 | if (psmNode == NULL){ |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
198 | purple_debug_info("msn", "No PSM status Node"); |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
199 | xmlnode_free(payloadNode); |
| 13888 | 200 | return NULL; |
| 201 | } | |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
202 | psm = xmlnode_get_data(psmNode); |
| 13888 | 203 | |
|
20578
82571739414b
Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20574
diff
changeset
|
204 | xmlnode_free(payloadNode); |
| 13888 | 205 | |
| 206 | return psm; | |
| 207 | } | |
| 208 | ||
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
209 | static char * |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
210 | create_media_string(PurplePresence *presence) |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
211 | { |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
212 | const char *artist, *title, *album, *game, *office; |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
213 | char *ret; |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
214 | PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
215 | if (!status || !purple_status_is_active(status)) |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
216 | return g_strdup_printf("\\0Music\\00\\0\\0"); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
217 | |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
218 | title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
219 | artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
220 | album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
221 | game = purple_status_get_attr_string(status, "game"); |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
222 | office = purple_status_get_attr_string(status, "office"); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
223 | |
|
24771
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
224 | if (title && *title) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
225 | ret = g_strdup_printf("WMP\\0Music\\01\\0{0}%s%s\\0%s\\0%s\\0%s\\0", |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
226 | artist ? " - {1}" : "", |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
227 | album ? " ({2})" : "", |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
228 | title, |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
229 | artist ? artist : "", |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
230 | album ? album : ""); |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
231 | else if (game && *game) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
232 | ret = g_strdup_printf("\\0Games\\01\\0Playing {0}\\0%s\\0", game); |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
233 | else if (office && *office) |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
234 | ret = g_strdup_printf("\\0Office\\01\\0Editing {0}\\0%s\\0", office); |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
235 | else |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
236 | ret = g_strdup_printf("\\0Music\\00\\0\\0"); |
|
7a17ecc0c85b
Add the Games and Office media to MSN as attributes tacked on to the tune
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24025
diff
changeset
|
237 | |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
238 | return ret; |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
239 | } |
|
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
240 | |
|
23441
fd45c23a3eb2
Delete trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
22969
diff
changeset
|
241 | /* set the MSN's PSM info,Currently Read from the status Line |
| 13891 | 242 | * Thanks for Cris Code |
| 243 | */ | |
| 13856 | 244 | void |
| 245 | msn_set_psm(MsnSession *session) | |
| 246 | { | |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
247 | PurpleAccount *account = session->account; |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
248 | PurplePresence *presence; |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
249 | PurpleStatus *status; |
| 13856 | 250 | MsnCmdProc *cmdproc; |
| 251 | MsnTransaction *trans; | |
|
20474
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
252 | char *payload; |
|
b0ef257ef8d4
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents:
20472
diff
changeset
|
253 | const char *statusline; |
|
21453
a90cf329cd48
propagate from branch 'im.pidgin.pidgin.next.minor' (head 2f91b326b3f073672c2475a8c30a06826da9b82f)
Ka-Hing Cheung <khc@pidgin.im>
diff
changeset
|
254 | gchar *statusline_stripped, *media = NULL; |
| 13891 | 255 | |
| 256 | g_return_if_fail(session != NULL); | |
| 257 | g_return_if_fail(session->notification != NULL); | |
| 13856 | 258 | |
| 259 | cmdproc = session->notification->cmdproc; | |
|
21073
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
260 | |
|
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
261 | /* Get the PSM string from Purple's Status Line */ |
|
16183
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
262 | presence = purple_account_get_presence(account); |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
263 | status = purple_presence_get_active_status(presence); |
|
92409c474659
Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents:
15884
diff
changeset
|
264 | statusline = purple_status_get_attr_string(status, "message"); |
|
21073
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
265 | |
|
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
266 | /* MSN expects plain text, not HTML */ |
|
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
267 | statusline_stripped = purple_markup_strip_html(statusline); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20608
diff
changeset
|
268 | media = create_media_string(presence); |
|
21073
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
269 | g_free(session->psm); |
|
21453
a90cf329cd48
propagate from branch 'im.pidgin.pidgin.next.minor' (head 2f91b326b3f073672c2475a8c30a06826da9b82f)
Ka-Hing Cheung <khc@pidgin.im>
diff
changeset
|
270 | session->psm = msn_build_psm(statusline_stripped, media, NULL); |
|
21073
a2f27248579c
MSN personal status messages are plain text, not HTML. Previously, we were unescaping the message but not stripping it, which left any HTML tags intact.
Evan Schoenberg <evands@pidgin.im>
parents:
20608
diff
changeset
|
271 | |
| 13856 | 272 | payload = session->psm; |
|
23830
1436e3de5d6c
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23441
diff
changeset
|
273 | purple_debug_misc("msn", "Sending UUX command with payload: %s\n", payload); |
|
22969
51f5e7777915
This cleans up a bunch of warnings that stem from the fact that size_t and
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22965
diff
changeset
|
274 | trans = msn_transaction_new(cmdproc, "UUX", "%" G_GSIZE_FORMAT, strlen(payload)); |
| 13856 | 275 | msn_transaction_set_payload(trans, payload, strlen(payload)); |
| 276 | msn_cmdproc_send_trans(cmdproc, trans); | |
| 21906 | 277 | |
| 278 | g_free(statusline_stripped); | |
| 279 | g_free(media); | |
| 13856 | 280 | } |
| 281 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
282 | void |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
283 | msn_change_status(MsnSession *session) |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
284 | { |
| 15884 | 285 | PurpleAccount *account; |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
286 | MsnCmdProc *cmdproc; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
287 | MsnUser *user; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
288 | MsnObject *msnobj; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
289 | const char *state_text; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
290 | |
|
10481
a5d6b8e1717d
[gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9262
diff
changeset
|
291 | g_return_if_fail(session != NULL); |
|
a5d6b8e1717d
[gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9262
diff
changeset
|
292 | g_return_if_fail(session->notification != NULL); |
|
a5d6b8e1717d
[gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9262
diff
changeset
|
293 | |
|
14453
1cc75906700c
[gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
294 | account = session->account; |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
295 | cmdproc = session->notification->cmdproc; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
296 | user = session->user; |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
297 | state_text = msn_state_get_text(msn_state_from_account(account)); |
|
10908
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
298 | |
|
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
299 | /* If we're not logged in yet, don't send the status to the server, |
|
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
300 | * it will be sent when login completes |
|
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
301 | */ |
|
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
302 | if (!session->logged_in) |
|
15694532c3c6
[gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10481
diff
changeset
|
303 | return; |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
304 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
305 | msnobj = msn_user_get_object(user); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
306 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
307 | if (msnobj == NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
308 | { |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
309 | msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text, |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
310 | MSN_CLIENT_ID); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
311 | } |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
312 | else |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
313 | { |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
314 | char *msnobj_str; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
315 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
316 | msnobj_str = msn_object_to_string(msnobj); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
317 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
318 | msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text, |
| 15884 | 319 | MSN_CLIENT_ID, purple_url_encode(msnobj_str)); |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
320 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
321 | g_free(msnobj_str); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
322 | } |
| 13891 | 323 | msn_set_psm(session); |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
324 | } |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
325 | |
| 5361 | 326 | const char * |
| 327 | msn_away_get_text(MsnAwayType type) | |
| 328 | { | |
| 7631 | 329 | g_return_val_if_fail(type <= MSN_HIDDEN, NULL); |
| 5361 | 330 | |
|
5824
cbae51183b18
[gaim-migrate @ 6254]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5361
diff
changeset
|
331 | return _(away_text[type]); |
| 5361 | 332 | } |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
333 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
334 | const char * |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
335 | msn_state_get_text(MsnAwayType state) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
336 | { |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
337 | static char *status_text[] = |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
338 | { "NLN", "NLN", "BSY", "IDL", "BRB", "AWY", "PHN", "LUN", "HDN", "HDN" }; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
339 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
340 | return status_text[state]; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8475
diff
changeset
|
341 | } |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
342 | |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
343 | MsnAwayType |
| 15884 | 344 | msn_state_from_account(PurpleAccount *account) |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
345 | { |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
346 | MsnAwayType msnstatus; |
| 15884 | 347 | PurplePresence *presence; |
| 348 | PurpleStatus *status; | |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
349 | const char *status_id; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
350 | |
| 15884 | 351 | presence = purple_account_get_presence(account); |
| 352 | status = purple_presence_get_active_status(presence); | |
| 353 | status_id = purple_status_get_id(status); | |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
354 | |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
355 | if (!strcmp(status_id, "away")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
356 | msnstatus = MSN_AWAY; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
357 | else if (!strcmp(status_id, "brb")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
358 | msnstatus = MSN_BRB; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
359 | else if (!strcmp(status_id, "busy")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
360 | msnstatus = MSN_BUSY; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
361 | else if (!strcmp(status_id, "phone")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
362 | msnstatus = MSN_PHONE; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
363 | else if (!strcmp(status_id, "lunch")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
364 | msnstatus = MSN_LUNCH; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
365 | else if (!strcmp(status_id, "invisible")) |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
366 | msnstatus = MSN_HIDDEN; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
367 | else |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
368 | msnstatus = MSN_ONLINE; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
369 | |
| 15884 | 370 | if ((msnstatus == MSN_ONLINE) && purple_presence_is_idle(presence)) |
|
11992
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
371 | msnstatus = MSN_IDLE; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
372 | |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
373 | return msnstatus; |
|
906176cc9b22
[gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10908
diff
changeset
|
374 | } |