aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-contact.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy/empathy-contact.c')
-rw-r--r--libempathy/empathy-contact.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index d76452891..bd8a63efa 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -618,6 +618,44 @@ 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);
+
+ new_alias = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
+ g_free);
+
+ g_hash_table_insert (new_alias, GUINT_TO_POINTER (handle), g_strdup (alias));
+
+ 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);
+
+ g_hash_table_destroy (new_alias);
+}
+
EmpathyAvatar *
empathy_contact_get_avatar (EmpathyContact *contact)
{