[Telepathy-commits] [telepathy-gabble/master] GabbleRosterChannel: implement a simplistic version of future properties
Simon McVittie
simon.mcvittie at collabora.co.uk
Tue Aug 19 10:53:51 PDT 2008
For now, the initiator is always set to 0, even if the user actually requested
the channel.
20080722105114-53eee-5ba11d2e726192783e7497fbdeb150d388b7e672.gz
---
src/roster-channel.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/src/roster-channel.c b/src/roster-channel.c
index dafb63f..016ba1a 100644
--- a/src/roster-channel.c
+++ b/src/roster-channel.c
@@ -30,6 +30,8 @@
#include <telepathy-glib/svc-generic.h>
#include <telepathy-glib/svc-channel.h>
+#include "extensions/extensions.h"
+
#define DEBUG_FLAG GABBLE_DEBUG_ROSTER
#include "connection.h"
@@ -42,6 +44,7 @@ static void channel_iface_init (gpointer, gpointer);
G_DEFINE_TYPE_WITH_CODE (GabbleRosterChannel, gabble_roster_channel,
G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init);
+ G_IMPLEMENT_INTERFACE (GABBLE_TYPE_SVC_CHANNEL_FUTURE, NULL);
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP,
tp_group_mixin_iface_init);
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_CONTACT_LIST, NULL);
@@ -50,6 +53,7 @@ G_DEFINE_TYPE_WITH_CODE (GabbleRosterChannel, gabble_roster_channel,
G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL));
static const gchar *gabble_roster_channel_interfaces[] = {
+ GABBLE_IFACE_CHANNEL_FUTURE,
TP_IFACE_CHANNEL_INTERFACE_GROUP,
NULL
};
@@ -61,6 +65,9 @@ enum
PROP_CHANNEL_TYPE,
PROP_HANDLE_TYPE,
PROP_HANDLE,
+ PROP_TARGET_ID,
+ PROP_INITIATOR_HANDLE,
+ PROP_INITIATOR_ID,
PROP_CONNECTION,
PROP_INTERFACES,
LAST_PROPERTY
@@ -208,12 +215,27 @@ gabble_roster_channel_get_property (GObject *object,
case PROP_HANDLE:
g_value_set_uint (value, priv->handle);
break;
+ case PROP_TARGET_ID:
+ {
+ TpHandleRepoIface *repo = tp_base_connection_get_handles (
+ (TpBaseConnection *) priv->conn, priv->handle_type);
+
+ g_value_set_string (value, tp_handle_inspect (repo, priv->handle));
+ }
+ break;
case PROP_CONNECTION:
g_value_set_object (value, priv->conn);
break;
case PROP_INTERFACES:
g_value_set_boxed (value, gabble_roster_channel_interfaces);
break;
+ case PROP_INITIATOR_HANDLE:
+ /* For now we act as though contact lists just sprang into existence */
+ g_value_set_uint (value, 0);
+ break;
+ case PROP_INITIATOR_ID:
+ g_value_set_static_string (value, "");
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -271,12 +293,23 @@ gabble_roster_channel_class_init (GabbleRosterChannelClass *gabble_roster_channe
{ "Interfaces", "interfaces", NULL },
{ NULL }
};
+ static TpDBusPropertiesMixinPropImpl future_props[] = {
+ { "TargetID", "target-id", NULL },
+ { "InitiatorHandle", "initiator-handle", NULL },
+ { "InitiatorID", "initiator-id", NULL },
+ { NULL }
+ };
static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = {
{ TP_IFACE_CHANNEL,
tp_dbus_properties_mixin_getter_gobject_properties,
NULL,
channel_props,
},
+ { GABBLE_IFACE_CHANNEL_FUTURE,
+ tp_dbus_properties_mixin_getter_gobject_properties,
+ NULL,
+ future_props,
+ },
{ NULL }
};
GObjectClass *object_class = G_OBJECT_CLASS (gabble_roster_channel_class);
@@ -307,6 +340,29 @@ gabble_roster_channel_class_init (GabbleRosterChannelClass *gabble_roster_channe
G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_INTERFACES, param_spec);
+ param_spec = g_param_spec_string ("target-id", "Target JID",
+ "The string obtained by inspecting this channel's handle",
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB);
+ g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec);
+
+ param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle",
+ "The contact who initiated the channel",
+ 0, G_MAXUINT32, 0,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME);
+ g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE,
+ param_spec);
+
+ param_spec = g_param_spec_string ("initiator-id", "Initiator's bare JID",
+ "The string obtained by inspecting the initiator-handle",
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME);
+ g_object_class_install_property (object_class, PROP_INITIATOR_ID,
+ param_spec);
+
g_object_class_override_property (object_class, PROP_OBJECT_PATH,
"object-path");
g_object_class_override_property (object_class, PROP_CHANNEL_TYPE,
--
1.5.6.3
More information about the Telepathy-commits
mailing list