[empathy] Cut out the concept of a special Favourites group



commit 79ef79c4d92cc4978dd12528d5bb6c3673a6b0f9
Author: Travis Reitter <treitter gmail com>
Date:   Fri Mar 5 17:45:44 2010 -0800

    Cut out the concept of a special Favourites group

 libempathy-gtk/empathy-contact-list-store.c |   60 +--------------------------
 libempathy-gtk/empathy-contact-list-view.c  |    7 ---
 libempathy/empathy-contact-list.c           |   41 ++++++++++++++----
 libempathy/empathy-contact-list.h           |    3 -
 4 files changed, 33 insertions(+), 78 deletions(-)
---
diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c
index 72ba746..c68edb1 100644
--- a/libempathy-gtk/empathy-contact-list-store.c
+++ b/libempathy-gtk/empathy-contact-list-store.c
@@ -1446,22 +1446,6 @@ contact_list_store_get_group (EmpathyContactListStore *store,
 				    EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, TRUE,
 				    -1);
 
-#if HAVE_FAVOURITE_CONTACTS
-		/* add a second separator for the favourite contacts group, to
-		 * always be sorted at the end. This will provide a visual
-		 * distinction between the end of the favourites and the
-		 * beginning of the ungrouped contacts */
-		if (!g_strcmp0 (name, EMPATHY_GROUP_FAVOURITES)) {
-			gtk_tree_store_append (GTK_TREE_STORE (store),
-					&iter_separator,
-					&iter_group);
-			gtk_tree_store_set (GTK_TREE_STORE (store), &iter_separator,
-					EMPATHY_CONTACT_LIST_STORE_COL_NAME, EMPATHY_GROUP_FAVOURITES,
-					EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, TRUE,
-					-1);
-		}
-#endif /* HAVE_FAVOURITE_CONTACTS */
-
 		if (iter_separator_to_set) {
 			*iter_separator_to_set = iter_separator;
 		}
