aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-roster-model-manager.c
diff options
context:
space:
mode:
authorLaurent Contzen <lcontzen@gmail.com>2012-07-04 21:29:41 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-07-23 22:11:28 +0800
commitf7200ee068d8f959608521737872254f20c5ee55 (patch)
tree3d03ccdc2a77e51d5a0477f9664e30a534a42eb4 /libempathy-gtk/empathy-roster-model-manager.c
parent5e102f002d353aceb687f92499635b86a0ba2d9b (diff)
downloadgsoc2013-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.c27
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;
}