diff options
author | Laurent Contzen <lcontzen@gmail.com> | 2012-07-04 21:29:41 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2012-07-23 22:11:28 +0800 |
commit | f7200ee068d8f959608521737872254f20c5ee55 (patch) | |
tree | 3d03ccdc2a77e51d5a0477f9664e30a534a42eb4 /libempathy-gtk/empathy-roster-model-manager.c | |
parent | 5e102f002d353aceb687f92499635b86a0ba2d9b (diff) | |
download | gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar.gz gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar.bz2 gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar.lz gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar.xz gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.tar.zst gsoc2013-empathy-f7200ee068d8f959608521737872254f20c5ee55.zip |
empathy-roster-model: New virtual method _get_groups_for_individual empathy-roster-model-manager: implemented _get_groups_for_individual empathy-roster-view.c: using _get_groups_for_individual
https://bugzilla.gnome.org/show_bug.cgi?id=680302
Diffstat (limited to 'libempathy-gtk/empathy-roster-model-manager.c')
-rw-r--r-- | libempathy-gtk/empathy-roster-model-manager.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/libempathy-gtk/empathy-roster-model-manager.c b/libempathy-gtk/empathy-roster-model-manager.c index 2684d2765..7d747326a 100644 --- a/libempathy-gtk/empathy-roster-model-manager.c +++ b/libempathy-gtk/empathy-roster-model-manager.c @@ -85,9 +85,7 @@ groups_changed_cb (EmpathyIndividualManager *manager, EmpathyRosterModelManager *self) { empathy_roster_model_fire_groups_changed (EMPATHY_ROSTER_MODEL (self), - individual, - group, - is_member); + individual, group, is_member); } static void @@ -218,8 +216,31 @@ empathy_roster_model_manager_get_individuals (EmpathyRosterModel *model) return empathy_individual_manager_get_members (self->priv->manager); } +static GList * +empathy_roster_model_manager_get_groups_for_individual (EmpathyRosterModel *model, + FolksIndividual *individual) +{ + GList *groups_list = NULL; + GeeSet *groups_set; + + groups_set = folks_group_details_get_groups (FOLKS_GROUP_DETAILS (individual)); + if (gee_collection_get_size (GEE_COLLECTION (groups_set)) > 0) + { + GeeIterator *iter = gee_iterable_iterator (GEE_ITERABLE (groups_set)); + + while (iter != NULL && gee_iterator_next (iter)) + { + groups_list = g_list_prepend (groups_list, gee_iterator_get (iter)); + } + g_clear_object (&iter); + } + + return groups_list; +} + static void roster_model_iface_init (EmpathyRosterModelInterface *iface) { iface->get_individuals = empathy_roster_model_manager_get_individuals; + iface->get_groups_for_individual = empathy_roster_model_manager_get_groups_for_individual; } |