libpurple/protocols/qq/buddy_info.c

Wed, 22 Oct 2008 15:00:47 +0000

author
SHiNE CsyFeK <csyfek@gmail.com>
date
Wed, 22 Oct 2008 15:00:47 +0000
branch
openq
changeset 24356
48097e816313
parent 24355
c9deccad8f3f
child 24358
c1afcf2d6186
permissions
-rw-r--r--

2008.10.07 - ccpaging <ccpaging(at)gmail.com>
* Update buddy icon

13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
1 /**
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
2 * @file buddy_info.c
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
4 * purple
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
8 * source distribution.
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
9 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
13 * (at your option) any later version.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
14 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
18 * GNU General Public License for more details.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
19 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
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: 16900
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
23 */
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
24
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
25 #include "internal.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
26 #include "debug.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
27 #include "notify.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
28 #include "request.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
29
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
30 #include "utils.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
31 #include "packet_parse.h"
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23212
diff changeset
32 #include "buddy_list.h"
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
33 #include "buddy_info.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
34 #include "char_conv.h"
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
35 #include "im.h"
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
36 #include "qq_define.h"
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23212
diff changeset
37 #include "qq_base.h"
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23190
diff changeset
38 #include "qq_network.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
39
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
40 #define QQ_HOROSCOPE_SIZE 13
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
41 static const gchar *horoscope_names[] = {
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
42 "-", N_("Aquarius"), N_("Pisces"), N_("Aries"), N_("Taurus"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
43 N_("Gemini"), N_("Cancer"), N_("Leo"), N_("Virgo"), N_("Libra"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
44 N_("Scorpio"), N_("Sagittarius"), N_("Capricorn")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
45 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
46
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
47 #define QQ_ZODIAC_SIZE 13
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
48 static const gchar *zodiac_names[] = {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
49 "-", N_("Rat"), N_("Ox"), N_("Tiger"), N_("Rabbit"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
50 N_("Dragon"), N_("Snake"), N_("Horse"), N_("Goat"), N_("Monkey"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
51 N_("Rooster"), N_("Dog"), N_("Pig")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
52 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
53
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
54 #define QQ_BLOOD_SIZE 6
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
55 static const gchar *blood_types[] = {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
56 "-", "A", "B", "O", "AB", N_("Other")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
57 };
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
58
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
59 #define QQ_PUBLISH_SIZE 3
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
60 static const gchar *publish_types[] = {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
61 N_("Visible"), N_("Firend Only"), N_("Private")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
62 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
63
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
64 #define QQ_GENDER_SIZE 3
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
65 static const gchar *genders[] = {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
66 N_("Private"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
67 N_("Male"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
68 N_("Female"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
69 };
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
70
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
71 static const gchar *genders_zh[] = {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
72 N_("-"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
73 N_("\xc4\xd0"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
74 N_("\xc5\xae"),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
75 };
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
76
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23212
diff changeset
77 #define QQ_FACES 100
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
78
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
79 enum {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
80 QQ_INFO_UID = 0, QQ_INFO_NICK, QQ_INFO_COUNTRY, QQ_INFO_PROVINCE, QQ_INFO_ZIPCODE,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
81 QQ_INFO_ADDR, QQ_INFO_TEL, QQ_INFO_AGE, QQ_INFO_GENDER, QQ_INFO_NAME, QQ_INFO_EMAIL,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
82 QQ_INFO_PG_SN, QQ_INFO_PG_NUM, QQ_INFO_PG_SP, QQ_INFO_PG_BASE_NUM, QQ_INFO_PG_TYPE,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
83 QQ_INFO_OCCU, QQ_INFO_HOME_PAGE, QQ_INFO_AUTH_TYPE, QQ_INFO_UNKNOW1, QQ_INFO_UNKNOW2,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
84 QQ_INFO_FACE, QQ_INFO_MOBILE, QQ_INFO_MOBILE_TYPE, QQ_INFO_INTRO, QQ_INFO_CITY,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
85 QQ_INFO_UNKNOW3, QQ_INFO_UNKNOW4, QQ_INFO_UNKNOW5,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
86 QQ_INFO_IS_PUB_MOBILE, QQ_INFO_IS_PUB_CONTACT, QQ_INFO_COLLEGE, QQ_INFO_HOROSCOPE,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
87 QQ_INFO_ZODIAC, QQ_INFO_BLOOD, QQ_INFO_SHOW, QQ_INFO_UNKNOW6,
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
88 QQ_INFO_LAST_2007, QQ_INFO_LAST,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
89 };
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
90
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
91 enum {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
92 QQ_FIELD_UNUSED = 0, QQ_FIELD_BASE, QQ_FIELD_EXT, QQ_FIELD_CONTACT, QQ_FIELD_ADDR
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
93 };
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
94
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
95 enum {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
96 QQ_FIELD_LABEL = 0, QQ_FIELD_STRING, QQ_FIELD_MULTI, QQ_FIELD_BOOL, QQ_FIELD_CHOICE,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
97 };
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
98
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
99 typedef struct {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
100 int iclass;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
101 int type;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
102 char *id;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
103 char *text;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
104 const gchar **choice;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
105 int choice_size;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
106 } QQ_FIELD_INFO;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
107
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
108 static const QQ_FIELD_INFO field_infos[] = {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
109 { QQ_FIELD_BASE, QQ_FIELD_STRING, "uid", N_("QQ Number"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
110 { QQ_FIELD_BASE, QQ_FIELD_STRING, "nick", N_("Nickname"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
111 { QQ_FIELD_ADDR, QQ_FIELD_STRING, "country", N_("Country/Region"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
112 { QQ_FIELD_ADDR, QQ_FIELD_STRING, "province", N_("Province/State"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
113 { QQ_FIELD_ADDR, QQ_FIELD_STRING, "zipcode", N_("Zipcode"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
114 { QQ_FIELD_ADDR, QQ_FIELD_STRING, "address", N_("Address"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
115 { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "tel", N_("Phone Number"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
116 { QQ_FIELD_BASE, QQ_FIELD_STRING, "age", N_("Age"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
117 { QQ_FIELD_BASE, QQ_FIELD_CHOICE, "gender", N_("Gender"), genders, QQ_GENDER_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
118 { QQ_FIELD_BASE, QQ_FIELD_STRING, "name", N_("Name"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
119 { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "email", N_("Email"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
120 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sn", "Pager Serial Num", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
121 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_num", "Pager Num", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
122 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sp", "Pager Serivce Provider", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
123 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_sta", "Pager Station Num", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
124 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "pg_type", "Pager Type", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
125 { QQ_FIELD_BASE, QQ_FIELD_STRING, "occupation", N_("Occupation"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
126 { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "homepage", N_("Homepage"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
127 { QQ_FIELD_BASE, QQ_FIELD_BOOL, "auth", N_("Authorize adding"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
128 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow1", "Unknow1", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
129 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow2", "Unknow2", NULL, 0 },
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
130 { QQ_FIELD_BASE, QQ_FIELD_STRING, "face", "Face", NULL, 0 },
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
131 { QQ_FIELD_CONTACT, QQ_FIELD_STRING, "mobile", N_("Cellphone Number"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
132 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "mobile_type","Cellphone Type", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
133 { QQ_FIELD_BASE, QQ_FIELD_MULTI, "intro", N_("Personal Introduction"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
134 { QQ_FIELD_ADDR, QQ_FIELD_STRING, "city", N_("City/Area"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
135 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow3", "Unknow3", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
136 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow4", "Unknow4", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
137 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow5", "Unknow5", NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
138 { QQ_FIELD_UNUSED, QQ_FIELD_CHOICE, "pub_mobile", N_("Publish Mobile"), publish_types, QQ_PUBLISH_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
139 { QQ_FIELD_CONTACT, QQ_FIELD_CHOICE, "pub_contact", N_("Publish Contact"), publish_types, QQ_PUBLISH_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
140 { QQ_FIELD_EXT, QQ_FIELD_STRING, "college", N_("College"), NULL, 0 },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
141 { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "horoscope", N_("Horoscope"), horoscope_names, QQ_HOROSCOPE_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
142 { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "zodiac", N_("Zodiac"), zodiac_names, QQ_ZODIAC_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
143 { QQ_FIELD_EXT, QQ_FIELD_CHOICE, "blood", N_("Blood"), blood_types, QQ_BLOOD_SIZE },
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
144 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "qq_show", "QQ Show", NULL, 0 },
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
145 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "unknow6", "Unknow6", NULL, 0 },
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
146 { QQ_FIELD_UNUSED, QQ_FIELD_STRING, "LAST_2005", "LAST_2005", NULL, 0 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
147 };
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
148
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
149 typedef struct _modify_info_request {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
150 PurpleConnection *gc;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
151 int iclass;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
152 gchar **segments;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
153 } modify_info_request;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
154
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
155 #ifdef DEBUG
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
156 static void info_debug(gchar **segments)
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
157 {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
158 int index;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
159 gchar *utf8_str;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
160 for (index = 0; segments[index] != NULL && index < QQ_INFO_LAST; index++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
161 if (field_infos[index].type == QQ_FIELD_STRING
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
162 || field_infos[index].type == QQ_FIELD_LABEL
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
163 || field_infos[index].type == QQ_FIELD_MULTI
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
164 || index == QQ_INFO_GENDER) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
165 utf8_str = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
166 purple_debug_info("QQ_BUDDY_INFO", "%s: %s\n", field_infos[index]. text, utf8_str);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
167 g_free(utf8_str);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
168 continue;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
169 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
170 purple_debug_info("QQ_BUDDY_INFO", "%s: %s\n", field_infos[index]. text, segments[index]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
171 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
172 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
173 #endif
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
174
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
175 static void info_display_only(PurpleConnection *gc, gchar **segments)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
176 {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
177 PurpleNotifyUserInfo *user_info;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
178 gchar *utf8_value;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
179 int index;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
180 int choice_num;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
181
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
182 user_info = purple_notify_user_info_new();
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
183
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
184 for (index = 1; segments[index] != NULL && index < QQ_INFO_LAST; index++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
185 if (field_infos[index].iclass == QQ_FIELD_UNUSED) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
186 continue;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
187 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
188 switch (field_infos[index].type) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
189 case QQ_FIELD_BOOL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
190 purple_notify_user_info_add_pair(user_info, field_infos[index].text,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
191 strtol(segments[index], NULL, 10) ? _("True") : _("False"));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
192 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
193 case QQ_FIELD_CHOICE:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
194 choice_num = strtol(segments[index], NULL, 10);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
195 if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
196
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
197 purple_notify_user_info_add_pair(user_info, field_infos[index].text, field_infos[index].choice[choice_num]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
198 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
199 case QQ_FIELD_LABEL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
200 case QQ_FIELD_STRING:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
201 case QQ_FIELD_MULTI:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
202 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
203 if (strlen(segments[index]) != 0) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
204 utf8_value = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
205 purple_notify_user_info_add_pair(user_info, field_infos[index].text, utf8_value);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
206 g_free(utf8_value);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
207 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
208 break;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
209 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
210 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
211
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
212 purple_notify_userinfo(gc, segments[0], user_info, NULL, NULL);
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
213
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
214 purple_notify_user_info_destroy(user_info);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
215 g_strfreev(segments);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
216 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
217
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
218 void qq_request_buddy_info(PurpleConnection *gc, guint32 uid,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
219 gint update_class, int action)
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
220 {
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
221 qq_data *qd;
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
222 gchar raw_data[16] = {0};
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
223
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
224 g_return_if_fail(uid != 0);
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
225
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
226 qd = (qq_data *) gc->proto_data;
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
227 g_snprintf(raw_data, sizeof(raw_data), "%d", uid);
24020
fe90d74977b6 applied changes from 8cebefbc6cd5d84acb69c74e69e8821f11dd225d
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24019
diff changeset
228 qq_send_cmd_mess(gc, QQ_CMD_GET_BUDDY_INFO, (guint8 *) raw_data, strlen(raw_data),
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
229 update_class, action);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
230 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
231
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
232 /* send packet to modify personal information */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
233 static void request_modify_info(PurpleConnection *gc, gchar **segments)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
234 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
235 gint bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
236 guint8 raw_data[MAX_PACKET_SIZE - 128] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
237 guint8 bar;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
238 gchar *join;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
239
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
240 g_return_if_fail(segments != NULL);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
241
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
242 bar = 0x1f;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
243
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
244 bytes += qq_put8(raw_data + bytes, bar);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
245 bytes += qq_put8(raw_data + bytes, bar);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
246
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
247 /* important! skip the first uid entry */
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
248 join = g_strjoinv("\x1f", segments + 1);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
249 bytes += qq_putdata(raw_data + bytes, (guint8 *)join, strlen(join));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
250 g_free(join);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
251
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
252 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
253
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
254 /* qq_show_packet("request_modify_info", raw_data, bytes); */
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
255 qq_send_cmd(gc, QQ_CMD_UPDATE_INFO, raw_data, bytes);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
256 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
257
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
258 static void info_modify_cancel_cb(modify_info_request *info_request)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
259 {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
260 g_strfreev(info_request->segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
261 g_free(info_request);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
262 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
263
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
264 /* parse fields and send info packet */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
265 static void info_modify_ok_cb(modify_info_request *info_request, PurpleRequestFields *fields)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
266 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
267 PurpleConnection *gc;
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
268 qq_data *qd;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
269 gchar **segments;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
270 int index;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
271 const char *utf8_str;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
272 gchar *value;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
273 int choice_num;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
274
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
275 gc = info_request->gc;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
276 g_return_if_fail(gc != NULL && info_request->gc);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
277 qd = (qq_data *) gc->proto_data;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
278 segments = info_request->segments;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
279 g_return_if_fail(segments != NULL);
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
280
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
281 for (index = 1; segments[index] != NULL && index < QQ_INFO_LAST; index++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
282 if (field_infos[index].iclass == QQ_FIELD_UNUSED) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
283 continue;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
284 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
285 if (!purple_request_fields_exists(fields, field_infos[index].id)) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
286 continue;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
287 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
288 switch (field_infos[index].type) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
289 case QQ_FIELD_BOOL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
290 value = purple_request_fields_get_bool(fields, field_infos[index].id)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
291 ? g_strdup("1") : g_strdup("0");
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
292 g_free(segments[index]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
293 segments[index] = value;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
294 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
295 case QQ_FIELD_CHOICE:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
296 choice_num = purple_request_fields_get_choice(fields, field_infos[index].id);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
297 if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0;
20228
ce019944d765 applied changes from 9d35dde0c779cca73548172223ba557f27d61882
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
298
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
299 if (index == QQ_INFO_GENDER) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
300 /* QQ Server only recept gender in Chinese */
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
301 value = g_strdup(genders_zh[choice_num]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
302 } else {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
303 value = g_strdup_printf("%d", choice_num);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
304 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
305 g_free(segments[index]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
306 segments[index] = value;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
307 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
308 case QQ_FIELD_LABEL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
309 case QQ_FIELD_STRING:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
310 case QQ_FIELD_MULTI:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
311 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
312 utf8_str = purple_request_fields_get_string(fields, field_infos[index].id);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
313 if (utf8_str == NULL) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
314 value = g_strdup("-");
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
315 } else {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
316 value = utf8_to_qq(utf8_str, QQ_CHARSET_DEFAULT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
317 if (value == NULL) value = g_strdup("-");
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
318 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
319 g_free(segments[index]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
320 segments[index] = value;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
321 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
322 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
323 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
324 request_modify_info(gc, segments);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
325
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
326 g_strfreev(segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
327 g_free(info_request);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
328 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
329
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
330 static void field_request_new(PurpleRequestFieldGroup *group, gint index, gchar **segments)
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
331 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
332 PurpleRequestField *field;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
333 gchar *utf8_value;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
334 int choice_num;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
335 int i;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
336
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
337 g_return_if_fail(index >=0 && segments[index] != NULL && index < QQ_INFO_LAST);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
338
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
339 switch (field_infos[index].type) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
340 case QQ_FIELD_STRING:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
341 case QQ_FIELD_MULTI:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
342 utf8_value = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
343 if (field_infos[index].type == QQ_FIELD_STRING) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
344 field = purple_request_field_string_new(
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
345 field_infos[index].id, field_infos[index].text, utf8_value, FALSE);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
346 } else {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
347 field = purple_request_field_string_new(
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
348 field_infos[index].id, field_infos[index].text, utf8_value, TRUE);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
349 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
350 purple_request_field_group_add_field(group, field);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
351 g_free(utf8_value);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
352 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
353 case QQ_FIELD_BOOL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
354 field = purple_request_field_bool_new(
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
355 field_infos[index].id, field_infos[index].text,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
356 strtol(segments[index], NULL, 10) ? TRUE : FALSE);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
357 purple_request_field_group_add_field(group, field);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
358 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
359 case QQ_FIELD_CHOICE:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
360 choice_num = strtol(segments[index], NULL, 10);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
361 if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
362
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
363 if (index == QQ_INFO_GENDER && strlen(segments[index]) != 0) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
364 for (i = 0; i < QQ_GENDER_SIZE; i++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
365 if (strcmp(segments[index], genders_zh[i]) == 0) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
366 choice_num = i;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
367 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
368 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
369 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
370 field = purple_request_field_choice_new(
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
371 field_infos[index].id, field_infos[index].text, choice_num);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
372 for (i = 0; i < field_infos[index].choice_size; i++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
373 purple_request_field_choice_add(field, field_infos[index].choice[i]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
374 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
375 purple_request_field_group_add_field(group, field);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
376 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
377 case QQ_FIELD_LABEL:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
378 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
379 field = purple_request_field_label_new(field_infos[index].id, segments[index]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
380 purple_request_field_group_add_field(group, field);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
381 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
382 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
383 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
384
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
385 static void info_modify_dialogue(PurpleConnection *gc, gchar **segments, int iclass)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
386 {
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
387 qq_data *qd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
388 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
389 PurpleRequestFields *fields;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
390 modify_info_request *info_request;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
391 gchar *utf8_title, *utf8_prim;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
392 int index;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
393
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
394 qd = (qq_data *) gc->proto_data;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
395 /* Keep one dialog once a time */
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
396 purple_request_close_with_handle(gc);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
397
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
398 fields = purple_request_fields_new();
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
399 group = purple_request_field_group_new(NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
400 purple_request_fields_add_group(fields, group);
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
401
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
402 for (index = 1; segments[index] != NULL && index < QQ_INFO_LAST; index++) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
403 if (field_infos[index].iclass != iclass) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
404 continue;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
405 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
406 field_request_new(group, index, segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
407 }
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
408
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
409 switch (iclass) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
410 case QQ_FIELD_CONTACT:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
411 utf8_title = g_strdup(_("Modify Contact"));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
412 utf8_prim = g_strdup_printf("%s for %s", _("Modify Contact"), segments[0]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
413 case QQ_FIELD_ADDR:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
414 utf8_title = g_strdup(_("Modify Address"));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
415 utf8_prim = g_strdup_printf("%s for %s", _("Modify Address"), segments[0]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
416 case QQ_FIELD_EXT:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
417 utf8_title = g_strdup(_("Modify Extend Information"));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
418 utf8_prim = g_strdup_printf("%s for %s", _("Modify Extend Information"), segments[0]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
419 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
420 case QQ_FIELD_BASE:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
421 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
422 utf8_title = g_strdup(_("Modify Information"));
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
423 utf8_prim = g_strdup_printf("%s for %s", _("Modify Information"), segments[0]);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
424 }
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
425
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
426 info_request = g_new0(modify_info_request, 1);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
427 info_request->gc = gc;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
428 info_request->iclass = iclass;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
429 info_request->segments = segments;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
430
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
431 purple_request_fields(gc,
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
432 utf8_title,
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
433 utf8_prim,
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
434 NULL,
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
435 fields,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
436 _("Update"), G_CALLBACK(info_modify_ok_cb),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
437 _("Cancel"), G_CALLBACK(info_modify_cancel_cb),
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
438 purple_connection_get_account(gc), NULL, NULL,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
439 info_request);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
440
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
441 g_free(utf8_title);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
442 g_free(utf8_prim);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
443 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
444
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
445 /* process the reply of modify_info packet */
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
446 void qq_process_modify_info_reply(guint8 *data, gint data_len, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
447 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
448 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
449
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
450 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
451
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
452 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
453
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
454 data[data_len] = '\0';
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
455 if (qd->uid == atoi((gchar *) data)) { /* return should be my uid */
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
456 purple_debug_info("QQ", "Update info ACK OK\n");
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
457 qq_got_attention(gc, _("Successed changing buddy information."));
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
458 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
459 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
460
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
461 static void request_set_buddy_icon(PurpleConnection *gc, gint face_num)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
462 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
463 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
464 PurplePresence *presence = purple_account_get_presence(account);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
465 qq_data *qd = (qq_data *) gc->proto_data;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
466 gint offset;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
467
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
468 if(purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_INVISIBLE)) {
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
469 offset = 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
470 } else if(purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_AWAY)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
471 || purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_EXTENDED_AWAY)) {
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
472 offset = 1;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
473 } else {
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
474 offset = 0;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
475 }
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
476
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
477 qd->my_icon = 3 * (face_num - 1) + offset;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
478 qq_request_buddy_info(gc, qd->uid, 0, QQ_BUDDY_INFO_SET_ICON);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
479 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
480
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
481 /* return the location of the buddy icon dir
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
482 * any application using libpurple but not installing the QQ buddy icons
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
483 * under datadir needs to set the pref below, or buddy icons won't work */
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
484 static const char *get_icon_dir(void)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
485 {
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
486 if (purple_prefs_exists("/plugins/prpl/qq/icon_dir"))
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
487 return purple_prefs_get_string("/plugins/prpl/qq/icon_dir");
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
488 else
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
489 return NULL;
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
490 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
491
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
492 /* TODO: custom faces for QQ members and users with level >= 16 */
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
493 void qq_set_buddy_icon_old(PurpleConnection *gc, PurpleStoredImage *img)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
494 {
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
495 gchar *icon;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
496 gint icon_num;
15351
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
497 gint icon_len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
498 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
499 const gchar *icon_path = purple_account_get_buddy_icon_path(account);
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
500 const gchar *buddy_icon_dir = get_icon_dir();
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
501 gint prefix_len = strlen(QQ_ICON_PREFIX);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
502 gint suffix_len = strlen(QQ_ICON_SUFFIX);
24300
aa3947bf4a6a disapproval of revision 'b3ebedfac7cbad2b4bdd322c45aa572c3cd2795b'
Daniel Atallah <datallah@pidgin.im>
parents: 24299
diff changeset
503 gint dir_len = buddy_icon_dir ? strlen(buddy_icon_dir) : 0;
aa3947bf4a6a disapproval of revision 'b3ebedfac7cbad2b4bdd322c45aa572c3cd2795b'
Daniel Atallah <datallah@pidgin.im>
parents: 24299
diff changeset
504 gchar *errmsg = g_strdup_printf(_("Setting custom faces is not currently supported. Please choose an image from %s."), buddy_icon_dir ? buddy_icon_dir : "(null)");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
505 gboolean icon_global = purple_account_get_bool(gc->account, "use-global-buddyicon", TRUE);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
506
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
507 gchar *icon_file_content;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
508 gsize icon_file_size;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
509
15351
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
510 if (!icon_path)
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
511 icon_path = "";
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
512
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
513 icon_len = strlen(icon_path) - dir_len - 1 - prefix_len - suffix_len;
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
514
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
515 /* make sure we're using an appropriate icon */
24300
aa3947bf4a6a disapproval of revision 'b3ebedfac7cbad2b4bdd322c45aa572c3cd2795b'
Daniel Atallah <datallah@pidgin.im>
parents: 24299
diff changeset
516 if (buddy_icon_dir && !(g_ascii_strncasecmp(icon_path, buddy_icon_dir, dir_len) == 0
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
517 && icon_path[dir_len] == G_DIR_SEPARATOR
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
518 && g_ascii_strncasecmp(icon_path + dir_len + 1, QQ_ICON_PREFIX, prefix_len) == 0
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
519 && g_ascii_strncasecmp(icon_path + dir_len + 1 + prefix_len + icon_len, QQ_ICON_SUFFIX, suffix_len) == 0
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
520 && icon_len <= 3)) {
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
521 if (icon_global)
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
522 purple_debug_error("QQ", "%s\n", errmsg);
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
523 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
524 purple_notify_error(gc, _("Invalid QQ Face"), errmsg, NULL);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
525 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
526 return;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
527 }
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
528 /* strip everything but number */
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
529 icon = g_strndup(icon_path + dir_len + 1 + prefix_len, icon_len);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
530 icon_num = strtol(icon, NULL, 10);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
531 g_free(icon);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
532 /* ensure face number in proper range */
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
533 if (icon_num > QQ_FACES) {
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
534 if (icon_global)
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
535 purple_debug_error("QQ", "%s\n", errmsg);
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
536 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
537 purple_notify_error(gc, _("Invalid QQ Face"), errmsg, NULL);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
538 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
539 return;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
540 }
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
541 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
542 /* tell server my icon changed */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
543 request_set_buddy_icon(gc, icon_num);
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
544
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
545 /* display in blist */
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
546 if (!g_file_get_contents(icon_path, &icon_file_content, &icon_file_size, NULL)) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
547 purple_debug_error("QQ", "Failed reading icon file %s\n", icon_path);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
548 return;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
549 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
550 purple_buddy_icons_set_for_user(account, account->username,
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
551 icon_file_content, icon_file_size, icon);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
552 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
553
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
554 void qq_set_custom_icon(PurpleConnection *gc, PurpleStoredImage *img)
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
555 {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
556 PurpleAccount *account = purple_connection_get_account(gc);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
557 const gchar *icon_path = purple_account_get_buddy_icon_path(account);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
558 gchar **segments;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
559 gint index;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
560
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
561 g_return_if_fail(icon_path != NULL);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
562
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
563 /* Fixme:
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
564 * icon_path is always null
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
565 * purple_imgstore_get_filename is always new file
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
566 * QQ buddy may set custom icon if level is over 16 */
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
567 purple_debug_info("QQ", "Change my icon to %s\n", icon_path);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
568 segments = g_strsplit_set(icon_path, G_DIR_SEPARATOR_S, 0);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
569 for (index = 0; segments[index] != NULL; index++) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
570 purple_debug_info("QQ", "Split to %s\n", segments[index]);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
571 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
572
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
573 g_strfreev(segments);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
574 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
575
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
576 static void update_buddy_icon(PurpleAccount *account, const gchar *who, gint face)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
577 {
16900
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
578 PurpleBuddy *buddy;
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
579 const gchar *icon_name_prev = NULL;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
580 gchar *icon_name;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
581 const gchar *icon_dir;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
582 gchar *icon_path;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
583 gchar *icon_file_content;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
584 gsize icon_file_size;
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
585
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
586 purple_debug_info("QQ", "Update %s icon to %d\n", who, face);
16900
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
587
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
588 icon_name = g_strdup_printf("%d", face);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
589 if ((buddy = purple_find_buddy(account, who))) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
590 icon_name_prev = purple_buddy_icons_get_checksum_for_user(buddy);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
591 purple_debug_info("QQ", "Previous icon is %s\n", icon_name_prev);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
592 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
593 if (icon_name_prev != NULL && !strcmp(icon_name, icon_name_prev)) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
594 purple_debug_info("QQ", "Icon is not changed\n");
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
595 g_free(icon_name);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
596 return;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
597 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
598 icon_dir = NULL;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
599 if ( purple_prefs_exists("/plugins/prpl/qq/icon_dir") ) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
600 icon_dir = purple_prefs_get_string("/plugins/prpl/qq/icon_dir");
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
601 }
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
602 if ( icon_dir == NULL) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
603 purple_debug_info("QQ", "Icon dir is not defined in prefs '/plugins/prpl/qq/icon_dir'\n");
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
604 g_free(icon_name);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
605 return;
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
606 }
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
607
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
608 icon_path = g_strconcat(icon_dir, G_DIR_SEPARATOR_S,
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
609 QQ_ICON_PREFIX, icon_name, QQ_ICON_SUFFIX, NULL);
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
610
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
611 if (!g_file_get_contents(icon_path, &icon_file_content, &icon_file_size, NULL)) {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
612 purple_debug_error("QQ", "Failed reading icon file %s\n", icon_path);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
613 } else {
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
614 purple_buddy_icons_set_for_user(account, who,
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
615 icon_file_content, icon_file_size, icon_name);
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
616 }
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
617 g_free(icon_name);
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
618 g_free(icon_path);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
619 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
620
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
621 /* after getting info or modify myself, refresh the buddy list accordingly */
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
622 static void update_buddy_info(PurpleConnection *gc, gchar **segments)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
623 {
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
624 PurpleBuddy *buddy;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
625 qq_data *qd;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
626 qq_buddy_data *bd;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
627 guint32 uid;
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
628 gchar *who;
23212
a39a33c79a3f 2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23193
diff changeset
629 gchar *alias_utf8;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
630 PurpleAccount *account = purple_connection_get_account(gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
631
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
632 qd = (qq_data *) gc->proto_data;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
633
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
634 uid = strtol(segments[QQ_INFO_UID], NULL, 10);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
635 who = uid_to_purple_name(uid);
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
636
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
637 qq_filter_str(segments[QQ_INFO_NICK]);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
638 alias_utf8 = qq_to_utf8(segments[QQ_INFO_NICK], QQ_CHARSET_DEFAULT);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
639 if (uid == qd->uid) { /* it is me */
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
640 purple_debug_info("QQ", "Got my info\n");
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
641 qd->my_icon = strtol(segments[QQ_INFO_FACE], NULL, 10);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
642 if (alias_utf8 != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
643 purple_account_set_alias(account, alias_utf8);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
644 }
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
645 /* add me to buddy list */
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
646 buddy = qq_buddy_find_or_new(gc, uid);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
647 } else {
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
648 buddy = purple_find_buddy(gc->account, who);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
649 }
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
650
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
651 if (buddy == NULL || buddy->proto_data == NULL) {
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
652 g_free(who);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
653 g_free(alias_utf8);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
654 return;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
655 }
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
656
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
657 /* update buddy list (including myself, if myself is the buddy) */
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
658 bd = (qq_buddy_data *)buddy->proto_data;
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
659
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
660 bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
661 bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
662 bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
663 if (alias_utf8 != NULL) {
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
664 if (bd->nickname) g_free(bd->nickname);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
665 bd->nickname = g_strdup(alias_utf8);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
666 }
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
667 bd->last_update = time(NULL);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
668
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
669 purple_blist_server_alias_buddy(buddy, bd->nickname);
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
670
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
671 /* convert face num from packet (0-299) to local face (1-100) */
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
672 update_buddy_icon(gc->account, who, (bd->face / 3 + 1));
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
673
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
674 g_free(who);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
675 g_free(alias_utf8);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
676 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
677
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
678 /* process reply to get_info packet */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
679 void qq_process_get_buddy_info(guint8 *data, gint data_len, guint32 action, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
680 {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
681 qq_data *qd;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
682 gchar **segments;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
683 gint field_count;
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
684 gchar *icon_name;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
685
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
686 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
687
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
688 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
689
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
690 if (qd->client_version >= 2008) {
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
691 field_count = QQ_INFO_LAST;
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
692 } else {
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
693 field_count = QQ_INFO_LAST_2007;
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
694 }
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
695 if (NULL == (segments = split_data(data, data_len, "\x1e", field_count)))
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
696 return;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
697
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
698 #ifdef DEBUG
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
699 info_debug(segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
700 #endif
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
701
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
702 if (action == QQ_BUDDY_INFO_SET_ICON) {
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
703 /* send new face to server */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
704 if (strtol(segments[QQ_INFO_FACE], NULL, 10) != qd->my_icon) {
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
705 icon_name = g_strdup_printf("%d", qd->my_icon);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
706 g_free(segments[QQ_INFO_FACE]);
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
707 segments[QQ_INFO_FACE] = icon_name;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
708
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
709 request_modify_info(gc, segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
710 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
711 g_strfreev(segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
712 return;
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
713 }
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
714
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
715 update_buddy_info(gc, segments);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
716 switch (action) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
717 case QQ_BUDDY_INFO_DISPLAY:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
718 info_display_only(gc, segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
719 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
720 case QQ_BUDDY_INFO_SET_ICON:
24356
48097e816313 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
721 /* never reached */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
722 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
723 case QQ_BUDDY_INFO_MODIFY_BASE:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
724 info_modify_dialogue(gc, segments, QQ_FIELD_BASE);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
725 break;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
726 case QQ_BUDDY_INFO_MODIFY_EXT:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
727 info_modify_dialogue(gc, segments, QQ_FIELD_EXT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
728 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
729 case QQ_BUDDY_INFO_MODIFY_ADDR:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
730 info_modify_dialogue(gc, segments, QQ_FIELD_ADDR);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
731 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
732 case QQ_BUDDY_INFO_MODIFY_CONTACT:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
733 info_modify_dialogue(gc, segments, QQ_FIELD_CONTACT);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
734 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
735 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
736 g_strfreev(segments);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
737 break;
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
738 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
739 return;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
740 }
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
741
24020
fe90d74977b6 applied changes from 8cebefbc6cd5d84acb69c74e69e8821f11dd225d
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24019
diff changeset
742 void qq_request_get_level(PurpleConnection *gc, guint32 uid)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
743 {
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
744 qq_data *qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
745 guint8 buf[16] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
746 gint bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
747
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
748 if (qd->client_version >= 2007) {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
749 bytes += qq_put8(buf + bytes, 0x02);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
750 } else {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
751 bytes += qq_put8(buf + bytes, 0x00);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
752 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
753 bytes += qq_put32(buf + bytes, uid);
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
754 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
755 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
756
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
757 void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid)
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
758 {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
759 guint8 buf[16] = {0};
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
760 gint bytes = 0;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
761
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
762 bytes += qq_put8(buf + bytes, 0x08);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
763 bytes += qq_put32(buf + bytes, uid);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
764 bytes += qq_put8(buf + bytes, 0x00);
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
765 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
766 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
767
24020
fe90d74977b6 applied changes from 8cebefbc6cd5d84acb69c74e69e8821f11dd225d
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24019
diff changeset
768 void qq_request_get_buddies_level(PurpleConnection *gc, gint update_class)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
769 {
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
770 qq_data *qd = (qq_data *) gc->proto_data;
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
771 PurpleBuddy *buddy;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
772 qq_buddy_data *bd;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
773 guint8 *buf;
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
774 GSList *buddies, *it;
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
775 gint bytes;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
776
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
777 /* server only reply levels for online buddies */
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
778 buf = g_newa(guint8, MAX_PACKET_SIZE);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
779
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
780 bytes = 0;
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23212
diff changeset
781 bytes += qq_put8(buf + bytes, 0x00);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
782 buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
783 for (it = buddies; it; it = it->next) {
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
784 buddy = it->data;
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
785 if (buddy == NULL) continue;
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
786 if (buddy->proto_data == NULL) continue;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
787 bd = (qq_buddy_data *)buddy->proto_data;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
788 if (bd->uid == 0) continue; /* keep me as end of packet*/
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
789 if (bd->uid == qd->uid) continue;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
790 bytes += qq_put32(buf + bytes, bd->uid);
15541
d5974476ce3a Port [18179] from markhuetsch: I believe there's a bug in the get_buddies_levels() code that I don't have time to find. Temporarily disable it.
Evan Schoenberg <evands@pidgin.im>
parents: 15498
diff changeset
791 }
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
792 bytes += qq_put32(buf + bytes, qd->uid);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
793 qq_send_cmd_mess(gc, QQ_CMD_GET_LEVEL, buf, bytes, update_class, 0);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
794 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
795
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
796 static void process_level(PurpleConnection *gc, guint8 *data, gint data_len)
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
797 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
798 gint bytes = 0;
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
799 guint32 uid, onlineTime;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
800 guint16 level, timeRemainder;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
801 qq_buddy_data *bd;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
802
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
803 while (data_len - bytes >= 12) {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
804 bytes += qq_get32(&uid, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
805 bytes += qq_get32(&onlineTime, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
806 bytes += qq_get16(&level, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
807 bytes += qq_get16(&timeRemainder, data + bytes);
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
808 purple_debug_info("QQ_LEVEL", "%d, tmOnline: %d, level: %d, tmRemainder: %d\n",
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
809 uid, onlineTime, level, timeRemainder);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
810
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
811 bd = qq_buddy_data_find(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
812 if (bd == NULL) {
24019
c0801ae3c886 applied changes from f12c8903079425d7850fa183df0b3f937b2952be
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24018
diff changeset
813 purple_debug_error("QQ", "Got levels of %d not in my buddy list\n", uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
814 continue;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
815 }
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
816
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
817 bd->onlineTime = onlineTime;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
818 bd->level = level;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
819 bd->timeRemainder = timeRemainder;
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
820 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
821
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
822 if (bytes != data_len) {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
823 purple_debug_error("QQ",
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
824 "Wrong format of Get levels. Truncate %d bytes.\n", data_len - bytes);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
825 }
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
826 }
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23212
diff changeset
827
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
828 static void process_level_2007(PurpleConnection *gc, guint8 *data, gint data_len)
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
829 {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
830 gint bytes;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
831 guint32 uid, onlineTime;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
832 guint16 level, timeRemainder;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
833 qq_buddy_data *bd;
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
834 guint16 str_len;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
835 gchar *str;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
836 gchar *str_utf8;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
837
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
838 bytes = 0;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
839 bytes += qq_get32(&uid, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
840 bytes += qq_get32(&onlineTime, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
841 bytes += qq_get16(&level, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
842 bytes += qq_get16(&timeRemainder, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
843 purple_debug_info("QQ_LEVEL", "%d, tmOnline: %d, level: %d, tmRemainder: %d\n",
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
844 uid, onlineTime, level, timeRemainder);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
845
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
846 bd = qq_buddy_data_find(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
847 if (bd == NULL) {
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
848 purple_debug_error("QQ", "Got levels of %d not in my buddy list\n", uid);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
849 return;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
850 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
851
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
852 bd->onlineTime = onlineTime;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
853 bd->level = level;
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
854 bd->timeRemainder = timeRemainder;
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
855
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
856 /* extend bytes in qq2007*/
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
857 bytes += 4; /* skip 8 bytes */
24352
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
858 /* qq_show_packet("Buddies level", data + bytes, data_len - bytes); */
871c27553af6 Flos Lonicerae <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24351
diff changeset
859
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
860 do {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
861 bytes += qq_get16(&str_len, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
862 if (str_len <= 0 || bytes + str_len > data_len) {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
863 purple_debug_error("QQ",
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
864 "Wrong format of Get levels. Truncate %d bytes.\n", data_len - bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
865 break;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
866 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
867 str = g_strndup((gchar *)data + bytes, str_len);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
868 bytes += str_len;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
869 str_utf8 = qq_to_utf8(str, QQ_CHARSET_DEFAULT);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
870 purple_debug_info("QQ", "%s\n", str_utf8);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
871 g_free(str_utf8);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
872 g_free(str);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
873 } while (bytes < data_len);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
874 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
875
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
876 void qq_process_get_level_reply(guint8 *data, gint data_len, PurpleConnection *gc)
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
877 {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
878 gint bytes;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
879 guint8 sub_cmd;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
880
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
881 bytes = 0;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
882 bytes += qq_get8(&sub_cmd, data + bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
883 switch (sub_cmd) {
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
884 case 0x08:
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
885 process_level_2007(gc, data + bytes, data_len - bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
886 break;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
887 case 0x00:
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
888 case 0x02:
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
889 default:
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
890 process_level(gc, data + bytes, data_len - bytes);
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
891 break;
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
892 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
893 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24341
diff changeset
894

mercurial