| 220 |
220 |
| 221 purple_notify_user_info_destroy(user_info); |
221 purple_notify_user_info_destroy(user_info); |
| 222 g_strfreev(segments); |
222 g_strfreev(segments); |
| 223 } |
223 } |
| 224 |
224 |
| 225 void qq_request_buddy_info(PurpleConnection *gc, guint32 uid, |
225 void qq_request_buddy_info(PurpleConnection *gc, UID uid, |
| 226 guint32 update_class, int action) |
226 UPDCLS update_class, int action) |
| 227 { |
227 { |
| 228 gchar raw_data[16] = {0}; |
228 gchar raw_data[16] = {0}; |
| 229 |
229 |
| 230 g_return_if_fail(uid != 0); |
230 g_return_if_fail(uid != 0); |
| 231 |
231 |
| 619 static void update_buddy_info(PurpleConnection *gc, gchar **segments) |
619 static void update_buddy_info(PurpleConnection *gc, gchar **segments) |
| 620 { |
620 { |
| 621 PurpleBuddy *buddy = NULL; |
621 PurpleBuddy *buddy = NULL; |
| 622 qq_data *qd = NULL; |
622 qq_data *qd = NULL; |
| 623 qq_buddy_data *bd = NULL; |
623 qq_buddy_data *bd = NULL; |
| 624 guint32 uid; |
624 UID uid; |
| 625 gchar *who; |
625 gchar *who; |
| 626 gchar *alias_utf8; |
626 gchar *alias_utf8; |
| 627 |
627 |
| 628 PurpleAccount *account = purple_connection_get_account(gc); |
628 PurpleAccount *account = purple_connection_get_account(gc); |
| 629 qd = (qq_data *)purple_connection_get_protocol_data(gc); |
629 qd = (qq_data *)purple_connection_get_protocol_data(gc); |
| 755 } |
755 } |
| 756 bytes += qq_put32(buf + bytes, uid); |
756 bytes += qq_put32(buf + bytes, uid); |
| 757 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); |
757 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); |
| 758 } |
758 } |
| 759 |
759 |
| 760 void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid) |
760 void qq_request_get_level_2007(PurpleConnection *gc, UID uid) |
| 761 { |
761 { |
| 762 guint8 buf[16] = {0}; |
762 guint8 buf[16] = {0}; |
| 763 gint bytes = 0; |
763 gint bytes = 0; |
| 764 |
764 |
| 765 bytes += qq_put8(buf + bytes, 0x08); |
765 bytes += qq_put8(buf + bytes, 0x08); |
| 766 bytes += qq_put32(buf + bytes, uid); |
766 bytes += qq_put32(buf + bytes, uid); |
| 767 bytes += qq_put8(buf + bytes, 0x00); |
767 bytes += qq_put8(buf + bytes, 0x00); |
| 768 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); |
768 qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes); |
| 769 } |
769 } |
| 770 |
770 |
| 771 void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class) |
771 void qq_request_get_buddies_level(PurpleConnection *gc, UPDCLS update_class) |
| 772 { |
772 { |
| 773 qq_data *qd = (qq_data *) gc->proto_data; |
773 qq_data *qd = (qq_data *) gc->proto_data; |
| 774 PurpleBuddy *buddy; |
774 PurpleBuddy *buddy; |
| 775 qq_buddy_data *bd; |
775 qq_buddy_data *bd; |
| 776 guint8 *buf; |
776 guint8 *buf; |
| 796 } |
796 } |
| 797 |
797 |
| 798 static void process_level(PurpleConnection *gc, guint8 *data, gint data_len) |
798 static void process_level(PurpleConnection *gc, guint8 *data, gint data_len) |
| 799 { |
799 { |
| 800 gint bytes = 0; |
800 gint bytes = 0; |
| 801 guint32 uid, onlineTime; |
801 UID uid; |
| |
802 guint32 onlineTime; |
| 802 guint16 level, timeRemainder; |
803 guint16 level, timeRemainder; |
| 803 qq_buddy_data *bd; |
804 qq_buddy_data *bd; |
| 804 |
805 |
| 805 while (data_len - bytes >= 12) { |
806 while (data_len - bytes >= 12) { |
| 806 bytes += qq_get32(&uid, data + bytes); |
807 bytes += qq_get32(&uid, data + bytes); |