From 74278eb8046439040951a2e1700225beb5bdb1d3 Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Sun, 18 Aug 2013 14:46:26 +0300 Subject: [PATCH] buddy: add interface to insert group Start to internalize handling of buddy->groups. --- src/core/sipe-buddy.c | 25 +++++++++++++++++-------- src/core/sipe-buddy.h | 9 +++++++++ src/core/sipe-group.c | 10 +--------- src/core/sipe-group.h | 2 -- src/core/sipe-notify.c | 5 +---- 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/core/sipe-buddy.c b/src/core/sipe-buddy.c index 85329917..4d13a3fa 100644 --- a/src/core/sipe-buddy.c +++ b/src/core/sipe-buddy.c @@ -183,15 +183,27 @@ void sipe_buddy_add_to_group(struct sipe_core_private *sipe_private, } if (!is_buddy_in_group(buddy, group_name)) { - buddy->groups = sipe_utils_slist_insert_unique_sorted(buddy->groups, - group, - (GCompareFunc) sipe_group_compare, - NULL); + sipe_buddy_insert_group(buddy, group); SIPE_DEBUG_INFO("sipe_buddy_add_to_group: added buddy %s to group %s", uri, group_name); } } +static gint buddy_group_compare(gconstpointer a, gconstpointer b) +{ + return(((const struct sipe_group *)a)->id - + ((const struct sipe_group *)b)->id); +} + +void sipe_buddy_insert_group(struct sipe_buddy *buddy, + struct sipe_group *group) +{ + buddy->groups = sipe_utils_slist_insert_unique_sorted(buddy->groups, + group, + buddy_group_compare, + NULL); +} + void sipe_buddy_cleanup_local_list(struct sipe_core_private *sipe_private) { GSList *buddies = sipe_backend_buddy_find_all(SIPE_CORE_PUBLIC, @@ -440,10 +452,7 @@ void sipe_core_buddy_group(struct sipe_core_public *sipe_public, if (!new_group) { sipe_group_create(SIPE_CORE_PRIVATE, new_group_name, who); } else { - buddy->groups = sipe_utils_slist_insert_unique_sorted(buddy->groups, - new_group, - (GCompareFunc)sipe_group_compare, - NULL); + sipe_buddy_insert_group(buddy, new_group); sipe_group_update_buddy(SIPE_CORE_PRIVATE, buddy); } } diff --git a/src/core/sipe-buddy.h b/src/core/sipe-buddy.h index f1305805..453b734b 100644 --- a/src/core/sipe-buddy.h +++ b/src/core/sipe-buddy.h @@ -93,6 +93,15 @@ void sipe_buddy_add_to_group(struct sipe_core_private *sipe_private, const gchar *alias); /** + * Insert a group to buddy group list + * + * @param buddy sipe_buddy data structure + * @param group sipe_group data structure + */ +void sipe_buddy_insert_group(struct sipe_buddy *buddy, + struct sipe_group *group); + +/** * Remove entries from local buddy list that do not have corresponding entries * in the ones in the contact list sent by the server * diff --git a/src/core/sipe-group.c b/src/core/sipe-group.c index 2bf599c4..65b7298b 100755 --- a/src/core/sipe-group.c +++ b/src/core/sipe-group.c @@ -65,10 +65,7 @@ void sipe_group_add_buddy(struct sipe_core_private *sipe_private, struct sipe_buddy *buddy = sipe_buddy_find_by_uri(sipe_private, who); if (buddy) { - buddy->groups = sipe_utils_slist_insert_unique_sorted(buddy->groups, - group, - (GCompareFunc)sipe_group_compare, - NULL); + sipe_buddy_insert_group(buddy, group); sipe_group_update_buddy(sipe_private, buddy); } } @@ -120,11 +117,6 @@ process_add_group_response(struct sipe_core_private *sipe_private, return FALSE; } -int -sipe_group_compare(struct sipe_group *group1, struct sipe_group *group2) { - return group1->id - group2->id; -} - struct sipe_group* sipe_group_find_by_id(struct sipe_core_private *sipe_private, guint id) diff --git a/src/core/sipe-group.h b/src/core/sipe-group.h index f3e8fadd..b81def75 100644 --- a/src/core/sipe-group.h +++ b/src/core/sipe-group.h @@ -31,8 +31,6 @@ struct sipe_group { guint id; }; -int sipe_group_compare(struct sipe_group *group1, struct sipe_group *group2); - struct sipe_group *sipe_group_find_by_id(struct sipe_core_private *sipe_private, guint id); diff --git a/src/core/sipe-notify.c b/src/core/sipe-notify.c index 4850a604..39e76f20 100644 --- a/src/core/sipe-notify.c +++ b/src/core/sipe-notify.c @@ -1321,10 +1321,7 @@ static gboolean sipe_process_roaming_contacts(struct sipe_core_private *sipe_pri uri, alias, group->name); - buddy->groups = sipe_utils_slist_insert_unique_sorted(buddy->groups, - group, - (GCompareFunc) sipe_group_compare, - NULL); + sipe_buddy_insert_group(buddy, group); SIPE_DEBUG_INFO("Added buddy %s (alias '%s' to group '%s'", uri, alias, group->name); } -- 2.11.4.GIT