[empathy] Moved _contact_in_top from the model to the view



commit 44472802c9c232f7ab6639af2e0a88b090016671
Author: Laurent Contzen <lcontzen gmail com>
Date:   Tue Aug 7 16:28:21 2012 +0200

    Moved _contact_in_top from the model to the view
    
    empathy-roster-model and empathy-roster-model-manager: removed _contact_in_top
    empathy-roster-view: added new function contact_in_top and modified functions to use it

 libempathy-gtk/empathy-roster-model-manager.c |   15 -------
 libempathy-gtk/empathy-roster-model.c         |   25 -----------
 libempathy-gtk/empathy-roster-model.h         |    5 --
 libempathy-gtk/empathy-roster-view.c          |   56 +++++++++++++++++--------
 4 files changed, 38 insertions(+), 63 deletions(-)
---
diff --git a/libempathy-gtk/empathy-roster-model-manager.c b/libempathy-gtk/empathy-roster-model-manager.c
index 0668db1..a7d952a 100644
--- a/libempathy-gtk/empathy-roster-model-manager.c
+++ b/libempathy-gtk/empathy-roster-model-manager.c
@@ -407,20 +407,6 @@ empathy_roster_model_manager_get_top_individuals (EmpathyRosterModel *model)
   return empathy_individual_manager_get_top_individuals (self->priv->manager);
 }
 
-static gboolean
-empathy_roster_model_manager_contact_in_top (EmpathyRosterModel *model,
-    EmpathyRosterContact *contact)
-{
-  FolksIndividual *individual;
-  EmpathyRosterModelManager *self;
-
-  self = EMPATHY_ROSTER_MODEL_MANAGER (model);
-
-  individual = empathy_roster_contact_get_individual (contact);
-
-  return individual_in_top_group_members (self, individual);
-}
-
 static void
 roster_model_iface_init (EmpathyRosterModelInterface *iface)
 {
@@ -428,5 +414,4 @@ roster_model_iface_init (EmpathyRosterModelInterface *iface)
   iface->get_groups_for_individual =
     empathy_roster_model_manager_get_groups_for_individual;
   iface->get_top_individuals = empathy_roster_model_manager_get_top_individuals;
-  iface->contact_in_top = empathy_roster_model_manager_contact_in_top;
 }
diff --git a/libempathy-gtk/empathy-roster-model.c b/libempathy-gtk/empathy-roster-model.c
index f1e5960..31cc425 100644
--- a/libempathy-gtk/empathy-roster-model.c
+++ b/libempathy-gtk/empathy-roster-model.c
@@ -156,28 +156,3 @@ empathy_roster_model_get_top_individuals (EmpathyRosterModel *self)
 
   return (* iface->get_top_individuals) (self);
 }
-
-/**
- * empathy_roster_model_contact_in_top:
- * @self: a #EmpathyRosterModel
- * @contact: a #EmpathyRosterContact
- *
- * Checks if the passed #EmpathyRosterContact should be displayed in
- * top contacts.
- *
- * Returns: %TRUE if it should be displayed in top contacts, %FALSE
- * if not
- */
-gboolean
-empathy_roster_model_contact_in_top (EmpathyRosterModel *self,
-    EmpathyRosterContact *contact)
-{
-  EmpathyRosterModelInterface *iface;
-
-  g_return_val_if_fail (EMPATHY_IS_ROSTER_MODEL (self), FALSE);
-
-  iface = EMPATHY_ROSTER_MODEL_GET_IFACE (self);
-  g_return_val_if_fail (iface->contact_in_top != NULL, FALSE);
-
-  return (* iface->contact_in_top) (self, contact);
-}
diff --git a/libempathy-gtk/empathy-roster-model.h b/libempathy-gtk/empathy-roster-model.h
index dae2339..71b2042 100644
--- a/libempathy-gtk/empathy-roster-model.h
+++ b/libempathy-gtk/empathy-roster-model.h
@@ -45,8 +45,6 @@ struct _EmpathyRosterModelInterface
   GList * (*get_groups_for_individual) (EmpathyRosterModel *self,
       FolksIndividual *individual);
   GList * (*get_top_individuals) (EmpathyRosterModel *self);
