| 74 guint32 internal_id, guint32 external_id, gchar *group_name_utf8) |
74 guint32 internal_id, guint32 external_id, gchar *group_name_utf8) |
| 75 { |
75 { |
| 76 qq_group *group; |
76 qq_group *group; |
| 77 qq_data *qd; |
77 qq_data *qd; |
| 78 |
78 |
| 79 g_return_val_if_fail(gc != NULL && gc->proto_data != NULL, NULL); |
|
| 80 g_return_val_if_fail(internal_id > 0, NULL); |
79 g_return_val_if_fail(internal_id > 0, NULL); |
| 81 qd = (qq_data *) gc->proto_data; |
80 qd = (qq_data *) gc->proto_data; |
| 82 |
81 |
| 83 group = g_new0(qq_group, 1); |
82 group = g_new0(qq_group, 1); |
| 84 group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER; |
83 group->my_status = QQ_GROUP_MEMBER_STATUS_NOT_MEMBER; |
| 102 |
101 |
| 103 void qq_group_delete_internal_record(qq_data *qd, guint32 internal_group_id) |
102 void qq_group_delete_internal_record(qq_data *qd, guint32 internal_group_id) |
| 104 { |
103 { |
| 105 qq_group *group; |
104 qq_group *group; |
| 106 GList *list; |
105 GList *list; |
| 107 g_return_if_fail(qd != NULL); |
|
| 108 |
106 |
| 109 list = qd->groups; |
107 list = qd->groups; |
| 110 while (list != NULL) { |
108 while (list != NULL) { |
| 111 group = (qq_group *) qd->groups->data; |
109 group = (qq_group *) qd->groups->data; |
| 112 if (internal_group_id == group->internal_group_id) { |
110 if (internal_group_id == group->internal_group_id) { |
| 146 qq_group *qq_group_from_hashtable(GaimConnection *gc, GHashTable *data) |
144 qq_group *qq_group_from_hashtable(GaimConnection *gc, GHashTable *data) |
| 147 { |
145 { |
| 148 qq_data *qd; |
146 qq_data *qd; |
| 149 qq_group *group; |
147 qq_group *group; |
| 150 |
148 |
| 151 g_return_val_if_fail(gc != NULL && gc->proto_data != NULL, NULL); |
|
| 152 g_return_val_if_fail(data != NULL, NULL); |
149 g_return_val_if_fail(data != NULL, NULL); |
| 153 qd = (qq_data *) gc->proto_data; |
150 qd = (qq_data *) gc->proto_data; |
| 154 |
151 |
| 155 group = g_new0(qq_group, 1); |
152 group = g_new0(qq_group, 1); |
| 156 group->my_status = |
153 group->my_status = |
| 179 /* refresh group local subscription */ |
176 /* refresh group local subscription */ |
| 180 void qq_group_refresh(GaimConnection *gc, qq_group *group) |
177 void qq_group_refresh(GaimConnection *gc, qq_group *group) |
| 181 { |
178 { |
| 182 GaimChat *chat; |
179 GaimChat *chat; |
| 183 gchar *external_group_id; |
180 gchar *external_group_id; |
| 184 g_return_if_fail(gc != NULL && group != NULL); |
181 g_return_if_fail(group != NULL); |
| 185 |
182 |
| 186 external_group_id = g_strdup_printf("%d", group->external_group_id); |
183 external_group_id = g_strdup_printf("%d", group->external_group_id); |
| 187 chat = gaim_blist_find_chat(gaim_connection_get_account(gc), external_group_id); |
184 chat = gaim_blist_find_chat(gaim_connection_get_account(gc), external_group_id); |
| 188 g_free(external_group_id); |
185 g_free(external_group_id); |
| 189 if (chat == NULL && group->my_status != QQ_GROUP_MEMBER_STATUS_NOT_MEMBER) { |
186 if (chat == NULL && group->my_status != QQ_GROUP_MEMBER_STATUS_NOT_MEMBER) { |