Mercurial > pidgin.yaz
diff src/protocols/msn/group.c @ 9193:502707ca1836
[gaim-migrate @ 9988]
Patch by Felipe Contreras to add MSN file transfer and buddy icons. Please
test and report any bugs!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 06 Jun 2004 02:39:08 +0000 |
parents | 06f57183e29f |
children | ab6636c5a136 |
line wrap: on
line diff
--- a/src/protocols/msn/group.c Sun Jun 06 02:16:08 2004 +0000 +++ b/src/protocols/msn/group.c Sun Jun 06 02:39:08 2004 +0000 @@ -23,26 +23,19 @@ #include "group.h" MsnGroup * -msn_group_new(MsnSession *session, int id, const char *name) +msn_group_new(MsnUserList *userlist, int id, const char *name) { MsnGroup *group; - g_return_val_if_fail(session != NULL, NULL); - g_return_val_if_fail(id >= 0, NULL); - g_return_val_if_fail(name != NULL, NULL); + g_return_val_if_fail(id >= 0, NULL); + g_return_val_if_fail(name != NULL, NULL); - group = msn_groups_find_with_id(session->groups, id); + group = g_new0(MsnGroup, 1); - if (group == NULL) { - group = g_new0(MsnGroup, 1); + msn_userlist_add_group(userlist, group); - group->session = session; - group->id = id; - group->name = g_strdup(name); - group->users = msn_users_new(); - } - - msn_group_ref(group); + group->id = id; + group->name = g_strdup(name); return group; } @@ -52,50 +45,10 @@ { g_return_if_fail(group != NULL); - if (group->ref_count > 0) { - msn_group_unref(group); - - return; - } - - if (group->session != NULL && group->session->groups != NULL) - msn_groups_remove(group->session->groups, group); - - msn_users_destroy(group->users); - g_free(group->name); g_free(group); } -MsnGroup * -msn_group_ref(MsnGroup *group) -{ - g_return_val_if_fail(group != NULL, NULL); - - group->ref_count++; - - return group; -} - -MsnGroup * -msn_group_unref(MsnGroup *group) -{ - g_return_val_if_fail(group != NULL, NULL); - - if (group->ref_count <= 0) - return NULL; - - group->ref_count--; - - if (group->ref_count == 0) { - msn_group_destroy(group); - - return NULL; - } - - return group; -} - void msn_group_set_id(MsnGroup *group, int id) { @@ -132,143 +85,3 @@ return group->name; } - -void -msn_group_add_user(MsnGroup *group, MsnUser *user) -{ - g_return_if_fail(group != NULL); - g_return_if_fail(user != NULL); - - msn_users_add(group->users, user); - - msn_user_ref(user); - - gaim_debug(GAIM_DEBUG_INFO, "msn", "Adding user %s to group %s (%d)\n", - msn_user_get_passport(user), msn_group_get_name(group), - msn_group_get_id(group)); -} - -void -msn_group_remove_user(MsnGroup *group, MsnUser *user) -{ - g_return_if_fail(group != NULL); - g_return_if_fail(user != NULL); - - msn_users_remove(group->users, user); - - msn_user_unref(user); -} - -MsnUsers * -msn_group_get_users(const MsnGroup *group) -{ - g_return_val_if_fail(group != NULL, NULL); - - return group->users; -} - - -MsnGroups * -msn_groups_new(void) -{ - return g_new0(MsnGroups, 1); -} - -void -msn_groups_destroy(MsnGroups *groups) -{ - g_return_if_fail(groups != NULL); - - while (groups->groups != NULL) - msn_group_destroy(groups->groups->data); - - /* See if we've leaked anybody. */ - while (groups->groups != NULL) { - gaim_debug(GAIM_DEBUG_WARNING, "msn", - "Leaking group %s (id %d)\n", - msn_group_get_name(groups->groups->data), - msn_group_get_id(groups->groups->data)); - } - - g_free(groups); -} - -void -msn_groups_add(MsnGroups *groups, MsnGroup *group) -{ - g_return_if_fail(groups != NULL); - g_return_if_fail(group != NULL); - - groups->groups = g_list_append(groups->groups, group); - - groups->count++; - - gaim_debug(GAIM_DEBUG_INFO, "msn", "Adding group %s (%d)\n", - msn_group_get_name(group), msn_group_get_id(group)); -} - -void -msn_groups_remove(MsnGroups *groups, MsnGroup *group) -{ - g_return_if_fail(groups != NULL); - g_return_if_fail(group != NULL); - - gaim_debug(GAIM_DEBUG_INFO, "msn", "Removing group %s (%d)\n", - msn_group_get_name(group), msn_group_get_id(group)); - - groups->groups = g_list_remove(groups->groups, group); - - groups->count--; -} - -size_t -msn_groups_get_count(const MsnGroups *groups) -{ - g_return_val_if_fail(groups != NULL, 0); - - return groups->count; -} - -GList * -msn_groups_get_list(const MsnGroups *groups) -{ - g_return_val_if_fail(groups != NULL, NULL); - - return groups->groups; -} - -MsnGroup * -msn_groups_find_with_id(MsnGroups *groups, int id) -{ - GList *l; - - g_return_val_if_fail(groups != NULL, NULL); - g_return_val_if_fail(id >= 0, NULL); - - for (l = groups->groups; l != NULL; l = l->next) { - MsnGroup *group = l->data; - - if (group->id == id) - return group; - } - - return NULL; -} - -MsnGroup * -msn_groups_find_with_name(MsnGroups *groups, const char *name) -{ - GList *l; - - g_return_val_if_fail(groups != NULL, NULL); - g_return_val_if_fail(name != NULL, NULL); - - for (l = groups->groups; l != NULL; l = l->next) { - MsnGroup *group = l->data; - - if (group->name != NULL && !g_ascii_strcasecmp(name, group->name)) - return group; - } - - return NULL; -}