@@ -1515,27 +1499,9 @@ contact_list_store_state_sort_func (GtkTreeModel *model,
 	/* Separator, favourites group, or other group? */
 	if (is_separator_a || is_separator_b) {
 		if (is_separator_a) {
-#if HAVE_FAVOURITE_CONTACTS
-			/* sort the special favourites group 2nd separator at
-			 * the end */
-			if (!g_strcmp0 (name_a, EMPATHY_GROUP_FAVOURITES)) {
-				ret_val = 1;
-			} else {
-				ret_val = -1;
-			}
-#else
                         ret_val = -1;
-#endif /* HAVE_FAVOURITE_CONTACTS */
 		} else if (is_separator_b) {
-#if HAVE_FAVOURITE_CONTACTS
-			if (!g_strcmp0 (name_b, EMPATHY_GROUP_FAVOURITES)) {
-				ret_val = -1;
-			} else {
-				ret_val = 1;
-			}
-#else
                         ret_val = 1;
-#endif /* HAVE_FAVOURITE_CONTACTS */
 		}
 #if HAVE_FAVOURITE_CONTACTS
 	} else if (!contact_a && !g_strcmp0 (name_a,
@@ -1611,36 +1577,14 @@ contact_list_store_name_sort_func (GtkTreeModel *model,
 
 	if (is_separator_a || is_separator_b) {
 		if (is_separator_a) {
-#if HAVE_FAVOURITE_CONTACTS
-			/* sort the special favourites group 2nd separator at
-			 * the end */
-			if (!g_strcmp0 (name_a, EMPATHY_GROUP_FAVOURITES)) {
-				ret_val = 1;
-			} else {
-				ret_val = -1;
-			}
-#else
                         ret_val = -1;
-#endif /* HAVE_FAVOURITE_CONTACTS */
 		} else if (is_separator_b) {
-#if HAVE_FAVOURITE_CONTACTS
-			if (!g_strcmp0 (name_b, EMPATHY_GROUP_FAVOURITES)) {
-				ret_val = -1;
-			} else {
-				ret_val = 1;
-			}
-#else
                         ret_val = 1;
-#endif /* HAVE_FAVOURITE_CONTACTS */
 		}
-#if HAVE_FAVOURITE_CONTACTS
-	} else if (!contact_a && !g_strcmp0 (name_a,
-				EMPATHY_GROUP_FAVOURITES)) {
+	} else if (is_favourite_a && !is_favourite_b) {
 		ret_val = -1;
-	} else if (!contact_b && !g_strcmp0 (name_b,
-				EMPATHY_GROUP_FAVOURITES)) {
+	} else if (!is_favourite_a && is_favourite_b) {
 		ret_val = 1;
-#endif /* HAVE_FAVOURITE_CONTACTS */
 	} else if (!contact_a && contact_b) {
 		ret_val = 1;
 	} else if (contact_a && !contact_b) {
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
index bd432f2..15d0926 100644
--- a/libempathy-gtk/empathy-contact-list-view.c
+++ b/libempathy-gtk/empathy-contact-list-view.c
@@ -992,13 +992,6 @@ contact_list_view_text_cell_data_func (GtkTreeViewColumn     *tree_column,
 			    EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
 			    -1);
 
-#if HAVE_FAVOURITE_CONTACTS
-        if (is_group && !g_strcmp0 (name, EMPATHY_GROUP_FAVOURITES)) {
-                g_free (name);
-                name = g_strdup (_(EMPATHY_GROUP_FAVOURITES));
-        }
-#endif /* HAVE_FAVOURITE_CONTACTS */
-
 	g_object_set (cell,
 		      "show-status", show_status,
 		      "text", name,
diff --git a/libempathy/empathy-contact-list.c b/libempathy/empathy-contact-list.c
index a46fc8d..611a40f 100644
--- a/libempathy/empathy-contact-list.c
+++ b/libempathy/empathy-contact-list.c
@@ -250,21 +250,42 @@ empathy_contact_list_get_flags (EmpathyContactList *list)
 	}
 }
 
-/* XXX: this should be an EmpathyContact function, but it would likely require
- * some awkward refactoring */
 gboolean
-empathy_contact_list_contact_is_favourite (EmpathyContactList *list,
-                                           EmpathyContact     *contact)
+empathy_contact_list_is_favourite (EmpathyContactList *list,
+                                   EmpathyContact     *contact)
 {
 #if HAVE_FAVOURITE_CONTACTS
-        GList *groups, *l;
-
-        groups = empathy_contact_list_get_groups (list, contact);
-        for (l = groups; l; l = l->next)
-                if (!g_strcmp0 (l->data, EMPATHY_GROUP_FAVOURITES))
-                        return TRUE;
+	if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->is_favourite) {
+		return EMPATHY_CONTACT_LIST_GET_IFACE (list)->is_favourite (
+                                list, contact);
+	}
 #endif /* HAVE_FAVOURITE_CONTACTS */
 
         return FALSE;
 }
 
+void
+empathy_contact_list_add_to_favourites (EmpathyContactList *list,
+                                        EmpathyContact     *contact)
+{
+#if HAVE_FAVOURITE_CONTACTS
+	if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_favourite) {
+                EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_favourite (list,
+                                contact);
+	}
+#endif /* HAVE_FAVOURITE_CONTACTS */
+}
+
+void
+empathy_contact_list_remove_from_favourites (EmpathyContactList *list,
+                                             EmpathyContact     *contact)
+{
+#if HAVE_FAVOURITE_CONTACTS
+	if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_favourite) {
+                EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_favourite (list,
+                                contact);
+	}
+#endif /* HAVE_FAVOURITE_CONTACTS */
+}
+
+
diff --git a/libempathy/empathy-contact-list.h b/libempathy/empathy-contact-list.h
index c3fff72..080a895 100644
--- a/libempathy/empathy-contact-list.h
+++ b/libempathy/empathy-contact-list.h
@@ -34,9 +34,6 @@ G_BEGIN_DECLS
 #define EMPATHY_IS_CONTACT_LIST(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_LIST))
 #define EMPATHY_CONTACT_LIST_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EMPATHY_TYPE_CONTACT_LIST, EmpathyContactListIface))
 
-/* The favourites are just in a specially-handled group */
-#define EMPATHY_GROUP_FAVOURITES "Favorites"
-
 typedef enum {
 	EMPATHY_CONTACT_LIST_CAN_ADD		= 1 << 0,
 	EMPATHY_CONTACT_LIST_CAN_REMOVE		= 1 << 1,



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