Tue, 24 Feb 2009 14:33:49 +0000
2009.02.24 - flos <lonicerae(at)gmail.com>
* Changed update_class type from gint to guint32
* Fixed a bug of displaying of memo when memo is nothing
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
1 | #include "internal.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
2 | #include "debug.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
3 | #include "notify.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
4 | #include "request.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
5 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
6 | #include "buddy_memo.h" |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
7 | #include "utils.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
8 | #include "packet_parse.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
9 | #include "buddy_list.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
10 | #include "buddy_info.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
11 | #include "char_conv.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
12 | #include "im.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
13 | #include "qq_define.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
14 | #include "qq_base.h" |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
15 | #include "qq_network.h" |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
16 | #include "qq.h" |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
17 | |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
18 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
19 | #include <string.h> |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
20 | #include <stdlib.h> |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
21 | #include <stdio.h> |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
22 | |
|
25656
337f9a10a7b8
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25655
diff
changeset
|
23 | #include <stdlib.h> |
|
337f9a10a7b8
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25655
diff
changeset
|
24 | #include <stdio.h> |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
25 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
26 | /* memo index */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
27 | enum { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
28 | QQ_MEMO_ALIAS = 0, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
29 | QQ_MEMO_MOBILD, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
30 | QQ_MEMO_TELEPHONE, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
31 | QQ_MEMO_ADDRESS, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
32 | QQ_MEMO_EMAIL, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
33 | QQ_MEMO_ZIPCODE, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
34 | QQ_MEMO_NOTE, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
35 | QQ_MEMO_SIZE |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
36 | }; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
37 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
38 | /* memo id */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
39 | static const gchar *memo_id[] = { |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
40 | "mm_alias", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
41 | "mm_mobile", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
42 | "mm_telephone", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
43 | "mm_address", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
44 | "mm_email", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
45 | "mm_zipcode", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
46 | "mm_note" |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
47 | }; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
48 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
49 | /* memo text */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
50 | static const gchar *memo_txt[] = { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
51 | N_("Alias"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
52 | N_("Mobile"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
53 | N_("Telephone"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
54 | N_("Address"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
55 | N_("Email"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
56 | N_("ZipCode"), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
57 | N_("Note") |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
58 | }; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
59 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
60 | typedef struct _modify_memo_request { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
61 | PurpleConnection *gc; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
62 | guint32 bd_uid; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
63 | gchar **segments; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
64 | } modify_memo_request; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
65 | |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
66 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
67 | static void memo_debug(gchar **segments) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
68 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
69 | gint index; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
70 | g_return_if_fail(NULL != segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
71 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
72 | purple_debug_info("QQ","memo[%i]=%s\n", index, segments[index]); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
73 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
74 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
75 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
76 | static void memo_free(gchar **segments) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
77 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
78 | gint index; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
79 | g_return_if_fail(NULL != segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
80 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
81 | g_free(segments[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
82 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
83 | purple_debug_info("QQ", "memo freed\n"); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
84 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
85 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
86 | static void update_buddy_memo(PurpleConnection *gc, guint32 bd_uid, gchar *alias) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
87 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
88 | PurpleAccount *account; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
89 | PurpleBuddy *buddy; |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
90 | gchar *who; |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
91 | g_return_if_fail(NULL != gc && NULL != alias); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
92 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
93 | account = (PurpleAccount *)gc->account; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
94 | g_return_if_fail(NULL != account); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
95 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
96 | who = uid_to_purple_name(bd_uid); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
97 | buddy = purple_find_buddy(account, who); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
98 | if (buddy == NULL || buddy->proto_data == NULL) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
99 | g_free(who); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
100 | purple_debug_info("QQ", "Error...Can NOT find %d!\n", bd_uid); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
101 | return; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
102 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
103 | purple_blist_alias_buddy(buddy, (const char*)alias); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
104 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
105 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
106 | static void request_change_memo(PurpleConnection *gc, guint32 bd_uid, gchar **segments) |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
107 | { |
|
25656
337f9a10a7b8
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25655
diff
changeset
|
108 | gint bytes; |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
109 | /* Attention, length of each segment must be guint8(0~255), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
110 | * so length of memo string is limited. |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
111 | * convert it to guint8 first before putting data */ |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
112 | guint seg_len; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
113 | gint index; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
114 | guint8 raw_data[MAX_PACKET_SIZE - 16] = {0}; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
115 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
116 | purple_debug_info( "QQ", "request_change_memo\n" ); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
117 | g_return_if_fail(NULL != gc && NULL != segments); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
118 | |
|
25656
337f9a10a7b8
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25655
diff
changeset
|
119 | bytes = 0; |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
120 | bytes += qq_put8(raw_data+bytes, QQ_BUDDY_MEMO_MODIFY); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
121 | bytes += qq_put8(raw_data+bytes, 0x00); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
122 | bytes += qq_put32(raw_data+bytes, (guint32)bd_uid); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
123 | bytes += qq_put8(raw_data+bytes, 0x00); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
124 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
125 | seg_len = strlen(segments[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
126 | seg_len = seg_len & 0xff; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
127 | bytes += qq_put8(raw_data+bytes, (guint8)seg_len); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
128 | bytes += qq_putdata(raw_data+bytes, (const guint8 *)segments[index], (guint8)seg_len); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
129 | } |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
130 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
131 | /* debug */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
132 | /* |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
133 | qq_show_packet("MEMO MODIFY", raw_data, bytes); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
134 | */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
135 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
136 | qq_send_cmd(gc, QQ_CMD_BUDDY_MEMO, raw_data, bytes); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
137 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
138 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
139 | static void memo_modify_cancle_cb(modify_memo_request *memo_request, PurpleRequestFields *fields) |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
140 | { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
141 | memo_free(memo_request->segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
142 | g_free(memo_request); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
143 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
144 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
145 | /* prepare segments to be sent, string all convert to qq charset */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
146 | static void memo_modify_ok_cb(modify_memo_request *memo_request, PurpleRequestFields *fields) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
147 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
148 | PurpleConnection *gc; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
149 | guint32 bd_uid; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
150 | gchar **segments; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
151 | const gchar *utf8_str; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
152 | gchar *value = NULL; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
153 | gint index; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
154 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
155 | g_return_if_fail(NULL != memo_request); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
156 | gc = (PurpleConnection *)memo_request->gc; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
157 | segments = (gchar **)memo_request->segments; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
158 | g_return_if_fail(NULL != gc && NULL != segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
159 | bd_uid = (guint32)memo_request->bd_uid; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
160 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
161 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
162 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
163 | utf8_str = purple_request_fields_get_string(fields, memo_id[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
164 | /* update alias */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
165 | if (QQ_MEMO_ALIAS == index) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
166 | update_buddy_memo(gc, bd_uid, segments[QQ_MEMO_ALIAS]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
167 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
168 | if (NULL == utf8_str) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
169 | value = g_strdup(""); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
170 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
171 | else { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
172 | value = utf8_to_qq(utf8_str, QQ_CHARSET_DEFAULT); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
173 | /* Warnning: value will be string "(NULL)" instead of NULL */ |
|
25658
d3a305c0fce8
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25657
diff
changeset
|
174 | if (!qq_strcmp("(NULL)", value)) { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
175 | value = g_strdup(""); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
176 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
177 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
178 | g_free(segments[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
179 | segments[index] = value; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
180 | } |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
181 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
182 | memo_debug(segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
183 | /* send segments */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
184 | request_change_memo(gc, bd_uid, segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
185 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
186 | /* free segments */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
187 | memo_free(segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
188 | g_free(memo_request); |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
189 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
190 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
191 | /* memo modify dialogue */ |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
192 | static void memo_modify_dialogue(PurpleConnection *gc, guint32 bd_uid, gchar **segments, guint32 action) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
193 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
194 | modify_memo_request *memo_request; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
195 | PurpleRequestField *field; |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
196 | PurpleRequestFields *fields; |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
197 | PurpleRequestFieldGroup *group; |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
198 | int index; |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
199 | gchar *utf8_title; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
200 | gchar *utf8_primary; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
201 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
202 | g_return_if_fail(NULL != gc && NULL != segments); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
203 | |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
204 | switch (action) { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
205 | case QQ_BUDDY_MEMO_GET: |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
206 | memo_free(segments); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
207 | break; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
208 | case QQ_BUDDY_MEMO_MODIFY: |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
209 | /* keep one dialog once a time */ |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
210 | purple_request_close_with_handle(gc); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
211 | /* show dialog */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
212 | fields = purple_request_fields_new(); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
213 | group = purple_request_field_group_new(NULL); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
214 | purple_request_fields_add_group(fields, group); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
215 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
216 | for(index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
217 | /* |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
218 | purple_debug_info("QQ", "id:%s txt:%s segment:%s\n", |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
219 | memo_id[index], memo_txt[index], segments[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
220 | */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
221 | field = purple_request_field_string_new(memo_id[index], memo_txt[index], |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
222 | segments[index], FALSE); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
223 | purple_request_field_group_add_field(group, field); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
224 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
225 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
226 | /* for upload cb */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
227 | memo_request = g_new0(modify_memo_request, 1); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
228 | memo_request->gc = gc; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
229 | memo_request->bd_uid = bd_uid; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
230 | memo_request->segments = segments; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
231 | /* callback */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
232 | utf8_title = g_strdup(_("Buddy Memo")); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
233 | utf8_primary = g_strdup(_("Change his/her memo as you like")); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
234 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
235 | purple_request_fields(gc, utf8_title, utf8_primary, NULL, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
236 | fields, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
237 | _("_Modify"), G_CALLBACK(memo_modify_ok_cb), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
238 | _("_Cancel"), G_CALLBACK(memo_modify_cancle_cb), |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
239 | purple_connection_get_account(gc), NULL, NULL, |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
240 | memo_request); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
241 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
242 | g_free(utf8_title); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
243 | g_free(utf8_primary); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
244 | break; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
245 | default: |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
246 | purple_debug_info("QQ", "Error...unknown memo action, please tell us\n"); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
247 | break; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
248 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
249 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
250 | |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
251 | static void qq_create_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 action) |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
252 | { |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
253 | gchar **segments; |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
254 | gint index; |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
255 | g_return_if_fail(NULL != gc); |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
256 | |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
257 | segments = g_new0(gchar*, QQ_MEMO_SIZE); |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
258 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
259 | segments[index] = g_strdup("");; |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
260 | } |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
261 | memo_modify_dialogue(gc, bd_uid, segments, action); |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
262 | } |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
263 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
264 | /* process reply to get_memo packet */ |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
265 | void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
266 | guint32 update_class, guint32 action) |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
267 | { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
268 | gchar **segments; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
269 | gint bytes; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
270 | gint index; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
271 | guint8 rcv_cmd; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
272 | guint32 rcv_uid; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
273 | guint8 unk1_8; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
274 | guint8 is_success; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
275 | |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
276 | g_return_if_fail(NULL != gc && NULL != data && 0 != data_len); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
277 | /* |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
278 | qq_show_packet("MEMO REACH", data, data_len); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
279 | */ |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
280 | purple_debug_info("QQ", "action=0x%02X\n", action); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
281 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
282 | bytes = 0; |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
283 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
284 | /* TX looks a bit clever than before... :) */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
285 | bytes += qq_get8(&rcv_cmd, data+bytes); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
286 | purple_debug_info("QQ", "rcv_cmd=0x%02X\n", rcv_cmd); |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
287 | |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
288 | /* it's possible that packet contains no buddy uid and no memo!!! |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
289 | * go to next step according to previous action sent */ |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
290 | if (1 == data_len) { /* only one byte */ |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
291 | purple_debug_info("QQ", "memo packet contains no buddy uid and memo...\n"); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
292 | if (QQ_BUDDY_MEMO_MODIFY == action) { |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
293 | qq_create_buddy_memo(gc, (guint32)update_class, QQ_BUDDY_MEMO_MODIFY); |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
294 | return; |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
295 | } |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
296 | return; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
297 | } |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
298 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
299 | switch (rcv_cmd) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
300 | case QQ_BUDDY_MEMO_MODIFY: |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
301 | case QQ_BUDDY_MEMO_REMOVE: |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
302 | bytes += qq_get8(&is_success, data+bytes); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
303 | if (QQ_BUDDY_MEMO_REQUEST_SUCCESS == is_success) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
304 | purple_notify_message(gc, PURPLE_NOTIFY_MSG_INFO, |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
305 | _("Memo Modify"), _("Server says:"), |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
306 | _("Your request was accepted."), |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
307 | NULL, NULL); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
308 | purple_debug_info("QQ", "memo change succeessfully!\n"); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
309 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
310 | else { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
311 | purple_notify_message(gc, PURPLE_NOTIFY_MSG_INFO, |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
312 | _("Memo Modify"), _("Server says:"), |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
313 | _("Your request was rejected."), |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
314 | NULL, NULL); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
315 | purple_debug_info("QQ", "memo change failed\n"); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
316 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
317 | break; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
318 | case QQ_BUDDY_MEMO_GET: |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
319 | bytes += qq_get32(&rcv_uid, data+bytes); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
320 | purple_debug_info("QQ", "rcv_uid=%u\n", rcv_uid); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
321 | bytes += qq_get8(&unk1_8, data+bytes); |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
322 | purple_debug_info("QQ", "unk1_8=0x%02X\n", unk1_8); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
323 | segments = g_new0(gchar*, QQ_MEMO_SIZE); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
324 | for (index = 0; index < QQ_MEMO_SIZE; index++) { |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
325 | /* get utf8 string */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
326 | bytes += qq_get_vstr(&segments[index], QQ_CHARSET_DEFAULT, data+bytes); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
327 | /* |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
328 | purple_debug_info("QQ", "bytes:%d, seg:%s\n", bytes, segments[index]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
329 | */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
330 | } |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
331 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
332 | /* common action, update buddy memo */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
333 | update_buddy_memo(gc, rcv_uid, segments[QQ_MEMO_ALIAS]); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
334 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
335 | /* memo is thing that we regard our buddy as, so we need one more buddy_uid */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
336 | memo_modify_dialogue(gc, rcv_uid, segments, action); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
337 | break; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
338 | default: |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
339 | purple_debug_info("QQ", "received an UNKNOWN memo cmd!!!\n"); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
340 | break; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
341 | } |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
342 | } |
|
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
343 | |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
344 | /* request buddy memo */ |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
345 | void qq_request_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 update_class, guint32 action) |
|
25655
8c6d7250f64a
2009.02.09 - Chengming Wang <tiger2007532246(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
346 | { |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
347 | guint8 raw_data[16] = {0}; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
348 | gint bytes; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
349 | |
|
25659
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
350 | purple_debug_info("QQ", "qq_request_buddy_memo, buddy uid=%u, update_class=%u\n", |
|
2bbb8a5e37e5
2009.02.24 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25658
diff
changeset
|
351 | bd_uid, update_class); |
|
25657
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
352 | g_return_if_fail(NULL != gc); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
353 | /* '0' is ok |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
354 | g_return_if_fail(uid != 0); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
355 | */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
356 | bytes = 0; |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
357 | bytes += qq_put8(raw_data+bytes, QQ_BUDDY_MEMO_GET); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
358 | bytes += qq_put32(raw_data+bytes, bd_uid); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
359 | /* |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
360 | qq_show_packet("MEMO REQUEST", raw_data, bytes); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
361 | */ |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
362 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
363 | qq_send_cmd_mess(gc, QQ_CMD_BUDDY_MEMO, (guint8*)raw_data, bytes, update_class, action); |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
364 | } |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
365 | |
|
4766831442b0
2009.02.21 - flos <lonicerae(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
25656
diff
changeset
|
366 |