gchar *
empathy_contact_list_store_get_parent_group (GtkTreeModel *model,
GtkTreePath *path,
- gboolean *path_is_group)
+ gboolean *path_is_group,
+ gboolean *is_fake_group)
{
GtkTreeIter parent_iter, iter;
gchar *name = NULL;
gboolean is_group;
+ gboolean fake;
g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL);
gtk_tree_model_get (model, &iter,
EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group,
EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake,
-1);
if (!is_group) {
g_free (name);
*path_is_group = TRUE;
}
+ if (is_fake_group != NULL)
+ *is_fake_group = fake;
+
return name;
}
G_TYPE_BOOLEAN, /* Can make audio calls */
G_TYPE_BOOLEAN, /* Can make video calls */
EMPATHY_TYPE_CONTACT_LIST_FLAGS, /* Flags */
- G_TYPE_BOOLEAN, /* Is a favourite */
G_TYPE_BOOLEAN, /* Is a fake group */
};
}
}
-static void
-contact_list_store_change_contact_favourite_status (EmpathyContactListStore *store,
- EmpathyContact *contact,
- gboolean is_favourite)
-{
- GList *iters, *l;
-
- iters = contact_list_store_find_contact (store, contact);
- for (l = iters; l; l = l->next) {
- gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE,
- is_favourite,
- -1);
- }
-
- g_list_foreach (iters, (GFunc) gtk_tree_iter_free, NULL);
- g_list_free (iters);
-}
-
static void
contact_list_store_favourites_changed_cb (EmpathyContactList *list_iface,
EmpathyContact *contact,
empathy_contact_get_handle (contact),
is_favourite ? "now" : "no longer");
- contact_list_store_change_contact_favourite_status (store, contact,
- is_favourite);
-
contact_list_store_remove_contact (store, contact);
contact_list_store_add_contact (store, contact);
}
g_list_free (iters);
}
-static gboolean
-list_store_contact_is_favourite (EmpathyContactListStore *store,
- EmpathyContact *contact)
-{
- EmpathyContactListStorePriv *priv;
-
- priv = GET_PRIV (store);
-
- return empathy_contact_list_is_favourite (priv->list, contact);
-}
-
static void
contact_list_store_contact_update (EmpathyContactListStore *store,
EmpathyContact *contact)
pixbuf_status = contact_list_store_get_contact_status_icon (store, contact);
for (l = iters; l && set_model; l = l->next) {
gtk_tree_store_set (GTK_TREE_STORE (store), l->data,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE, list_store_contact_is_favourite (store, contact),
EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, pixbuf_status,
EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, pixbuf_avatar,
EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, show_avatar,
const gchar *name_a,
const gchar *name_b,
EmpathyContact *contact_a,
- EmpathyContact *contact_b)
+ EmpathyContact *contact_b,
+ gboolean fake_group_a,
+ gboolean fake_group_b)
{
if (is_separator_a || is_separator_b) {
/* We have at least one separator */
} else if (!contact_a && !contact_b) {
/* Two groups. The 'Ungrouped' fake group is display at the bottom of the
* contact list and the 'Favorites' at the top. */
- if (!tp_strdiff (name_a, EMPATHY_CONTACT_LIST_STORE_UNGROUPED))
+ if (fake_group_a && !tp_strdiff (name_a, EMPATHY_CONTACT_LIST_STORE_UNGROUPED))
return 1;
- else if (!tp_strdiff (name_b, EMPATHY_CONTACT_LIST_STORE_UNGROUPED))
+ else if (fake_group_b && !tp_strdiff (name_b, EMPATHY_CONTACT_LIST_STORE_UNGROUPED))
return -1;
- else if (!tp_strdiff (name_a, EMPATHY_CONTACT_LIST_STORE_FAVORITE))
+ else if (fake_group_a && !tp_strdiff (name_a, EMPATHY_CONTACT_LIST_STORE_FAVORITE))
return -1;
- else if (!tp_strdiff (name_b, EMPATHY_CONTACT_LIST_STORE_FAVORITE))
+ else if (fake_group_b && !tp_strdiff (name_b, EMPATHY_CONTACT_LIST_STORE_FAVORITE))
return 1;
else
return g_utf8_collate (name_a, name_b);
gint ret_val;
gchar *name_a, *name_b;
gboolean is_separator_a, is_separator_b;
- gboolean is_favourite_a, is_favourite_b;
EmpathyContact *contact_a, *contact_b;
+ gboolean fake_group_a, fake_group_b;
gtk_tree_model_get (model, iter_a,
EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE, &is_favourite_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a,
-1);
gtk_tree_model_get (model, iter_b,
EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE, &is_favourite_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b,
-1);
ret_val = compare_separator_and_groups (is_separator_a, is_separator_b,
- name_a, name_b, contact_a, contact_b);
+ name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b);
if (ret_val != 0) {
goto free_and_out;
gchar *name_a, *name_b;
EmpathyContact *contact_a, *contact_b;
gboolean is_separator_a = FALSE, is_separator_b = FALSE;
- gboolean is_favourite_a, is_favourite_b;
gint ret_val;
+ gboolean fake_group_a, fake_group_b;
gtk_tree_model_get (model, iter_a,
EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_a,
EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_a,
EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_a,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE, &is_favourite_a,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_a,
-1);
gtk_tree_model_get (model, iter_b,
EMPATHY_CONTACT_LIST_STORE_COL_NAME, &name_b,
EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact_b,
EMPATHY_CONTACT_LIST_STORE_COL_IS_SEPARATOR, &is_separator_b,
- EMPATHY_CONTACT_LIST_STORE_COL_IS_FAVOURITE, &is_favourite_b,
+ EMPATHY_CONTACT_LIST_STORE_COL_IS_FAKE_GROUP, &fake_group_b,
-1);
ret_val = compare_separator_and_groups (is_separator_a, is_separator_b,
- name_a, name_b, contact_a, contact_b);
+ name_a, name_b, contact_a, contact_b, fake_group_a, fake_group_b);
if (ret_val == 0)
ret_val = g_utf8_collate (name_a, name_b);