]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-individual-store-manager.c
Merge branch 'gnome-3-8'
[empathy.git] / libempathy-gtk / empathy-individual-store-manager.c
index 72ddab61bd055493e6c0ee68002c522a044a9b26..d080242ea360bcfc14bc0e971ed87c7e6331f1bd 100644 (file)
  */
 
 #include "config.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-
-#include <folks/folks.h>
-#include <folks/folks-telepathy.h>
-#include <telepathy-glib/util.h>
-
-#include <libempathy/empathy-utils.h>
-#include <libempathy/empathy-enum-types.h>
-#include <libempathy/empathy-individual-manager.h>
-
 #include "empathy-individual-store-manager.h"
 
-#include "empathy-ui-utils.h"
-#include "empathy-gtk-enum-types.h"
-
 #define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
+#include "empathy-debug.h"
 
 struct _EmpathyIndividualStoreManagerPriv
 {
   EmpathyIndividualManager *manager;
+  gboolean setup_idle_id;
 };
 
 enum
@@ -75,15 +58,19 @@ individual_store_manager_members_changed_cb (EmpathyIndividualManager *manager,
 
   for (l = removed; l; l = l->next)
     {
-      DEBUG ("Individual %s %s",
-          folks_individual_get_id (l->data), "removed");
+      DEBUG ("Individual %s (%s) %s",
+          folks_individual_get_id (l->data),
+          folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (l->data)),
+          "removed");
 
       individual_store_remove_individual_and_disconnect (store, l->data);
     }
 
   for (l = added; l; l = l->next)
     {
-      DEBUG ("Individual %s %s", folks_individual_get_id (l->data), "added");
+      DEBUG ("Individual %s (%s) %s", folks_individual_get_id (l->data),
+          folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (l->data)),
+          "added");
 
       individual_store_add_individual_and_connect (store, l->data);
     }
@@ -98,8 +85,9 @@ individual_store_manager_groups_changed_cb (EmpathyIndividualManager *manager,
 {
   EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
 
-  DEBUG ("Updating groups for individual %s",
-      folks_individual_get_id (individual));
+  DEBUG ("Updating groups for individual %s (%s)",
+      folks_individual_get_id (individual),
+      folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)));
 
   /* We do this to make sure the groups are correct, if not, we
    * would have to check the groups already set up for each
@@ -112,7 +100,6 @@ static gboolean
 individual_store_manager_manager_setup (gpointer user_data)
 {
   EmpathyIndividualStoreManager *self = user_data;
-  EmpathyIndividualStore *store = user_data;
   GList *individuals;
 
   /* Signal connection. */
@@ -136,7 +123,7 @@ individual_store_manager_manager_setup (gpointer user_data)
       g_list_free (individuals);
     }
 
-  store->setup_idle_id = 0;
+  self->priv->setup_idle_id = 0;
   return FALSE;
 }
 
@@ -145,14 +132,12 @@ individual_store_manager_set_individual_manager (
     EmpathyIndividualStoreManager *self,
     EmpathyIndividualManager *manager)
 {
-  EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
-
   g_assert (self->priv->manager == NULL); /* construct only */
   self->priv->manager = g_object_ref (manager);
 
   /* Let a chance to have all properties set before populating */
-  store->setup_idle_id = g_idle_add (individual_store_manager_manager_setup,
-      self);
+  self->priv->setup_idle_id = g_idle_add (
+      individual_store_manager_manager_setup, self);
 }
 
 static void
@@ -165,8 +150,9 @@ individual_store_manager_member_renamed_cb (EmpathyIndividualManager *manager,
 {
   EmpathyIndividualStore *store = EMPATHY_INDIVIDUAL_STORE (self);
 
-  DEBUG ("Individual %s renamed to %s",
+  DEBUG ("Individual %s (%s) renamed to %s",
       folks_individual_get_id (old_individual),
+      folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (old_individual)),
       folks_individual_get_id (new_individual));
 
   /* remove old contact */
@@ -203,6 +189,12 @@ individual_store_manager_dispose (GObject *object)
       g_clear_object (&self->priv->manager);
     }
 
+  if (self->priv->setup_idle_id != 0)
+    {
+      g_source_remove (self->priv->setup_idle_id);
+      self->priv->setup_idle_id = 0;
+    }
+
   G_OBJECT_CLASS (empathy_individual_store_manager_parent_class)->dispose (
       object);
 }
@@ -262,6 +254,15 @@ individual_store_manager_reload_individuals (EmpathyIndividualStore *store)
   g_list_free (contacts);
 }
 
+static gboolean
+individual_store_manager_initial_loading (EmpathyIndividualStore *store)
+{
+  EmpathyIndividualStoreManager *self = EMPATHY_INDIVIDUAL_STORE_MANAGER (
+      store);
+
+  return self->priv->setup_idle_id != 0;
+}
+
 static void
 empathy_individual_store_manager_class_init (
     EmpathyIndividualStoreManagerClass *klass)
@@ -275,6 +276,7 @@ empathy_individual_store_manager_class_init (
   object_class->set_property = individual_store_manager_set_property;
 
   store_class->reload_individuals = individual_store_manager_reload_individuals;
+  store_class->initial_loading = individual_store_manager_initial_loading;
 
   g_object_class_install_property (object_class,
       PROP_INDIVIDUAL_MANAGER,