[Telepathy-commits] [telepathy-haze/master] aliasing: Implement Contacts interface hooks

Simon McVittie simon.mcvittie at collabora.co.uk
Mon Mar 23 02:44:07 PDT 2009


---
 src/connection-aliasing.c |   33 ++++++++++++++++++++++++++++++++-
 src/connection-aliasing.h |   10 ++++------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/src/connection-aliasing.c b/src/connection-aliasing.c
index 17642fe..d04f1a6 100644
--- a/src/connection-aliasing.c
+++ b/src/connection-aliasing.c
@@ -18,10 +18,12 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
+#include "connection-aliasing.h"
 
+#include <telepathy-glib/contacts-mixin.h>
 #include <telepathy-glib/handle.h>
+#include <telepathy-glib/interfaces.h>
 
-#include "connection-aliasing.h"
 #include "connection.h"
 #include "debug.h"
 
@@ -331,3 +333,32 @@ haze_connection_aliasing_class_init (GObjectClass *object_class)
     purple_signal_connect (blist_handle, "blist-node-aliased", object_class,
         PURPLE_CALLBACK (blist_node_aliased_cb), NULL);
 }
+
+static void
+fill_contact_attributes (GObject *object,
+                         const GArray *contacts,
+                         GHashTable *attributes_hash)
+{
+    HazeConnection *self = HAZE_CONNECTION (object);
+    guint i;
+
+    for (i = 0; i < contacts->len; i++)
+    {
+        TpHandle handle = g_array_index (contacts, guint, i);
+        GValue *value = tp_g_value_slice_new (G_TYPE_STRING);
+
+        g_value_set_string (value, get_alias (self, handle));
+
+        /* this steals the GValue */
+        tp_contacts_mixin_set_contact_attribute (attributes_hash, handle,
+            TP_IFACE_CONNECTION_INTERFACE_ALIASING "/alias", value);
+    }
+}
+
+void
+haze_connection_aliasing_init (GObject *object)
+{
+    tp_contacts_mixin_add_contact_attributes_iface (object,
+        TP_IFACE_CONNECTION_INTERFACE_ALIASING,
+        fill_contact_attributes);
+}
diff --git a/src/connection-aliasing.h b/src/connection-aliasing.h
index e73ee73..b1002ec 100644
--- a/src/connection-aliasing.h
+++ b/src/connection-aliasing.h
@@ -24,11 +24,9 @@
 
 #include <glib-object.h>
 
-void
-haze_connection_aliasing_iface_init (gpointer g_iface,
-                                     gpointer iface_data);
-
-void
-haze_connection_aliasing_class_init (GObjectClass *object_class);
+void haze_connection_aliasing_iface_init (gpointer g_iface,
+    gpointer iface_data);
+void haze_connection_aliasing_class_init (GObjectClass *object_class);
+void haze_connection_aliasing_init (GObject *object);
 
 #endif
-- 
1.5.6.5




More information about the telepathy-commits mailing list