[Telepathy-commits] [telepathy-salut/master] SalutConnection: Add Aliasing to the Contacts interface
Sjoerd Simons
sjoerd.simons at collabora.co.uk
Tue Aug 19 08:58:42 PDT 2008
---
src/salut-connection.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 52 insertions(+), 1 deletions(-)
diff --git a/src/salut-connection.c b/src/salut-connection.c
index 45d8287..d4fabfd 100644
--- a/src/salut-connection.c
+++ b/src/salut-connection.c
@@ -236,6 +236,9 @@ salut_connection_start_connecting (TpBaseConnection *self, GError **error);
static void salut_connection_avatars_fill_contact_attributes (GObject *obj,
const GArray *contacts, GHashTable *attributes_hash);
+static void salut_connection_aliasing_fill_contact_attributes (GObject *obj,
+ const GArray *contacts, GHashTable *attributes_hash);
+
static void
salut_connection_init (SalutConnection *obj)
{
@@ -288,6 +291,10 @@ salut_connection_constructor (GType type,
TP_IFACE_CONNECTION_INTERFACE_AVATARS,
salut_connection_avatars_fill_contact_attributes);
+ tp_contacts_mixin_add_contact_attributes_iface (obj,
+ TP_IFACE_CONNECTION_INTERFACE_ALIASING,
+ salut_connection_aliasing_fill_contact_attributes);
+
return obj;
}
@@ -1065,6 +1072,50 @@ salut_connection_request_aliases (TpSvcConnectionInterfaceAliasing *iface,
}
static void
+salut_connection_aliasing_fill_contact_attributes (GObject *obj,
+ const GArray *contacts, GHashTable *attributes_hash)
+{
+ guint i;
+ SalutConnection *self = SALUT_CONNECTION (obj);
+ SalutConnectionPrivate *priv = SALUT_CONNECTION_GET_PRIVATE (self);
+ TpBaseConnection *base = TP_BASE_CONNECTION (base);
+ TpHandleRepoIface *handle_repo = tp_base_connection_get_handles (base,
+ TP_HANDLE_TYPE_CONTACT);
+
+ for (i = 0; i < contacts->len; i++)
+ {
+ TpHandle handle = g_array_index (contacts, TpHandle, i);
+ GValue *val = tp_g_value_slice_new (G_TYPE_STRING);
+ gchar *alias;
+
+ if (handle == base->self_handle)
+ {
+ g_value_set_string (val, salut_self_get_alias (priv->self));
+ }
+ else
+ {
+ SalutContact *contact;
+ contact = salut_contact_manager_get_contact (priv->contact_manager,
+ handle);
+
+ if (contact == NULL)
+ {
+ g_value_set_static_string (val,
+ tp_handle_inspect (handle_repo, handle));
+ }
+ else
+ {
+ g_value_set_string (val, salut_contact_get_alias (contact));
+ g_object_unref (contact);
+ }
+ }
+
+ tp_contacts_mixin_set_contact_attribute (attributes_hash, handle,
+ TP_IFACE_CONNECTION_INTERFACE_ALIASING"/alias", val);
+ }
+}
+
+static void
salut_connection_set_aliases (TpSvcConnectionInterfaceAliasing *iface,
GHashTable *aliases, DBusGMethodInvocation *context)
{
@@ -1312,8 +1363,8 @@ salut_connection_avatars_fill_contact_attributes (GObject *obj,
{
guint i;
SalutConnection *self = SALUT_CONNECTION (obj);
+ TpBaseConnection *base = TP_BASE_CONNECTION (self);
SalutConnectionPrivate *priv = SALUT_CONNECTION_GET_PRIVATE (self);
- TpBaseConnection *base = TP_BASE_CONNECTION (base);
for (i = 0; i < contacts->len; i++)
{
--
1.5.6.3
More information about the Telepathy-commits
mailing list