[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