00001
00023
00024
00025 #include "debug.h"
00026
00027 #include "buddy_status.h"
00028 #include "group_free.h"
00029 #include "group_network.h"
00030 #include "group.h"
00031
00032
00033
00034 void _qq_group_free_member(qq_group * group)
00035 {
00036 gint i;
00037 GList *list;
00038 qq_buddy *member;
00039
00040 g_return_if_fail(group != NULL);
00041 i = 0;
00042 while (NULL != (list = group->members)) {
00043 member = (qq_buddy *) list->data;
00044 i++;
00045 group->members = g_list_remove(group->members, member);
00046 g_free(member->nickname);
00047 g_free(member);
00048 }
00049
00050 group->members = NULL;
00051
00052 }
00053
00054
00055
00056 void _qq_group_free(qq_group * group)
00057 {
00058 g_return_if_fail(group != NULL);
00059 _qq_group_free_member(group);
00060 g_free(group->group_name_utf8);
00061 g_free(group->group_desc_utf8);
00062 g_free(group);
00063 }
00064
00065
00066
00067 void qq_group_packets_free(qq_data * qd)
00068 {
00069 group_packet *p;
00070 gint i;
00071
00072 i = 0;
00073 while (qd->group_packets != NULL) {
00074 p = (group_packet *) (qd->group_packets->data);
00075 qd->group_packets = g_list_remove(qd->group_packets, p);
00076 g_free(p);
00077 i++;
00078 }
00079 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d group packets are freed!\n", i);
00080 }
00081
00082
00083 void qq_group_remove_by_internal_group_id(qq_data * qd, guint32 internal_group_id) {
00084 qq_group *group;
00085 GList *list;
00086 g_return_if_fail(qd != NULL);
00087
00088 list = qd->groups;
00089 while (list != NULL) {
00090 group = (qq_group *) qd->groups->data;
00091 if (internal_group_id == group->internal_group_id) {
00092 qd->groups = g_list_remove(qd->groups, group);
00093 _qq_group_free(group);
00094 break;
00095 } else
00096 list = list->next;
00097 }
00098
00099 }
00100
00101
00102 void qq_group_free_all(qq_data * qd)
00103 {
00104 qq_group *group;
00105 gint i;
00106 g_return_if_fail(qd != NULL);
00107
00108 i = 0;
00109 while (qd->groups != NULL) {
00110 i++;
00111 group = (qq_group *) qd->groups->data;
00112 qd->groups = g_list_remove(qd->groups, group);
00113 _qq_group_free(group);
00114 }
00115
00116 gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d groups are freed\n", i);
00117 }
00118
00119
00120