aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-contact-widget.c48
-rw-r--r--libempathy/empathy-contact.c36
-rw-r--r--libempathy/empathy-utils.c32
-rw-r--r--libempathy/empathy-utils.h1
4 files changed, 23 insertions, 94 deletions
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 9bdad5534..0da9e0091 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -579,15 +579,11 @@ contact_widget_cell_toggled (GtkCellRendererToggle *cell,
if (group != NULL)
{
- FolksIndividual *individual = folks_individual_dup_from_empathy_contact (
+ FolksPersona *persona = empathy_contact_get_persona (
information->contact);
- if (individual != NULL)
- {
- folks_groups_change_group (FOLKS_GROUPS (individual), group,
- !was_enabled);
- g_object_unref (individual);
- }
+ if (persona != NULL && FOLKS_IS_GROUPS (persona))
+ folks_groups_change_group (FOLKS_GROUPS (persona), group, !was_enabled);
g_free (group);
}
@@ -795,7 +791,7 @@ contact_widget_button_group_clicked_cb (GtkButton *button,
GtkTreeView *view;
GtkListStore *store;
GtkTreeIter iter;
- FolksIndividual *individual;
+ FolksPersona *persona;
const gchar *group;
view = GTK_TREE_VIEW (information->treeview_groups);
@@ -809,13 +805,10 @@ contact_widget_button_group_clicked_cb (GtkButton *button,
COL_ENABLED, TRUE,
-1);
- individual = folks_individual_dup_from_empathy_contact (information->contact);
+ persona = empathy_contact_get_persona (information->contact);
- if (individual != NULL)
- {
- folks_groups_change_group (FOLKS_GROUPS (individual), group, TRUE);
- g_object_unref (individual);
- }
+ if (persona != NULL && FOLKS_IS_GROUPS (persona))
+ folks_groups_change_group (FOLKS_GROUPS (persona), group, TRUE);
}
static void
@@ -1337,14 +1330,7 @@ contact_widget_entry_alias_focus_event_cb (GtkEditable *editable,
}
else
{
- FolksIndividual *individual =
- folks_individual_dup_from_empathy_contact (information->contact);
-
- if (individual != NULL)
- {
- folks_alias_set_alias (FOLKS_ALIAS (individual), alias);
- g_object_unref (individual);
- }
+ empathy_contact_set_alias (information->contact, alias);
}
}
@@ -1535,17 +1521,15 @@ contact_widget_contact_update (EmpathyContactWidget *information)
if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE)
{
- FolksIndividual *individual =
- folks_individual_dup_from_empathy_contact (information->contact);
+ FolksPersona *persona = empathy_contact_get_persona (
+ information->contact);
- if (individual != NULL)
+ if (persona != NULL && FOLKS_IS_FAVOURITE (persona))
{
gboolean is_favourite = folks_favourite_get_is_favourite (
- FOLKS_FAVOURITE (individual));
+ FOLKS_FAVOURITE (persona));
contact_widget_favourites_changed_cb (information->manager,
information->contact, is_favourite, information);
-
- g_object_unref (individual);
}
}
@@ -1672,14 +1656,12 @@ static void
favourite_toggled_cb (GtkToggleButton *button,
EmpathyContactWidget *information)
{
- FolksIndividual *individual = folks_individual_dup_from_empathy_contact (
- information->contact);
+ FolksPersona *persona = empathy_contact_get_persona (information->contact);
- if (individual != NULL)
+ if (persona != NULL && FOLKS_IS_FAVOURITE (persona))
{
gboolean active = gtk_toggle_button_get_active (button);
- folks_favourite_set_is_favourite (FOLKS_FAVOURITE (individual), active);
- g_object_unref (individual);
+ folks_favourite_set_is_favourite (FOLKS_FAVOURITE (persona), active);
}
}
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index 64235ea9a..3a16c3e37 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -636,42 +636,22 @@ empathy_contact_set_name (EmpathyContact *contact,
g_object_unref (contact);
}
-static void
-contact_set_aliases_cb (TpConnection *connection,
- const GError *error,
- gpointer user_data,
- GObject *weak_object)
-{
- if (error)
- DEBUG ("Error: %s", error->message);
-}
-
void
empathy_contact_set_alias (EmpathyContact *contact,
const gchar *alias)
{
- TpConnection *connection;
- GHashTable *new_alias;
- guint handle;
-
- g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
- handle = empathy_contact_get_handle (contact);
-
- DEBUG ("Setting alias for contact %s (%d) to %s",
- empathy_contact_get_id (contact),
- handle, alias);
+ FolksPersona *persona;
- new_alias = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
- g_free);
+ g_return_if_fail (EMPATHY_IS_CONTACT (contact));
- g_hash_table_insert (new_alias, GUINT_TO_POINTER (handle), g_strdup (alias));
+ persona = empathy_contact_get_persona (contact);
+ if (persona == NULL || !FOLKS_IS_ALIAS (persona))
+ return;
- connection = empathy_contact_get_connection (contact);
- tp_cli_connection_interface_aliasing_call_set_aliases (connection, -1,
- new_alias, contact_set_aliases_cb, NULL, NULL, NULL);
+ DEBUG ("Setting alias for contact %s to %s", empathy_contact_get_id (contact),
+ alias);
- g_hash_table_destroy (new_alias);
+ folks_alias_set_alias (FOLKS_ALIAS (persona), alias);
}
EmpathyAvatar *
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index d460f5582..9a5e28c17 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -621,38 +621,6 @@ empathy_contact_dup_from_folks_individual (FolksIndividual *individual)
return contact;
}
-/* TODO: This also needs to be eliminated, and is horrifically slow. */
-
-/* Retrieve the first Individual containing a TpContact that corresponds to the
- * given EmpathyContact. Note that this is a temporary convenience. See
- * the TODO above. */
-FolksIndividual *
-folks_individual_dup_from_empathy_contact (EmpathyContact *contact)
-{
- EmpathyIndividualManager *manager;
- FolksIndividual *individual = NULL;
- GList *individuals, *l;
-
- manager = empathy_individual_manager_dup_singleton ();
- individuals = empathy_individual_manager_get_members (manager);
-
- for (l = individuals; (l != NULL) && (individual == NULL); l = l->next)
- {
- FolksIndividual *i = FOLKS_INDIVIDUAL (l->data);
- EmpathyContact *c = empathy_contact_dup_from_folks_individual (i);
-
- if (c == contact)
- individual = g_object_ref (i);
-
- g_object_unref (c);
- }
-
- g_list_free (individuals);
- g_object_unref (manager);
-
- return individual;
-}
-
TpChannelGroupChangeReason
tp_chanel_group_change_reason_from_folks_groups_change_reason (
FolksGroupsChangeReason reason)
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index f35d9e5c3..da0edc58c 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -93,7 +93,6 @@ void empathy_connect_new_account (TpAccount *account,
TpConnectionPresenceType empathy_folks_presence_type_to_tp (FolksPresenceType type);
gboolean empathy_folks_individual_contains_contact (FolksIndividual *individual);
EmpathyContact * empathy_contact_dup_from_folks_individual (FolksIndividual *individual);
-FolksIndividual *folks_individual_dup_from_empathy_contact (EmpathyContact *contact);
TpChannelGroupChangeReason tp_chanel_group_change_reason_from_folks_groups_change_reason (FolksGroupsChangeReason reason);
G_END_DECLS