[empathy] Cut out the concept of a special Favourites group
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy] Cut out the concept of a special Favourites group
- Date: Mon, 15 Mar 2010 08:29:04 +0000 (UTC)
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]