[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