Mercurial > pidgin
diff libpurple/protocols/qq/group_internal.c @ 24154:237e5a94e11c
2008.10.08 - ccpaging <ccpaging(at)gmail.com>
* Update group part
* Delete some meaningless functions and data
* Added 'change my icon'
2008.10.08 - lonicerae <lonicerae(at)gmail.com>
* Merge 20081008 patch into trunk
author | SHiNE CsyFeK <csyfek@gmail.com> |
---|---|
date | Wed, 22 Oct 2008 15:08:30 +0000 |
parents | 1bdf7b602684 |
children | 3c52353b83ae |
line wrap: on
line diff
--- a/libpurple/protocols/qq/group_internal.c Wed Oct 22 15:06:26 2008 +0000 +++ b/libpurple/protocols/qq/group_internal.c Wed Oct 22 15:08:30 2008 +0000 @@ -142,8 +142,14 @@ return components; } +static gint str2dec(const gchar *str) +{ + g_return_val_if_fail(str != NULL, 0); + return strtol(str, NULL, 10); +} + /* create a qq_group from hashtable */ -qq_group *qq_room_create_by_hashtable(PurpleConnection *gc, GHashTable *data) +qq_group *qq_room_data_new_by_hashtable(PurpleConnection *gc, GHashTable *data) { qq_data *qd; qq_group *group; @@ -153,23 +159,25 @@ group = g_new0(qq_group, 1); group->my_role = - qq_string_to_dec_value + str2dec (NULL == g_hash_table_lookup(data, QQ_ROOM_KEY_ROLE) ? g_strdup_printf("%d", QQ_ROOM_ROLE_NO) : g_hash_table_lookup(data, QQ_ROOM_KEY_ROLE)); - group->id = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID)); - group->ext_id = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID)); - group->type8 = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_TYPE)); - group->creator_uid = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_CREATOR_UID)); - group->category = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_CATEGORY)); - group->auth_type = qq_string_to_dec_value(g_hash_table_lookup(data, QQ_ROOM_KEY_AUTH_TYPE)); + group->id = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_INTERNAL_ID)); + group->ext_id = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_EXTERNAL_ID)); + group->type8 = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_TYPE)); + group->creator_uid = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_CREATOR_UID)); + group->category = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_CATEGORY)); + group->auth_type = str2dec(g_hash_table_lookup(data, QQ_ROOM_KEY_AUTH_TYPE)); group->title_utf8 = g_strdup(g_hash_table_lookup(data, QQ_ROOM_KEY_TITLE_UTF8)); group->desc_utf8 = g_strdup(g_hash_table_lookup(data, QQ_ROOM_KEY_DESC_UTF8)); group->my_role_desc = get_role_desc(group); - group->is_got_info = FALSE; + group->is_got_buddies = FALSE; + purple_debug_info("QQ", "Created room info from hashtable: %s, %d, id %d\n", + group->title_utf8, group->ext_id, group->id); qd->groups = g_list_append(qd->groups, group); return group; } @@ -222,21 +230,3 @@ g_hash_table_replace(chat->components, g_strdup(QQ_ROOM_KEY_DESC_UTF8), g_strdup(group->desc_utf8)); } - -/* NOTE: If we knew how to convert between an external and internal group id, as the official - * client seems to, the following would be unnecessary. That would be ideal. */ - -/* Use list to specify if id's alternate id is pending discovery. */ -void qq_set_pending_id(GSList **list, guint32 id, gboolean pending) -{ - if (pending) - *list = g_slist_prepend(*list, GINT_TO_POINTER(id)); - else - *list = g_slist_remove(*list, GINT_TO_POINTER(id)); -} - -/* Return the location of id in list, or NULL if not found */ -GSList *qq_get_pending_id(GSList *list, guint32 id) -{ - return g_slist_find(list, GINT_TO_POINTER(id)); -}