aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTravis Reitter <travis.reitter@collabora.co.uk>2011-05-03 04:17:23 +0800
committerTravis Reitter <travis.reitter@collabora.co.uk>2011-06-07 00:30:52 +0800
commit0e80ea37d08505e886ef61b03fbb606a8ea3ac36 (patch)
treeba22d7b555b6b6655a9f28f45e1e143a12022d82
parenta8833fd63b3bc3856cbd885158cba6b8fca1225a (diff)
downloadgsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar.gz
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar.bz2
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar.lz
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar.xz
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.tar.zst
gsoc2013-empathy-0e80ea37d08505e886ef61b03fbb606a8ea3ac36.zip
Adapt to API change in folks_group_details_get_groups().
Helps: bgo#648822 - Port Empathy to Folks 0.5.1
-rw-r--r--libempathy-gtk/empathy-groups-widget.c7
-rw-r--r--libempathy-gtk/empathy-individual-store.c21
2 files changed, 18 insertions, 10 deletions
diff --git a/libempathy-gtk/empathy-groups-widget.c b/libempathy-gtk/empathy-groups-widget.c
index 68e7efd09..33e4d8d5a 100644
--- a/libempathy-gtk/empathy-groups-widget.c
+++ b/libempathy-gtk/empathy-groups-widget.c
@@ -152,7 +152,7 @@ populate_data (EmpathyGroupsWidget *self)
EmpathyGroupsWidgetPriv *priv = GET_PRIV (self);
EmpathyContactManager *manager;
GtkTreeIter iter;
- GHashTable *my_groups;
+ GeeSet *member_groups;
GList *all_groups, *l;
/* Remove the old groups */
@@ -166,14 +166,15 @@ populate_data (EmpathyGroupsWidget *self)
g_object_unref (manager);
/* Get the list of groups that this #FolksGroupDetails is currently in */
- my_groups = folks_group_details_get_groups (priv->group_details);
+ member_groups = folks_group_details_get_groups (priv->group_details);
for (l = all_groups; l != NULL; l = l->next)
{
const gchar *group_str = l->data;
gboolean enabled;
- enabled = GPOINTER_TO_UINT (g_hash_table_lookup (my_groups, group_str));
+ enabled = gee_collection_contains (GEE_COLLECTION (member_groups),
+ group_str);
gtk_list_store_append (priv->group_store, &iter);
gtk_list_store_set (priv->group_store, &iter,
diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c
index 331a0e8a5..01ec89436 100644
--- a/libempathy-gtk/empathy-individual-store.c
+++ b/libempathy-gtk/empathy-individual-store.c
@@ -418,8 +418,7 @@ individual_store_add_individual (EmpathyIndividualStore *self,
{
EmpathyIndividualStorePriv *priv;
GtkTreeIter iter;
- GHashTable *group_set = NULL;
- GList *groups = NULL, *l;
+ GeeIterator *group_iter = NULL;
EmpathyContact *contact;
TpConnection *connection;
gchar *protocol_name;
@@ -432,9 +431,13 @@ individual_store_add_individual (EmpathyIndividualStore *self,
if (priv->show_groups)
{
+ GeeSet *group_set = NULL;
+
group_set = folks_group_details_get_groups (
FOLKS_GROUP_DETAILS (individual));
- groups = g_hash_table_get_keys (group_set);
+
+ if (gee_collection_get_size (GEE_COLLECTION (group_set)) > 0)
+ group_iter = gee_iterable_iterator (GEE_ITERABLE (group_set));
}
contact = empathy_contact_dup_from_folks_individual (individual);
@@ -442,7 +445,8 @@ individual_store_add_individual (EmpathyIndividualStore *self,
tp_connection_parse_object_path (connection, &protocol_name, NULL);
- if (groups == NULL)
+ /* fall-back groups, in case there are no named groups */
+ if (group_iter == NULL)
{
GtkTreeIter iter_group, *parent;
@@ -471,17 +475,20 @@ individual_store_add_individual (EmpathyIndividualStore *self,
g_free (protocol_name);
/* Else add to each group. */
- for (l = groups; l; l = l->next)
+ while (group_iter != NULL && gee_iterator_next (group_iter))
{
+ gchar *group_name = gee_iterator_get (group_iter);
GtkTreeIter iter_group;
- individual_store_get_group (self, l->data, &iter_group, NULL, NULL,
+ individual_store_get_group (self, group_name, &iter_group, NULL, NULL,
FALSE);
add_individual_to_store (GTK_TREE_STORE (self), &iter, &iter_group,
individual);
+
+ g_free (group_name);
}
- g_list_free (groups);
+ g_clear_object (&group_iter);
if (priv->show_groups &&
folks_favourite_details_get_is_favourite (