[Telepathy-commits] [telepathy-salut/master] SalutTubesChannel: expose interfaces as a GObject property
Sjoerd Simons
sjoerd at luon.net
Mon Aug 11 05:38:39 PDT 2008
---
src/salut-tubes-channel.c | 28 +++++++++++++++++++++++-----
1 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/src/salut-tubes-channel.c b/src/salut-tubes-channel.c
index 9d7cbb2..c41a227 100644
--- a/src/salut-tubes-channel.c
+++ b/src/salut-tubes-channel.c
@@ -75,6 +75,11 @@ G_DEFINE_TYPE_WITH_CODE (SalutTubesChannel, salut_tubes_channel, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL);
);
+static const char *salut_tubes_channel_interfaces[] = {
+ TP_IFACE_CHANNEL_INTERFACE_GROUP,
+ NULL
+};
+
enum
{
PROP_OBJECT_PATH = 1,
@@ -83,6 +88,7 @@ enum
PROP_HANDLE,
PROP_CONNECTION,
PROP_MUC,
+ PROP_INTERFACES,
LAST_PROPERTY
};
@@ -222,6 +228,12 @@ salut_tubes_channel_get_property (GObject *object,
case PROP_MUC:
g_value_set_object (value, chan->muc);
break;
+ case PROP_INTERFACES:
+ if (chan->muc)
+ g_value_set_static_boxed (value, salut_tubes_channel_interfaces);
+ else
+ g_value_set_static_boxed (value, salut_tubes_channel_interfaces + 1);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -1808,6 +1820,13 @@ salut_tubes_channel_class_init (
G_PARAM_STATIC_NICK |
G_PARAM_STATIC_BLURB);
g_object_class_install_property (object_class, PROP_MUC, param_spec);
+
+ param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces",
+ "Additional Channel.Interface.* interfaces",
+ G_TYPE_STRV,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NAME);
+ g_object_class_install_property (object_class, PROP_INTERFACES, param_spec);
}
void
@@ -1955,19 +1974,18 @@ static void
salut_tubes_channel_get_interfaces (TpSvcChannel *iface,
DBusGMethodInvocation *context)
{
- const char *interfaces[] = {
- TP_IFACE_CHANNEL_INTERFACE_GROUP,
- NULL };
SalutTubesChannel *self = SALUT_TUBES_CHANNEL (iface);
if (self->muc)
{
- tp_svc_channel_return_from_get_interfaces (context, interfaces);
+ tp_svc_channel_return_from_get_interfaces (context,
+ salut_tubes_channel_interfaces);
}
else
{
/* only show the NULL */
- tp_svc_channel_return_from_get_interfaces (context, interfaces + 1);
+ tp_svc_channel_return_from_get_interfaces (context,
+ salut_tubes_channel_interfaces + 1);
}
}
--
1.5.6.3
More information about the Telepathy-commits
mailing list