-  gboolean (*contact_in_top) (EmpathyRosterModel *self,
-      EmpathyRosterContact *contact);
 };
 
 GType empathy_roster_model_get_type (void);
@@ -88,9 +86,6 @@ GList * empathy_roster_model_get_groups_for_individual (
 
 GList * empathy_roster_model_get_top_individuals (EmpathyRosterModel *self);
 
-gboolean empathy_roster_model_contact_in_top (EmpathyRosterModel *self,
-    EmpathyRosterContact *contact);
-
 G_END_DECLS
 
 #endif /* #ifndef __EMPATHY_ROSTER_MODEL_H__*/
diff --git a/libempathy-gtk/empathy-roster-view.c b/libempathy-gtk/empathy-roster-view.c
index de14b5d..a820d2b 100644
--- a/libempathy-gtk/empathy-roster-view.c
+++ b/libempathy-gtk/empathy-roster-view.c
@@ -484,6 +484,40 @@ individual_removed_cb (EmpathyRosterModel *model,
   individual_removed (self, individual);
 }
 
+static gboolean
+contact_in_top (EmpathyRosterView *self,
+    EmpathyRosterContact *contact)
+{
+  if (!self->priv->show_groups)
+    {
+      /* Always display top contacts in non-group mode. */
+      GList *groups;
+      FolksIndividual *individual;
+      gboolean result = FALSE;
+
+      individual = empathy_roster_contact_get_individual (contact);
+
+      groups = empathy_roster_model_get_groups_for_individual (
+          self->priv->model, individual);
+
+      if (g_list_find (groups, EMPATHY_ROSTER_MODEL_GROUP_TOP_GROUP) != NULL)
+        result = TRUE;
+
+      g_list_free (groups);
+
+      return result;
+    }
+
+  if (!tp_strdiff (empathy_roster_contact_get_group (contact),
+          EMPATHY_ROSTER_MODEL_GROUP_TOP_GROUP))
+    /* If we are displaying contacts, we only want to *always* display the
+     * RosterContact which is displayed at the top; not the ones displayed in
+     * the 'normal' group sections */
+    return TRUE;
+
+  return FALSE;
+}
+
 static gint
 compare_roster_contacts_by_alias (EmpathyRosterContact *a,
     EmpathyRosterContact *b)
@@ -507,8 +541,8 @@ compare_roster_contacts_no_group (EmpathyRosterView *self,
 {
   gboolean top_a, top_b;
 
-  top_a = empathy_roster_model_contact_in_top (self->priv->model, a);
-  top_b = empathy_roster_model_contact_in_top (self->priv->model, b);
+  top_a = contact_in_top (self, a);
+  top_b = contact_in_top (self, b);
 
   if (top_a == top_b)
     /* Both contacts are in the top of the roster (or not). Sort them
@@ -731,22 +765,8 @@ contact_should_be_displayed (EmpathyRosterView *self,
   if (self->priv->show_offline)
       return TRUE;
 
-  if (empathy_roster_model_contact_in_top (self->priv->model,
-          contact))
-    {
-      const gchar *group_name;
-
-      if (!self->priv->show_groups)
-        /* Always display favourite contacts in non-group mode. */
-        return TRUE;
-
-      group_name = empathy_roster_contact_get_group (contact);
-
-      if (!tp_strdiff (group_name, EMPATHY_ROSTER_MODEL_GROUP_TOP_GROUP))
-        /* Always display favourite contact in group mode only in the
-         * 'top group'*/
-        return TRUE;
-    }
+  if (contact_in_top (self, contact))
+    return TRUE;
 
   return empathy_roster_contact_is_online (contact);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]