libpurple/protocols/qq/buddy_info.c

Fri, 18 Jul 2008 00:46:22 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Fri, 18 Jul 2008 00:46:22 +0000
branch
release-2.4.3
changeset 23213
7aaa8e8233bc
parent 23212
a39a33c79a3f
permissions
-rw-r--r--

disapproval of revision 'a39a33c79a3f235c5e1acf5602d7896f829623ba'

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"
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
32 #include "buddy_info.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
33 #include "char_conv.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
34 #include "crypt.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
35 #include "header_info.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
36 #include "keep_alive.h"
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23190
diff changeset
37 #include "qq_network.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
38
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
39 #define QQ_PRIMARY_INFORMATION _("Primary Information")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
40 #define QQ_ADDITIONAL_INFORMATION _("Additional Information")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
41 #define QQ_INTRO _("Personal Introduction")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
42 #define QQ_NUMBER _("QQ Number")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
43 #define QQ_NICKNAME _("Nickname")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
44 #define QQ_NAME _("Name")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
45 #define QQ_AGE _("Age")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
46 #define QQ_GENDER _("Gender")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
47 #define QQ_COUNTRY _("Country/Region")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
48 #define QQ_PROVINCE _("Province/State")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
49 #define QQ_CITY _("City")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
50 #define QQ_HOROSCOPE _("Horoscope Symbol")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
51 #define QQ_OCCUPATION _("Occupation")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
52 #define QQ_ZODIAC _("Zodiac Sign")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
53 #define QQ_BLOOD _("Blood Type")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
54 #define QQ_COLLEGE _("College")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
55 #define QQ_EMAIL _("Email")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
56 #define QQ_ADDRESS _("Address")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
57 #define QQ_ZIPCODE _("Zipcode")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
58 #define QQ_CELL _("Cellphone Number")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
59 #define QQ_TELEPHONE _("Phone Number")
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
60 #define QQ_HOMEPAGE _("Homepage")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
61
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
62 #define QQ_HOROSCOPE_SIZE 13
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
63 static const gchar *horoscope_names[] = {
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
64 "-", N_("Aquarius"), N_("Pisces"), N_("Aries"), N_("Taurus"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
65 N_("Gemini"), N_("Cancer"), N_("Leo"), N_("Virgo"), N_("Libra"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
66 N_("Scorpio"), N_("Sagittarius"), N_("Capricorn")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
67 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
68
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
69 #define QQ_ZODIAC_SIZE 13
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
70 static const gchar *zodiac_names[] = {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
71 "-", N_("Rat"), N_("Ox"), N_("Tiger"), N_("Rabbit"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
72 N_("Dragon"), N_("Snake"), N_("Horse"), N_("Goat"), N_("Monkey"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
73 N_("Rooster"), N_("Dog"), N_("Pig")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
74 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
75
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
76 #define QQ_BLOOD_SIZE 6
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
77 static const gchar *blood_types[] = {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
78 "-", "A", "B", "O", "AB", N_("Other")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
79 };
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
80
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
81 #define QQ_GENDER_SIZE 2
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
82 static const gchar *genders[] = {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
83 N_("Male"),
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
84 N_("Female")
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
85 };
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
86
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
87 #define QQ_CONTACT_FIELDS 37
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
88
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
89 /* There is no user id stored in the reply packet for information query
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
90 * we have to manually store the query, so that we know the query source */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
91 typedef struct _qq_info_query {
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
92 guint32 uid;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
93 gboolean show_window;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
94 gboolean modify_info;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
95 } qq_info_query;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
96
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
97 typedef struct _contact_info {
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
98 gchar *uid;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
99 gchar *nick;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
100 gchar *country;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
101 gchar *province;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
102 gchar *zipcode;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
103 gchar *address;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
104 gchar *tel;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
105 gchar *age;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
106 gchar *gender;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
107 gchar *name;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
108 gchar *email;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
109 gchar *pager_sn;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
110 gchar *pager_num;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
111 gchar *pager_sp;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
112 gchar *pager_base_num;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
113 gchar *pager_type;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
114 gchar *occupation;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
115 gchar *homepage;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
116 gchar *auth_type;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
117 gchar *unknown1;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
118 gchar *unknown2;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
119 gchar *face;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
120 gchar *hp_num;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
121 gchar *hp_type;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
122 gchar *intro;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
123 gchar *city;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
124 gchar *unknown3;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
125 gchar *unknown4;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
126 gchar *unknown5;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
127 gchar *is_open_hp;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
128 gchar *is_open_contact;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
129 gchar *college;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
130 gchar *horoscope;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
131 gchar *zodiac;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
132 gchar *blood;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
133 gchar *qq_show;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
134 gchar *unknown6; /* always 0x2D */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
135 } contact_info;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
136
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
137 /* We get an info packet on ourselves before we modify our information.
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
138 * Even though not all of the information is modifiable, it still
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
139 * all needs to be there when we send out the modify info packet */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
140 typedef struct _modify_info_data {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
141 PurpleConnection *gc;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
142 contact_info *info;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
143 } modify_info_data;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
144
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
145 /* return -1 as a sentinel */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
146 static gint choice_index(const gchar *value, const gchar **choice, gint choice_size)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
147 {
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
148 gint len, i;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
149
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
150 len = strlen(value);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
151 if (len > 3 || len == 0) return -1;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
152 for (i = 0; i < len; i++) {
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
153 if (!g_ascii_isdigit(value[i]))
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
154 return -1;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
155 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
156 i = strtol(value, NULL, 10);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
157 if (i >= choice_size)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
158 return -1;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
159
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
160 return i;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
161 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
162
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
163 /* return should be freed */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
164 static gchar *field_value(const gchar *field, const gchar **choice, gint choice_size)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
165 {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
166 gint index, len;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
167
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
168 len = strlen(field);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
169 if (len == 0) {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
170 return NULL;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
171 } else if (choice != NULL) {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
172 /* some choice fields are also customizable */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
173 index = choice_index(field, choice, choice_size);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
174 if (index == -1) {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
175 if (strcmp(field, "-") != 0) {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
176 return qq_to_utf8(field, QQ_CHARSET_DEFAULT);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
177 } else {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
178 return NULL;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
179 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
180 /* else ASCIIized index */
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
181 } else {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
182 if (strcmp(choice[index], "-") != 0)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
183 return g_strdup(choice[index]);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
184 else
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
185 return NULL;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
186 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
187 } else {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
188 if (strcmp(field, "-") != 0) {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
189 return qq_to_utf8(field, QQ_CHARSET_DEFAULT);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
190 } else {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
191 return NULL;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
192 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
193 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
194 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
195
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
196 static gboolean append_field_value(PurpleNotifyUserInfo *user_info, const gchar *field,
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
197 const gchar *title, const gchar **choice, gint choice_size)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
198 {
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
199 gchar *value = field_value(field, choice, choice_size);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
200
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
201 if (value != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
202 purple_notify_user_info_add_pair(user_info, title, value);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
203 g_free(value);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
204
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
205 return TRUE;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
206 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
207
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
208 return FALSE;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
209 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
210
23213
7aaa8e8233bc disapproval of revision 'a39a33c79a3f235c5e1acf5602d7896f829623ba'
Daniel Atallah <datallah@pidgin.im>
parents: 23212
diff changeset
211 static PurpleNotifyUserInfo *
7aaa8e8233bc disapproval of revision 'a39a33c79a3f235c5e1acf5602d7896f829623ba'
Daniel Atallah <datallah@pidgin.im>
parents: 23212
diff changeset
212 info_to_notify_user_info(const contact_info *info)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
213 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
214 PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
215 const gchar *intro;
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
216 gboolean has_extra_info = FALSE;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
217
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
218 purple_notify_user_info_add_pair(user_info, QQ_NUMBER, info->uid);
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
219
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
220 append_field_value(user_info, info->nick, QQ_NICKNAME, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
221 append_field_value(user_info, info->name, QQ_NAME, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
222 append_field_value(user_info, info->age, QQ_AGE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
223 append_field_value(user_info, info->gender, QQ_GENDER, genders, QQ_GENDER_SIZE);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
224 append_field_value(user_info, info->country, QQ_COUNTRY, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
225 append_field_value(user_info, info->province, QQ_PROVINCE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
226 append_field_value(user_info, info->city, QQ_CITY, NULL, 0);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
227
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
228 purple_notify_user_info_add_section_header(user_info, QQ_ADDITIONAL_INFORMATION);
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
229
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
230 has_extra_info |= append_field_value(user_info, info->horoscope, QQ_HOROSCOPE, horoscope_names, QQ_HOROSCOPE_SIZE);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
231 has_extra_info |= append_field_value(user_info, info->occupation, QQ_OCCUPATION, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
232 has_extra_info |= append_field_value(user_info, info->zodiac, QQ_ZODIAC, zodiac_names, QQ_ZODIAC_SIZE);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
233 has_extra_info |= append_field_value(user_info, info->blood, QQ_BLOOD, blood_types, QQ_BLOOD_SIZE);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
234 has_extra_info |= append_field_value(user_info, info->college, QQ_COLLEGE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
235 has_extra_info |= append_field_value(user_info, info->email, QQ_EMAIL, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
236 has_extra_info |= append_field_value(user_info, info->address, QQ_ADDRESS, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
237 has_extra_info |= append_field_value(user_info, info->zipcode, QQ_ZIPCODE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
238 has_extra_info |= append_field_value(user_info, info->hp_num, QQ_CELL, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
239 has_extra_info |= append_field_value(user_info, info->tel, QQ_TELEPHONE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
240 has_extra_info |= append_field_value(user_info, info->homepage, QQ_HOMEPAGE, NULL, 0);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
241
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
242 if (!has_extra_info)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
243 purple_notify_user_info_remove_last_item(user_info);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
244
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
245 intro = field_value(info->intro, NULL, 0);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
246 if (intro) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
247 purple_notify_user_info_add_pair(user_info, QQ_INTRO, intro);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
248 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
249
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
250 /* for debugging */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
251 /*
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
252 g_string_append_printf(info_text, "<br /><br /><b>%s</b><br />", "Miscellaneous");
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
253 append_field_value(info_text, info->pager_sn, "pager_sn", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
254 append_field_value(info_text, info->pager_num, "pager_num", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
255 append_field_value(info_text, info->pager_sp, "pager_sp", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
256 append_field_value(info_text, info->pager_base_num, "pager_base_num", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
257 append_field_value(info_text, info->pager_type, "pager_type", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
258 append_field_value(info_text, info->auth_type, "auth_type", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
259 append_field_value(info_text, info->unknown1, "unknown1", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
260 append_field_value(info_text, info->unknown2, "unknown2", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
261 append_field_value(info_text, info->face, "face", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
262 append_field_value(info_text, info->hp_type, "hp_type", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
263 append_field_value(info_text, info->unknown3, "unknown3", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
264 append_field_value(info_text, info->unknown4, "unknown4", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
265 append_field_value(info_text, info->unknown5, "unknown5", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
266 append_field_value(info_text, info->is_open_hp, "is_open_hp", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
267 append_field_value(info_text, info->is_open_contact, "is_open_contact", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
268 append_field_value(info_text, info->qq_show, "qq_show", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
269 append_field_value(info_text, info->unknown6, "unknown6", NULL, 0);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
270 */
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
271
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
272 return user_info;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
273 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
274
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
275 /* send a packet to get detailed information of uid */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
276 void qq_send_packet_get_info(PurpleConnection *gc, guint32 uid, gboolean show_window)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
277 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
278 qq_data *qd;
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14327
diff changeset
279 gchar uid_str[11];
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
280 qq_info_query *query;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
281
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14673
diff changeset
282 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
283
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
284 qd = (qq_data *) gc->proto_data;
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14327
diff changeset
285 g_snprintf(uid_str, sizeof(uid_str), "%d", uid);
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
286 qq_send_cmd(qd, QQ_CMD_GET_USER_INFO, (guint8 *) uid_str, strlen(uid_str));
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
287
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
288 query = g_new0(qq_info_query, 1);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
289 query->uid = uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
290 query->show_window = show_window;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
291 query->modify_info = FALSE;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
292 qd->info_query = g_list_append(qd->info_query, query);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
293 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
294
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
295 /* set up the fields requesting personal information and send a get_info packet
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
296 * for myself */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
297 void qq_prepare_modify_info(PurpleConnection *gc)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
298 {
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
299 qq_data *qd;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
300 GList *ql;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
301 qq_info_query *query;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
302
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
303 qd = (qq_data *) gc->proto_data;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
304 qq_send_packet_get_info(gc, qd->uid, FALSE);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
305 /* traverse backwards so we get the most recent info_query */
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
306 for (ql = g_list_last(qd->info_query); ql != NULL; ql = g_list_previous(ql)) {
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
307 query = ql->data;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
308 if (query->uid == qd->uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
309 query->modify_info = TRUE;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
310 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
311 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
312
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
313 /* send packet to modify personal information */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
314 static void qq_send_packet_modify_info(PurpleConnection *gc, contact_info *info)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
315 {
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
316 qq_data *qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
317 gint bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
318 guint8 raw_data[MAX_PACKET_SIZE - 128] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
319 guint8 bar;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
320
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
321 g_return_if_fail(info != NULL);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
322
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
323 bar = 0x1f;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
324
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
325 bytes += qq_put8(raw_data + bytes, bar);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
326
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
327 /* important! skip the first uid entry */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
328 /*
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
329 for (i = 1; i < QQ_CONTACT_FIELDS; i++) {
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
330 create_packet_b(raw_data, &cursor, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
331 create_packet_data(raw_data, &cursor, (guint8 *) segments[i], strlen(segments[i]));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
332 }
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
333 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
334 /* uid */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
335 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
336 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->uid, strlen(info->uid));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
337 /* nick */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
338 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
339 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->nick, strlen(info->nick));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
340 /* country */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
341 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
342 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->country, strlen(info->country));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
343 /* province */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
344 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
345 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->province, strlen(info->province));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
346 /* zipcode */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
347 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
348 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->zipcode, strlen(info->zipcode));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
349 /* address */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
350 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
351 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->address, strlen(info->address));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
352 /* tel */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
353 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
354 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->tel, strlen(info->tel));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
355 /* age */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
356 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
357 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->age, strlen(info->age));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
358 /* gender */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
359 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
360 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->gender, strlen(info->gender));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
361 /* name */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
362 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
363 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->name, strlen(info->name));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
364 /* email */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
365 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
366 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->email, strlen(info->email));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
367 /* pager_sn */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
368 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
369 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->pager_sn, strlen(info->pager_sn));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
370 /* pager_num */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
371 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
372 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->pager_num, strlen(info->pager_num));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
373 /* pager_sp */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
374 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
375 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->pager_sp, strlen(info->pager_sp));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
376 /* pager_base_num */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
377 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
378 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->pager_base_num, strlen(info->pager_base_num));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
379 /* pager_type */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
380 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
381 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->pager_type, strlen(info->pager_type));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
382 /* occupation */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
383 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
384 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->occupation, strlen(info->occupation));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
385 /* homepage */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
386 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
387 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->homepage, strlen(info->homepage));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
388 /* auth_type */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
389 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
390 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->auth_type, strlen(info->auth_type));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
391 /* unknown1 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
392 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
393 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown1, strlen(info->unknown1));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
394 /* unknown2 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
395 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
396 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown2, strlen(info->unknown2));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
397 /* face */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
398 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
399 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->face, strlen(info->face));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
400 /* hp_num */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
401 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
402 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->hp_num, strlen(info->hp_num));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
403 /* hp_type */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
404 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
405 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->hp_type, strlen(info->hp_type));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
406 /* intro */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
407 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
408 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->intro, strlen(info->intro));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
409 /* city */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
410 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
411 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->city, strlen(info->city));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
412 /* unknown3 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
413 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
414 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown3, strlen(info->unknown3));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
415 /* unknown4 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
416 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
417 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown4, strlen(info->unknown4));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
418 /* unknown5 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
419 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
420 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown5, strlen(info->unknown5));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
421 /* is_open_hp */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
422 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
423 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->is_open_hp, strlen(info->is_open_hp));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
424 /* is_open_contact */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
425 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
426 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->is_open_contact, strlen(info->is_open_contact));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
427 /* college */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
428 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
429 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->college, strlen(info->college));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
430 /* horoscope */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
431 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
432 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->horoscope, strlen(info->horoscope));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
433 /* zodiac */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
434 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
435 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->zodiac, strlen(info->zodiac));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
436 /* blood */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
437 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
438 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->blood, strlen(info->blood));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
439 /* qq_show */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
440 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
441 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->qq_show, strlen(info->qq_show));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
442 /* unknown6 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
443 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
444 bytes += qq_putdata(raw_data + bytes, (guint8 *)info->unknown6, strlen(info->unknown6));
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
445
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
446 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
447
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
448 qq_send_cmd(qd, QQ_CMD_UPDATE_INFO, raw_data, bytes);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
449
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
450 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
451
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
452 static void modify_info_cancel_cb(modify_info_data *mid)
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
453 {
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
454 qq_data *qd;
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
455
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
456 qd = (qq_data *) mid->gc->proto_data;
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
457 qd->modifying_info = FALSE;
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
458
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
459 g_strfreev((gchar **) mid->info);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
460 g_free(mid);
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
461 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
462
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
463 static gchar *parse_field(PurpleRequestField *field, gboolean choice)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
464 {
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
465 gchar *value;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
466
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
467 if (choice) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
468 value = g_strdup_printf("%d", purple_request_field_choice_get_value(field));
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
469 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
470 value = (gchar *) purple_request_field_string_get_value(field);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
471 if (value == NULL)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
472 value = g_strdup("-");
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
473 else
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
474 value = utf8_to_qq(value, QQ_CHARSET_DEFAULT);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
475 }
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
476
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
477 return value;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
478 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
479
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
480 /* parse fields and send info packet */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
481 static void modify_info_ok_cb(modify_info_data *mid, PurpleRequestFields *fields)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
482 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
483 PurpleConnection *gc;
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
484 qq_data *qd;
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
485 GList *groups;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
486 contact_info *info;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
487
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
488 gc = mid->gc;
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
489 qd = (qq_data *) gc->proto_data;
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
490 qd->modifying_info = FALSE;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
491
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
492 info = mid->info;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
493
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
494 groups = purple_request_fields_get_groups(fields);
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
495 while (groups != NULL) {
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
496 PurpleRequestFieldGroup *group = groups->data;
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
497 const char *g_name = purple_request_field_group_get_title(group);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
498 GList *fields = purple_request_field_group_get_fields(group);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
499
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
500 if (g_name == NULL)
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
501 continue;
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
502
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
503 while (fields != NULL) {
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
504 PurpleRequestField *field = fields->data;
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
505 const char *f_id = purple_request_field_get_id(field);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
506
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
507 if (!strcmp(QQ_PRIMARY_INFORMATION, g_name)) {
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
508
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
509 if (!strcmp(f_id, "uid"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
510 info->uid = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
511 else if (!strcmp(f_id, "nick"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
512 info->nick = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
513 else if (!strcmp(f_id, "name"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
514 info->name = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
515 else if (!strcmp(f_id, "age"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
516 info->age = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
517 else if (!strcmp(f_id, "gender"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
518 info->gender = parse_field(field, TRUE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
519 else if (!strcmp(f_id, "country"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
520 info->country = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
521 else if (!strcmp(f_id, "province"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
522 info->province = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
523 else if (!strcmp(f_id, "city"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
524 info->city = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
525
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
526 } else if (!strcmp(QQ_ADDITIONAL_INFORMATION, g_name)) {
20228
ce019944d765 applied changes from 9d35dde0c779cca73548172223ba557f27d61882
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
527
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
528 if (!strcmp(f_id, "horoscope"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
529 info->horoscope = parse_field(field, TRUE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
530 else if (!strcmp(f_id, "occupation"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
531 info->occupation = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
532 else if (!strcmp(f_id, "zodiac"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
533 info->zodiac = parse_field(field, TRUE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
534 else if (!strcmp(f_id, "blood"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
535 info->blood = parse_field(field, TRUE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
536 else if (!strcmp(f_id, "college"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
537 info->college = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
538 else if (!strcmp(f_id, "email"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
539 info->email = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
540 else if (!strcmp(f_id, "address"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
541 info->address = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
542 else if (!strcmp(f_id, "zipcode"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
543 info->zipcode = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
544 else if (!strcmp(f_id, "hp_num"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
545 info->hp_num = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
546 else if (!strcmp(f_id, "tel"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
547 info->tel = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
548 else if (!strcmp(f_id, "homepage"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
549 info->homepage = parse_field(field, FALSE);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
550
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
551 } else if (!strcmp(QQ_INTRO, g_name)) {
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
552
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
553 if (!strcmp(f_id, "intro"))
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
554 info->intro = parse_field(field, FALSE);
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
555
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
556 }
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
557
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
558 fields = fields->next;
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
559 }
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
560
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
561 groups = groups->next;
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
562 }
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
563
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
564 /* This casting looks like a horrible idea to me -DAA
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
565 * yes, rewritten -s3e
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
566 * qq_send_packet_modify_info(gc, (gchar **) info);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
567 */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
568 qq_send_packet_modify_info(gc, info);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
569
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
570 g_strfreev((gchar **) mid->info);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
571 g_free(mid);
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
572 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
573
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
574 static PurpleRequestFieldGroup *setup_field_group(PurpleRequestFields *fields, const gchar *title)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
575 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
576 PurpleRequestFieldGroup *group;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
577
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
578 group = purple_request_field_group_new(title);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
579 purple_request_fields_add_group(fields, group);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
580
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
581 return group;
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
582 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
583
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
584 static void add_string_field_to_group(PurpleRequestFieldGroup *group,
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
585 const gchar *id, const gchar *title, const gchar *value)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
586 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
587 PurpleRequestField *field;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
588 gchar *utf8_value;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
589
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
590 utf8_value = qq_to_utf8(value, QQ_CHARSET_DEFAULT);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
591 field = purple_request_field_string_new(id, title, utf8_value, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
592 purple_request_field_group_add_field(group, field);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
593 g_free(utf8_value);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
594 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
595
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
596 static void add_choice_field_to_group(PurpleRequestFieldGroup *group,
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
597 const gchar *id, const gchar *title, const gchar *value,
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
598 const gchar **choice, gint choice_size)
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
599 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
600 PurpleRequestField *field;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
601 gint i, index;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
602
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
603 index = choice_index(value, choice, choice_size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
604 field = purple_request_field_choice_new(id, title, index);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
605 for (i = 0; i < choice_size; i++)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
606 purple_request_field_choice_add(field, choice[i]);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
607 purple_request_field_group_add_field(group, field);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
608 }
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
609
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
610 /* take the info returned by a get_info packet for myself and set up a request form */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
611 static void create_modify_info_dialogue(PurpleConnection *gc, const contact_info *info)
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
612 {
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
613 qq_data *qd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
614 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
615 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
616 PurpleRequestField *field;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
617 modify_info_data *mid;
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
618
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
619 /* so we only have one dialog open at a time */
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
620 qd = (qq_data *) gc->proto_data;
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
621 if (!qd->modifying_info) {
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
622 qd->modifying_info = TRUE;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
623
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
624 fields = purple_request_fields_new();
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
625
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
626 group = setup_field_group(fields, QQ_PRIMARY_INFORMATION);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
627 field = purple_request_field_string_new("uid", QQ_NUMBER, info->uid, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
628 purple_request_field_group_add_field(group, field);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
629 purple_request_field_string_set_editable(field, FALSE);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
630 add_string_field_to_group(group, "nick", QQ_NICKNAME, info->nick);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
631 add_string_field_to_group(group, "name", QQ_NAME, info->name);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
632 add_string_field_to_group(group, "age", QQ_AGE, info->age);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
633 add_choice_field_to_group(group, "gender", QQ_GENDER, info->gender, genders, QQ_GENDER_SIZE);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
634 add_string_field_to_group(group, "country", QQ_COUNTRY, info->country);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
635 add_string_field_to_group(group, "province", QQ_PROVINCE, info->province);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
636 add_string_field_to_group(group, "city", QQ_CITY, info->city);
20231
f09e8f947602 applied changes from 582eb3d8206e0fbe1023e9ce7f3bdf833a1c0db2
Luke Schierer <lschiere@pidgin.im>
parents: 20228
diff changeset
637
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
638 group = setup_field_group(fields, QQ_ADDITIONAL_INFORMATION);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
639 add_choice_field_to_group(group, "horoscope", QQ_HOROSCOPE, info->horoscope, horoscope_names, QQ_HOROSCOPE_SIZE);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
640 add_string_field_to_group(group, "occupation", QQ_OCCUPATION, info->occupation);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
641 add_choice_field_to_group(group, "zodiac", QQ_ZODIAC, info->zodiac, zodiac_names, QQ_ZODIAC_SIZE);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
642 add_choice_field_to_group(group, "blood", QQ_BLOOD, info->blood, blood_types, QQ_BLOOD_SIZE);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
643 add_string_field_to_group(group, "college", QQ_COLLEGE, info->college);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
644 add_string_field_to_group(group, "email", QQ_EMAIL, info->email);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
645 add_string_field_to_group(group, "address", QQ_ADDRESS, info->address);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
646 add_string_field_to_group(group, "zipcode", QQ_ZIPCODE, info->zipcode);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
647 add_string_field_to_group(group, "hp_num", QQ_CELL, info->hp_num);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
648 add_string_field_to_group(group, "tel", QQ_TELEPHONE, info->tel);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
649 add_string_field_to_group(group, "homepage", QQ_HOMEPAGE, info->homepage);
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
650
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
651 group = setup_field_group(fields, QQ_INTRO);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
652 field = purple_request_field_string_new("intro", QQ_INTRO, info->intro, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
653 purple_request_field_group_add_field(group, field);
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
654
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
655 /* prepare unmodifiable info */
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
656 mid = g_new0(modify_info_data, 1);
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
657 mid->gc = gc;
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
658 /* QQ_CONTACT_FIELDS+1 so that the array is NULL-terminated and can be g_strfreev()'ed later */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
659 mid->info = (contact_info *) g_new0(gchar *, QQ_CONTACT_FIELDS+1);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
660 mid->info->pager_sn = g_strdup(info->pager_sn);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
661 mid->info->pager_num = g_strdup(info->pager_num);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
662 mid->info->pager_sp = g_strdup(info->pager_sp);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
663 mid->info->pager_base_num = g_strdup(info->pager_base_num);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
664 mid->info->pager_type = g_strdup(info->pager_type);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
665 mid->info->auth_type = g_strdup(info->auth_type);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
666 mid->info->unknown1 = g_strdup(info->unknown1);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
667 mid->info->unknown2 = g_strdup(info->unknown2);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
668 mid->info->face = g_strdup(info->face);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
669 mid->info->hp_type = g_strdup(info->hp_type);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
670 mid->info->unknown3 = g_strdup(info->unknown3);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
671 mid->info->unknown4 = g_strdup(info->unknown4);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
672 mid->info->unknown5 = g_strdup(info->unknown5);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
673 /* TODO stop hiding these 2 */
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
674 mid->info->is_open_hp = g_strdup(info->is_open_hp);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
675 mid->info->is_open_contact = g_strdup(info->is_open_contact);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
676 mid->info->qq_show = g_strdup(info->qq_show);
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
677 mid->info->unknown6 = g_strdup(info->unknown6);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
678
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
679 purple_request_fields(gc, _("Modify my information"),
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
680 _("Modify my information"), NULL, fields,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
681 _("Update my information"), G_CALLBACK(modify_info_ok_cb),
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
682 _("Cancel"), G_CALLBACK(modify_info_cancel_cb),
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
683 purple_connection_get_account(gc), NULL, NULL,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
684 mid);
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
685 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
686 }
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
687
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
688 /* process the reply of modify_info packet */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
689 void qq_process_modify_info_reply(guint8 *buf, gint buf_len, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
690 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
691 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
692 gint len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
693 guint8 *data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
694
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
695 g_return_if_fail(buf != NULL && buf_len != 0);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
696
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
697 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
698 len = buf_len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
699 data = g_newa(guint8, len);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
700
22685
f3a524370c38 Patch from ccpaging to clean up some QQ stuff. I removed the now commented
Ka-Hing Cheung <khc@pidgin.im>
parents: 21352
diff changeset
701 if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) {
14055
651f64b7fb6a [gaim-migrate @ 16570]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14051
diff changeset
702 data[len] = '\0';
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
703 if (qd->uid == atoi((gchar *) data)) { /* return should be my uid */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
704 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Update info ACK OK\n");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
705 purple_notify_info(gc, NULL, _("Your information has been updated"), NULL);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
706 }
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
707 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
708 purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Error decrypt modify info reply\n");
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
709 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
710 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
711
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
712 static void _qq_send_packet_modify_face(PurpleConnection *gc, gint face_num)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
713 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
714 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
715 PurplePresence *presence = purple_account_get_presence(account);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
716 qq_data *qd = (qq_data *) gc->proto_data;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
717 gint offset;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
718
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
719 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
720 offset = 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
721 } 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
722 || 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
723 offset = 1;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
724 } else {
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
725 offset = 0;
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
726 }
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
727
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
728 qd->my_icon = 3 * (face_num - 1) + offset;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
729 qd->modifying_face = TRUE;
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
730 qq_send_packet_get_info(gc, qd->uid, FALSE);
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
731 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
732
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
733 void qq_set_buddy_icon_for_user(PurpleAccount *account, const gchar *who, const gchar *icon_num, const gchar *iconfile)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
734 {
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
735 gchar *data;
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
736 gsize len;
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
737
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
738 if (!g_file_get_contents(iconfile, &data, &len, 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
739 g_return_if_reached();
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
740 } else {
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
741 purple_buddy_icons_set_for_user(account, who, data, len, icon_num);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
742 }
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
743 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
744
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
745 /* TODO: custom faces for QQ members and users with level >= 16 */
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
746 void qq_set_my_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
747 {
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
748 gchar *icon;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
749 gint icon_num;
15351
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
750 gint icon_len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
751 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
752 const gchar *icon_path = purple_account_get_buddy_icon_path(account);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
753 const gchar *buddy_icon_dir = qq_buddy_icon_dir();
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
754 gint prefix_len = strlen(QQ_ICON_PREFIX);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
755 gint suffix_len = strlen(QQ_ICON_SUFFIX);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
756 gint dir_len = strlen(buddy_icon_dir);
16196
63fe41943c14 Fix Ticket #152
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
757 gchar *errmsg = g_strdup_printf(_("Setting custom faces is not currently supported. Please choose an image from %s."), buddy_icon_dir);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
758 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
759
15351
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
760 if (!icon_path)
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
761 icon_path = "";
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
762
259c1b4db96e [gaim-migrate @ 18079]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
763 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
764
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
765 /* make sure we're using an appropriate icon */
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
766 if (!(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
767 && icon_path[dir_len] == G_DIR_SEPARATOR
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
768 && 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
769 && 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
770 && icon_len <= 3)) {
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
771 if (icon_global)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
772 purple_debug(PURPLE_DEBUG_ERROR, "QQ", "%s\n", errmsg);
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
773 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
774 purple_notify_error(gc, _("Invalid QQ Face"), errmsg, NULL);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
775 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
776 return;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
777 }
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
778 /* strip everything but number */
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
779 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
780 icon_num = strtol(icon, NULL, 10);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
781 g_free(icon);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
782 /* ensure face number in proper range */
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
783 if (icon_num > QQ_FACES) {
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
784 if (icon_global)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
785 purple_debug(PURPLE_DEBUG_ERROR, "QQ", "%s\n", errmsg);
15201
26e8598c7282 [gaim-migrate @ 17925]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15200
diff changeset
786 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
787 purple_notify_error(gc, _("Invalid QQ Face"), errmsg, NULL);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
788 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
789 return;
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
790 }
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
791 g_free(errmsg);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
792 /* tell server my icon changed */
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
793 _qq_send_packet_modify_face(gc, icon_num);
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
794 /* display in blist */
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
795 qq_set_buddy_icon_for_user(account, account->username, icon, icon_path);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
796 }
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
797
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
798
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
799 static void _qq_update_buddy_icon(PurpleAccount *account, const gchar *name, gint face)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
800 {
16900
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
801 PurpleBuddy *buddy;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
802 gchar *icon_num_str = face_to_icon_str(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
803 const gchar *old_icon_num = 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
804
16900
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
805 if ((buddy = purple_find_buddy(account, name)))
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
806 old_icon_num = purple_buddy_icons_get_checksum_for_user(buddy);
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
807
e9f12eb06c5b Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
808 if (old_icon_num == NULL ||
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
809 strcmp(icon_num_str, old_icon_num))
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
810 {
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
811 gchar *icon_path;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
812
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
813 icon_path = g_strconcat(qq_buddy_icon_dir(), G_DIR_SEPARATOR_S,
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
814 QQ_ICON_PREFIX, icon_num_str,
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
815 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
816
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
817 qq_set_buddy_icon_for_user(account, name, icon_num_str, icon_path);
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
818 g_free(icon_path);
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16421
diff changeset
819 }
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
820 g_free(icon_num_str);
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
821 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
822
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
823 /* after getting info or modify myself, refresh the buddy list accordingly */
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
824 static void qq_refresh_buddy_and_myself(contact_info *info, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
825 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
826 PurpleBuddy *b;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
827 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
828 qq_buddy *q_bud;
23213
7aaa8e8233bc disapproval of revision 'a39a33c79a3f235c5e1acf5602d7896f829623ba'
Daniel Atallah <datallah@pidgin.im>
parents: 23212
diff changeset
829 gchar *alias_utf8, *purple_name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
830 PurpleAccount *account = purple_connection_get_account(gc);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
831
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
832 qd = (qq_data *) gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
833 purple_name = uid_to_purple_name(strtol(info->uid, NULL, 10));
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
834
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
835 alias_utf8 = qq_to_utf8(info->nick, QQ_CHARSET_DEFAULT);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
836 if (qd->uid == strtol(info->uid, NULL, 10)) { /* it is me */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
837 qd->my_icon = strtol(info->face, NULL, 10);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
838 if (alias_utf8 != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
839 purple_account_set_alias(account, alias_utf8);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
840 }
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
841 /* update buddy list (including myself, if myself is the buddy) */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
842 b = purple_find_buddy(gc->account, purple_name);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
843 q_bud = (b == NULL) ? NULL : (qq_buddy *) b->proto_data;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
844 if (q_bud != NULL) { /* I have this buddy */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
845 q_bud->age = strtol(info->age, NULL, 10);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
846 q_bud->gender = strtol(info->gender, NULL, 10);
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
847 q_bud->face = strtol(info->face, NULL, 10);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
848 if (alias_utf8 != NULL)
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
849 q_bud->nickname = g_strdup(alias_utf8);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
850 qq_update_buddy_contact(gc, q_bud);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
851 _qq_update_buddy_icon(gc->account, purple_name, q_bud->face);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
852 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
853 g_free(purple_name);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
854 g_free(alias_utf8);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
855 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
856
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
857 /* process reply to get_info packet */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
858 void qq_process_get_info_reply(guint8 *buf, gint buf_len, PurpleConnection *gc)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
859 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
860 gint len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
861 guint8 *data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
862 gchar **segments;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
863 qq_info_query *query;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
864 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
865 contact_info *info;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
866 GList *list, *query_list;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
867 PurpleNotifyUserInfo *user_info;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
868
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
869 g_return_if_fail(buf != NULL && buf_len != 0);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
870
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
871 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
872 list = query_list = NULL;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
873 len = buf_len;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
874 data = g_newa(guint8, len);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
875 info = NULL;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
876
22685
f3a524370c38 Patch from ccpaging to clean up some QQ stuff. I removed the now commented
Ka-Hing Cheung <khc@pidgin.im>
parents: 21352
diff changeset
877 if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
878 if (NULL == (segments = split_data(data, len, "\x1e", QQ_CONTACT_FIELDS)))
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
879 return;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
880
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
881 info = (contact_info *) segments;
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
882 if (qd->modifying_face && strtol(info->face, NULL, 10) != qd->my_icon) {
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
883 gchar *icon = g_strdup_printf("%d", qd->my_icon);
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
884 qd->modifying_face = FALSE;
15133
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
885 g_free(info->face);
9d5bbb9f8248 [gaim-migrate @ 17855]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15087
diff changeset
886 info->face = icon;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
887 qq_send_packet_modify_info(gc, (contact_info *)segments);
14327
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
888 }
35a1e5dda285 [gaim-migrate @ 16947]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14254
diff changeset
889
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
890 qq_refresh_buddy_and_myself(info, gc);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
891
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
892 query_list = qd->info_query;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
893 /* ensure we're processing the right query */
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
894 while (query_list) {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
895 query = (qq_info_query *) query_list->data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
896 if (query->uid == atoi(info->uid)) {
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
897 if (query->show_window) {
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15201
diff changeset
898 user_info = info_to_notify_user_info(info);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
899 purple_notify_userinfo(gc, info->uid, user_info, NULL, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
900 purple_notify_user_info_destroy(user_info);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
901 } else if (query->modify_info) {
14673
3a9adee11b19 [gaim-migrate @ 17339]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
902 create_modify_info_dialogue(gc, info);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
903 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
904 qd->info_query = g_list_remove(qd->info_query, qd->info_query->data);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
905 g_free(query);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
906 break;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
907 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
908 query_list = query_list->next;
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
909 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
910
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
911 g_strfreev(segments);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
912 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
913 purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Error decrypt get info reply\n");
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
914 }
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
915 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
916
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14076
diff changeset
917 void qq_info_query_free(qq_data *qd)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
918 {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
919 gint i;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
920 qq_info_query *p;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
921
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
922 g_return_if_fail(qd != NULL);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
923
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
924 i = 0;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
925 while (qd->info_query != NULL) {
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
926 p = (qq_info_query *) (qd->info_query->data);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
927 qd->info_query = g_list_remove(qd->info_query, p);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
928 g_free(p);
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
929 i++;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
930 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
931 purple_debug(PURPLE_DEBUG_INFO, "QQ", "%d info queries are freed!\n", i);
14051
6bc807df2a0a [gaim-migrate @ 16562]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
932 }
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
934 void qq_send_packet_get_level(PurpleConnection *gc, guint32 uid)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
935 {
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
936 qq_data *qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
937 guint8 buf[16] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
938 gint bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
939
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
940 bytes += qq_put8(buf + bytes, 0x00);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
941 bytes += qq_put32(buf + bytes, uid);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
942
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
943 qd = (qq_data *) gc->proto_data;
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
944 qq_send_cmd(qd, QQ_CMD_GET_LEVEL, buf, bytes);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
945 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
946
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
947 void qq_send_packet_get_buddies_levels(PurpleConnection *gc)
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
948 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
949 guint8 *buf;
16271
9605b8b1c673 Port SVN revisions 18230 to 18232 from Mark Huetsch from sf SVN to
Mark Doliner <markdoliner@pidgin.im>
parents: 16196
diff changeset
950 guint16 size;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
951 qq_buddy *q_bud;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
952 qq_data *qd = (qq_data *) gc->proto_data;
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
953 GList *node = qd->buddies;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
954 gint bytes = 0;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
955
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
956 if (qd->buddies) {
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
957 /* server only sends back levels for online buddies, no point
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
958 * in asking for anyone else */
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
959 size = 4 * g_list_length(qd->buddies) + 1;
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
960 buf = g_new0(guint8, size);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
961 bytes += 1;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
962
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
963 while (NULL != node) {
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
964 q_bud = (qq_buddy *) node->data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
965 if (NULL != q_bud) {
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
966 bytes += qq_put32(buf + bytes, q_bud->uid);
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
967 }
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
968 node = node->next;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
969 }
23193
384ba35bfa8f patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23192
diff changeset
970 qq_send_cmd(qd, QQ_CMD_GET_LEVEL, buf, size);
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
971 g_free(buf);
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
972 }
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
973 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
974
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
975 void qq_process_get_level_reply(guint8 *buf, gint buf_len, PurpleConnection *gc)
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
976 {
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
977 guint32 uid, onlineTime;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
978 guint16 level, timeRemainder;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
979 gchar *purple_name;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
980 PurpleBuddy *b;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
981 qq_buddy *q_bud;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
982 gint decr_len, i;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
983 guint8 *decr_buf;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
984 PurpleAccount *account = purple_connection_get_account(gc);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
985 qq_data *qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
986 gint bytes = 0;
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
987
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
988 decr_len = buf_len;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
989 decr_buf = g_new0(guint8, buf_len);
22685
f3a524370c38 Patch from ccpaging to clean up some QQ stuff. I removed the now commented
Ka-Hing Cheung <khc@pidgin.im>
parents: 21352
diff changeset
990 if (!qq_decrypt(buf, buf_len, qd->session_key, decr_buf, &decr_len)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
991 purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Couldn't decrypt get level packet\n");
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
992 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
993
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
994 decr_len--;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
995 if (decr_len % 12 != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
996 purple_debug(PURPLE_DEBUG_ERROR, "QQ",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
997 "Get levels list of abnormal length. Truncating last %d bytes.\n", decr_len % 12);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
998 decr_len -= (decr_len % 12);
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
999 }
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1000
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1001 bytes += 1;
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1002 /* this byte seems random */
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1003 /*
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1004 purple_debug(PURPLE_DEBUG_INFO, "QQ", "Byte one of get_level packet: %d\n", buf[0]);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1005 */
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1006 for (i = 0; i < decr_len; i += 12) {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1007 bytes += qq_get32(&uid, decr_buf + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1008 bytes += qq_get32(&onlineTime, decr_buf + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1009 bytes += qq_get16(&level, decr_buf + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1010 bytes += qq_get16(&timeRemainder, decr_buf + bytes);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1011 purple_debug(PURPLE_DEBUG_INFO, "QQ",
23213
7aaa8e8233bc disapproval of revision 'a39a33c79a3f235c5e1acf5602d7896f829623ba'
Daniel Atallah <datallah@pidgin.im>
parents: 23212
diff changeset
1012 "Level packet entry:\nuid: %d\nonlineTime: %d\nlevel: %d\ntimeRemainder: %d\n",
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1013 uid, onlineTime, level, timeRemainder);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
1014 purple_name = uid_to_purple_name(uid);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
1015 b = purple_find_buddy(account, purple_name);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1016 q_bud = (b == NULL) ? NULL : (qq_buddy *) b->proto_data;
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1017
15368
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1018 if (q_bud != NULL || uid == qd->uid) {
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1019 if (q_bud) {
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1020 q_bud->onlineTime = onlineTime;
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1021 q_bud->level = level;
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1022 q_bud->timeRemainder = timeRemainder;
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1023 }
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1024 if (uid == qd->uid) {
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1025 qd->my_level = level;
a82976ccee64 [gaim-migrate @ 18097]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15351
diff changeset
1026 }
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1027 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
1028 purple_debug(PURPLE_DEBUG_ERROR, "QQ",
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
1029 "Got an online buddy %d, but not in my buddy list\n", uid);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1030 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15541
diff changeset
1031 g_free(purple_name);
15200
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1032 }
a28a70a4e7ce [gaim-migrate @ 17924]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 15137
diff changeset
1033 g_free(decr_buf);
15137
28f227957781 [gaim-migrate @ 17859]
Daniel Atallah <datallah@pidgin.im>
parents: 15133
diff changeset
1034 }

mercurial