]> git.0d.be Git - empathy.git/commitdiff
Implemented _get_groups_for_individual
authorLaurent Contzen <lcontzen@gmail.com>
Wed, 8 Aug 2012 13:15:14 +0000 (15:15 +0200)
committerLaurent Contzen <lcontzen@gmail.com>
Thu, 9 Aug 2012 10:51:41 +0000 (12:51 +0200)
libempathy-gtk/empathy-roster-model-aggregator.c

index fd06e4449572fb1a62f017f4845b6952a33f709c..ded4ec291337459853a08f5520803364f38ad13f 100644 (file)
@@ -312,8 +312,34 @@ empathy_roster_model_aggregator_get_individuals (EmpathyRosterModel *model)
   return g_hash_table_get_values (self->priv->individuals);
 }
 
+static GList *
+empathy_roster_model_aggregator_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_aggregator_get_individuals;
+  iface->get_groups_for_individual =
+    empathy_roster_model_aggregator_get_groups_for_individual;
 }