aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-utils.c
diff options
context:
space:
mode:
authorTravis Reitter <travis.reitter@collabora.co.uk>2011-04-30 04:33:04 +0800
committerTravis Reitter <travis.reitter@collabora.co.uk>2011-06-07 00:30:52 +0800
commit736b4f3d04f1e826dd8252fed88a7445b52ad461 (patch)
treee043a1787299eed54393477c1d540fe56710538c /libempathy/empathy-utils.c
parentfaa40483fd000099a0593c09d0e92b938beaaaa7 (diff)
downloadgsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar.gz
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar.bz2
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar.lz
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar.xz
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.tar.zst
gsoc2013-empathy-736b4f3d04f1e826dd8252fed88a7445b52ad461.zip
Adapt to API break in folks_individual_get_personas.
Helps: bgo#648822 - Port Empathy to Folks 0.5.1
Diffstat (limited to 'libempathy/empathy-utils.c')
-rw-r--r--libempathy/empathy-utils.c61
1 files changed, 46 insertions, 15 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index d62066fb3..bdec98833 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -776,18 +776,30 @@ empathy_folks_presence_type_to_tp (FolksPresenceType type)
gboolean
empathy_folks_individual_contains_contact (FolksIndividual *individual)
{
- GList *personas, *l;
+ GeeSet *personas;
+ GeeIterator *iter;
+ gboolean retval = FALSE;
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), FALSE);
personas = folks_individual_get_personas (individual);
- for (l = personas; l != NULL; l = l->next)
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (!retval && gee_iterator_next (iter))
{
- if (empathy_folks_persona_is_interesting (FOLKS_PERSONA (l->data)))
- return (tpf_persona_get_contact (TPF_PERSONA (l->data)) != NULL);
+ FolksPersona *persona = gee_iterator_get (iter);
+ TpContact *contact = NULL;
+
+ if (empathy_folks_persona_is_interesting (persona))
+ contact = tpf_persona_get_contact (TPF_PERSONA (persona));
+
+ g_clear_object (&persona);
+
+ if (contact != NULL)
+ retval = TRUE;
}
+ g_clear_object (&iter);
- return FALSE;
+ return retval;
}
/* TODO: this needs to be eliminated (and replaced in some cases with user
@@ -800,15 +812,17 @@ empathy_folks_individual_contains_contact (FolksIndividual *individual)
EmpathyContact *
empathy_contact_dup_from_folks_individual (FolksIndividual *individual)
{
- GList *personas, *l;
+ GeeSet *personas;
+ GeeIterator *iter;
EmpathyContact *contact = NULL;
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
personas = folks_individual_get_personas (individual);
- for (l = personas; (l != NULL) && (contact == NULL); l = l->next)
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter) && (contact == NULL))
{
- TpfPersona *persona = l->data;
+ TpfPersona *persona = gee_iterator_get (iter);
if (empathy_folks_persona_is_interesting (FOLKS_PERSONA (persona)))
{
@@ -818,7 +832,9 @@ empathy_contact_dup_from_folks_individual (FolksIndividual *individual)
contact = empathy_contact_dup_from_tp_contact (tp_contact);
empathy_contact_set_persona (contact, FOLKS_PERSONA (persona));
}
+ g_clear_object (&persona);
}
+ g_clear_object (&iter);
return contact;
}
@@ -831,7 +847,7 @@ tp_channel_group_change_reason_from_folks_groups_change_reason (
}
TpfPersonaStore *
-empathy_get_persona_store_for_connection (TpConnection *connection)
+empathy_dup_persona_store_for_connection (TpConnection *connection)
{
FolksBackendStore *backend_store;
FolksBackend *backend;
@@ -871,43 +887,58 @@ empathy_get_persona_store_for_connection (TpConnection *connection)
gboolean
empathy_connection_can_add_personas (TpConnection *connection)
{
+ gboolean retval;
FolksPersonaStore *persona_store;
g_return_val_if_fail (TP_IS_CONNECTION (connection), FALSE);
persona_store = FOLKS_PERSONA_STORE (
- empathy_get_persona_store_for_connection (connection));
+ empathy_dup_persona_store_for_connection (connection));
- return (folks_persona_store_get_can_add_personas (persona_store) ==
+ retval = (folks_persona_store_get_can_add_personas (persona_store) ==
FOLKS_MAYBE_BOOL_TRUE);
+
+ g_clear_object (&persona_store);
+
+ return retval;
}
gboolean
empathy_connection_can_alias_personas (TpConnection *connection)
{
+ gboolean retval;
FolksPersonaStore *persona_store;
g_return_val_if_fail (TP_IS_CONNECTION (connection), FALSE);
persona_store = FOLKS_PERSONA_STORE (
- empathy_get_persona_store_for_connection (connection));
+ empathy_dup_persona_store_for_connection (connection));
- return (folks_persona_store_get_can_alias_personas (persona_store) ==
+ retval = (folks_persona_store_get_can_alias_personas (persona_store) ==
FOLKS_MAYBE_BOOL_TRUE);
+
+ g_clear_object (&persona_store);
+
+ return retval;
}
gboolean
empathy_connection_can_group_personas (TpConnection *connection)
{
+ gboolean retval;
FolksPersonaStore *persona_store;
g_return_val_if_fail (TP_IS_CONNECTION (connection), FALSE);
persona_store = FOLKS_PERSONA_STORE (
- empathy_get_persona_store_for_connection (connection));
+ empathy_dup_persona_store_for_connection (connection));
- return (folks_persona_store_get_can_group_personas (persona_store) ==
+ retval = (folks_persona_store_get_can_group_personas (persona_store) ==
FOLKS_MAYBE_BOOL_TRUE);
+
+ g_clear_object (&persona_store);
+
+ return retval;
}
gboolean