libpurple/protocols/msn/state.c

Sat, 15 Sep 2007 23:53:15 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Sat, 15 Sep 2007 23:53:15 +0000
branch
cpw.khc.msnp14
changeset 20590
633c12c90fd7
parent 20589
312d830f7169
child 20591
8469ac3acbec
permissions
-rw-r--r--

Ignore empty currentmedia string.

5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file state.c State functions and definitions
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
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
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * (at your option) any later version.
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * GNU General Public License for more details.
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #include "msn.h"
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 #include "state.h"
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27 static const char *away_text[] =
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 {
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 N_("Busy"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 N_("Idle"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 N_("Be Right Back"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 N_("Away From Computer"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 N_("On The Phone"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 N_("Out To Lunch"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 N_("Available"),
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 N_("Available")
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39 };
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40
13866
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
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
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
44
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
45 /*
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
46 * WLM media PSM info build prcedure
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
47 *
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
48 * Result can like:
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
49 * <CurrentMedia>\0Music\01\0{0} - {1}\0 Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
50 * <CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
51 * <CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>"
b6a2c8d390ef [gaim-migrate @ 16716]
Ma Yuan <mayuan2006@gmail.com>
parents: 13856
diff changeset
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
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
55 {
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
56 xmlnode *dataNode,*psmNode,*mediaNode,*guidNode;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
57 char *result;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
58 int length;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
59
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
60 dataNode = xmlnode_new("Data");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
61
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
62 psmNode = xmlnode_new("PSM");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
63 if(psmstr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
64 xmlnode_insert_data(psmNode,psmstr,strlen(psmstr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
65 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
66 xmlnode_insert_child(dataNode,psmNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
67
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
68 mediaNode = xmlnode_new("CurrentMedia");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
69 if(mediastr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
70 xmlnode_insert_data(psmNode,mediastr,strlen(mediastr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
71 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
72 xmlnode_insert_child(dataNode,mediaNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
73
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
74 guidNode = xmlnode_new("MachineGuid");
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
75 if(guidstr != NULL){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
76 xmlnode_insert_data(guidNode,guidstr,strlen(guidstr));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
77 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
78 xmlnode_insert_child(dataNode,guidNode);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
79
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
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
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
82 return result;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
83 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
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 */
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
86 char *
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
87 msn_parse_currentmedia(const char *cmedia)
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;
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
90 char *inptr, *tmpptr;
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
91 GString *buffer = NULL;
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
92 int strings, tmp;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
93
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
94 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
95 purple_debug_info("msn", "No currentmedia string\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
96 return NULL;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
97 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
98
20522
177cad886d4c A bunch of MSNP14 stuff:
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20508
diff changeset
99 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
100
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
101 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
102
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
103 strings = 0;
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
104 while (strcmp(cmedia_array[++strings], "")); /* Yes, we want to skip the first empty string, apparently */
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
105
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
106 if ((strings > 3) && (!strcmp(cmedia_array[2], "1"))) { /* Check if enabled */
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
107 buffer = g_string_new(NULL);
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
108 inptr = cmedia_array[3];
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
109
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
110 #if 0
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
111 if(!strcmp(cmedia_array[1], "Music")) {
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
112 /* The music string seems to be of 'Title - Artist' form. */
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
113 } else if(!strcmp(cmedia_array[1], "Games")) {
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
114 } else if(!strcmp(cmedia_array[1], "Office")) {
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
115 }
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
116 #endif
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
117
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
118 while (*inptr!='\0') {
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
119 if ((*inptr == '{') && (strlen(inptr) > 2) && (*(inptr+2) == '}')) {
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
120 errno = 0;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
121 tmp = strtol(inptr+1,&tmpptr,10);
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
122 if(errno == 0 && tmpptr != inptr + 1 &&
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
123 tmp + 4 < strings) {
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
124 /* Replace {?} tag with appropriate text only when successful.
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
125 * Skip otherwise. */
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
126 buffer = g_string_append(buffer, cmedia_array[tmp + 4]);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
127 }
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
128 inptr += 3; /* Skip to the next char after '}' */
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
129 } else {
20589
312d830f7169 Improve the current-media parsing a little bit.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20578
diff changeset
130 buffer = g_string_append_c(buffer, *inptr++);
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
131 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
132 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
133 purple_debug_info("msn", "Parsed currentmedia string, result: \"%s\"\n",
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
134 buffer);
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
135 } else {
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
136 purple_debug_info("msn", "Current media marked disabled, not parsing\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
137 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
138
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
139 g_strfreev(cmedia_array);
20590
633c12c90fd7 Ignore empty currentmedia string.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20589
diff changeset
140 return buffer ? g_string_free(buffer, FALSE) : NULL;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
141 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
142
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
143 /* 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
144 char *
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
145 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
146 {
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
147 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
148 char *currentmedia;
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
149
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
150 purple_debug_info("msn","msn get CurrentMedia\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
151 payloadNode = xmlnode_from_str(xml_str, len);
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
152 if (!payloadNode){
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
153 purple_debug_error("msn","PSM XML parse Error!\n");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
154 return NULL;
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 currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia");
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
157 if (currentmediaNode == NULL){
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
158 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
159 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
160 return NULL;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
161 }
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 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
163
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
164 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
165
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
166 return currentmedia;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
167 }
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
168
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
169 /*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
170 char *
b0ef257ef8d4 The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
171 msn_get_psm(char *xml_str, gsize len)
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
172 {
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
173 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
174 char *psm;
13889
1030d616ee64 [gaim-migrate @ 17004]
Ma Yuan <mayuan2006@gmail.com>
parents: 13888
diff changeset
175
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
176 purple_debug_info("MSNP14","msn get PSM\n");
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
177 payloadNode = xmlnode_from_str(xml_str, len);
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
178 if (!payloadNode){
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
179 purple_debug_error("MSNP14","PSM XML parse Error!\n");
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
180 return NULL;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
181 }
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
182 psmNode = xmlnode_get_child(payloadNode, "PSM");
13889
1030d616ee64 [gaim-migrate @ 17004]
Ma Yuan <mayuan2006@gmail.com>
parents: 13888
diff changeset
183 if (psmNode == NULL){
20550
af5abde0d99f Misc cleanups, better error handling, and print the Address Book received from the server in a human readable way.
Carlos Silva <typ0@pidgin.im>
parents: 20522
diff changeset
184 purple_debug_info("MSNP14","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
185 xmlnode_free(payloadNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
186 return NULL;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
187 }
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 psm = xmlnode_get_data(psmNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
189
20578
82571739414b Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20574
diff changeset
190 xmlnode_free(payloadNode);
13888
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
191
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
192 return psm;
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
193 }
bda6f562e1e6 [gaim-migrate @ 17003]
Ma Yuan <mayuan2006@gmail.com>
parents: 13866
diff changeset
194
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
195 /* set the MSN's PSM info,Currently Read from the status Line
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
196 * Thanks for Cris Code
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
197 */
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
198 void
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
199 msn_set_psm(MsnSession *session)
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
200 {
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
201 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
202 PurplePresence *presence;
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
203 PurpleStatus *status;
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
204 MsnCmdProc *cmdproc;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
205 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
206 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
207 const char *statusline;
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
208 gchar *unescapedstatusline;
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
209
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
210 g_return_if_fail(session != NULL);
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
211 g_return_if_fail(session->notification != NULL);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
212
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
213 cmdproc = session->notification->cmdproc;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
214 /*prepare PSM info*/
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
215 if(session->psm){
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
216 g_free(session->psm);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
217 }
16183
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
218 /*Get the PSM string from Purple's Status Line*/
92409c474659 Committing khc's msnp14 changes from Trac Ticket #148. --rlaager
Ka-Hing Cheung <khc@pidgin.im>
parents: 15884
diff changeset
219 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
220 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
221 statusline = purple_status_get_attr_string(status, "message");
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
222 unescapedstatusline = purple_unescape_html(statusline);
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
223 session->psm = msn_build_psm(unescapedstatusline, NULL, NULL);
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
224 g_free(unescapedstatusline);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
225 payload = session->psm;
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
226
20551
7a90042445cd Unescape our own status messages before sending them to the server so other clients show them correctly. Thanks to Simom for the patch. Fixes #738
Carlos Silva <typ0@pidgin.im>
parents: 20550
diff changeset
227 purple_debug_misc("MSNP14","Sending UUX command with payload: %s\n",payload);
13856
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
228 trans = msn_transaction_new(cmdproc, "UUX","%d",strlen(payload));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
229 msn_transaction_set_payload(trans, payload, strlen(payload));
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
230 msn_cmdproc_send_trans(cmdproc, trans);
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
231 }
a6511183749e [gaim-migrate @ 16546]
Ma Yuan <mayuan2006@gmail.com>
parents: 11992
diff changeset
232
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
233 void
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
234 msn_change_status(MsnSession *session)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
235 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
236 PurpleAccount *account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
237 MsnCmdProc *cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
238 MsnUser *user;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
239 MsnObject *msnobj;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
240 const char *state_text;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
241
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
242 g_return_if_fail(session != NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
243 g_return_if_fail(session->notification != NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9262
diff changeset
244
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
245 account = session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
246 cmdproc = session->notification->cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
247 user = session->user;
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
248 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
249
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
250 /* 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
251 * it will be sent when login completes
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
252 */
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
253 if (!session->logged_in)
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10481
diff changeset
254 return;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
255
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
256 msnobj = msn_user_get_object(user);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
257
20508
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
258 if (msnobj == NULL)
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
259 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
260 msn_cmdproc_send(cmdproc, "CHG", "%s %d", state_text,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
261 MSN_CLIENT_ID);
20508
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
262 }
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
263 else
a8855578906a Revert a bunch of whitespace changes so reviewing a diff against
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20485
diff changeset
264 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
265 char *msnobj_str;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
266
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
267 msnobj_str = msn_object_to_string(msnobj);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
268
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
269 msn_cmdproc_send(cmdproc, "CHG", "%s %d %s", state_text,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
270 MSN_CLIENT_ID, purple_url_encode(msnobj_str));
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
271
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
272 g_free(msnobj_str);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
273 }
13891
a357e7e3cddb [gaim-migrate @ 17014]
Ma Yuan <mayuan2006@gmail.com>
parents: 13889
diff changeset
274 msn_set_psm(session);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
275 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
276
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 const char *
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 msn_away_get_text(MsnAwayType type)
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279 {
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 6701
diff changeset
280 g_return_val_if_fail(type <= MSN_HIDDEN, NULL);
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281
5824
cbae51183b18 [gaim-migrate @ 6254]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5361
diff changeset
282 return _(away_text[type]);
5361
a964b856e97f [gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
284
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
285 const char *
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
286 msn_state_get_text(MsnAwayType state)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
287 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
288 static char *status_text[] =
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
289 { "NLN", "NLN", "BSY", "IDL", "BRB", "AWY", "PHN", "LUN", "HDN", "HDN" };
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
290
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
291 return status_text[state];
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8475
diff changeset
292 }
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
293
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
294 MsnAwayType
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
295 msn_state_from_account(PurpleAccount *account)
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
296 {
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
297 MsnAwayType msnstatus;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
298 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
299 PurpleStatus *status;
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
300 const char *status_id;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
301
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 presence = purple_account_get_presence(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
303 status = purple_presence_get_active_status(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
304 status_id = purple_status_get_id(status);
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
305
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
306 if (!strcmp(status_id, "away"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
307 msnstatus = MSN_AWAY;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
308 else if (!strcmp(status_id, "brb"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
309 msnstatus = MSN_BRB;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
310 else if (!strcmp(status_id, "busy"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
311 msnstatus = MSN_BUSY;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
312 else if (!strcmp(status_id, "phone"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
313 msnstatus = MSN_PHONE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
314 else if (!strcmp(status_id, "lunch"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
315 msnstatus = MSN_LUNCH;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
316 else if (!strcmp(status_id, "invisible"))
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
317 msnstatus = MSN_HIDDEN;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
318 else
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
319 msnstatus = MSN_ONLINE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
320
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
321 if ((msnstatus == MSN_ONLINE) && purple_presence_is_idle(presence))
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
322 msnstatus = MSN_IDLE;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
323
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
324 return msnstatus;
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10908
diff changeset
325 }

mercurial