]> git.0d.be Git - empathy.git/commitdiff
empathy-roster-model-manager: deal with members-changed signals empathy-roster-view...
authorLaurent Contzen <lcontzen@gmail.com>
Wed, 4 Jul 2012 12:06:51 +0000 (14:06 +0200)
committerLaurent Contzen <lcontzen@gmail.com>
Mon, 23 Jul 2012 07:48:42 +0000 (09:48 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=680302

libempathy-gtk/empathy-roster-model-manager.c
libempathy-gtk/empathy-roster-view.c

index b76a7a384f6667f1c17973102ea1932f221e8140..ed414aa856645871c9803d015bbbb181721558d3 100644 (file)
@@ -54,6 +54,29 @@ struct _EmpathyRosterModelManagerPriv
   EmpathyIndividualManager *manager;
 };
 
+static void
+members_changed_cb (EmpathyIndividualManager *manager,
+    const gchar *message,
+    GList *added,
+    GList *removed,
+    TpChannelGroupChangeReason reason,
+    EmpathyRosterModelManager *self)
+{
+  GList *l;
+
+  for (l = added; l != NULL; l = g_list_next (l))
+    {
+      empathy_roster_model_fire_individual_added (EMPATHY_ROSTER_MODEL (self),
+          l->data);
+    }
+
+  for (l = removed; l != NULL; l = g_list_next (l))
+    {
+      empathy_roster_model_fire_individual_removed (EMPATHY_ROSTER_MODEL (self),
+          l->data);
+    }
+}
+
 static void
 empathy_roster_model_manager_get_property (GObject *object,
     guint property_id,
@@ -104,6 +127,9 @@ empathy_roster_model_manager_constructed (GObject *object)
     chain_up (object);
 
   g_assert (EMPATHY_IS_INDIVIDUAL_MANAGER (self->priv->manager));
+
+  tp_g_signal_connect_object (self->priv->manager, "members-changed",
+      G_CALLBACK (members_changed_cb), self, 0);
 }
 
 static void
index fb157ac90dec40ab0462575a6bacf211b5dcc50f..b54ebc100e1783a3e9f7e5fa99df13f159ac00a3 100644 (file)
@@ -521,28 +521,19 @@ individual_removed (EmpathyRosterView *self,
 }
 
 static void
-members_changed_cb (EmpathyIndividualManager *manager,
-    const gchar *message,
-    GList *added,
-    GList *removed,
-    TpChannelGroupChangeReason reason,
+individual_added_cb (EmpathyRosterModel *model,
+    FolksIndividual *individual,
     EmpathyRosterView *self)
 {
-  GList *l;
-
-  for (l = added; l != NULL; l = g_list_next (l))
-    {
-      FolksIndividual *individual = l->data;
-
-      individual_added (self, individual);
-    }
-
-  for (l = removed; l != NULL; l = g_list_next (l))
-    {
-      FolksIndividual *individual = l->data;
+  individual_added (self, individual);
+}
 
-      individual_removed (self, individual);
-    }
+static void
+individual_removed_cb (EmpathyRosterModel *model,
+    FolksIndividual *individual,
+    EmpathyRosterView *self)
+{
+  individual_removed (self, individual);
 }
 
 static gint
@@ -1123,8 +1114,10 @@ empathy_roster_view_constructed (GObject *object)
 
   populate_view (self);
 
-  tp_g_signal_connect_object (self->priv->manager, "members-changed",
-      G_CALLBACK (members_changed_cb), self, 0);
+  tp_g_signal_connect_object (self->priv->model, "individual-added",
+      G_CALLBACK (individual_added_cb), self, 0);
+  tp_g_signal_connect_object (self->priv->model, "individual-removed",
+      G_CALLBACK (individual_removed_cb), self, 0);
   tp_g_signal_connect_object (self->priv->manager, "groups-changed",
       G_CALLBACK (groups_changed_cb), self, 0);
   tp_g_signal_connect_object (self->priv->manager, "notify::top-individuals",