]> git.0d.be Git - empathy.git/commitdiff
Implement HandledChannels D-Bus property
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Fri, 10 Jul 2009 15:07:10 +0000 (16:07 +0100)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Thu, 16 Jul 2009 11:41:47 +0000 (12:41 +0100)
libempathy/empathy-dispatcher.c

index 721d398d9a5aa447fdd61172db6e99ccf867a791..55fa668cae319502a575ed22bc4f8418cccc958e 100644 (file)
@@ -90,6 +90,7 @@ enum
 {
   PROP_INTERFACES = 1,
   PROP_CHANNEL_FILTER,
+  PROP_CHANNELS
 };
 
 enum
@@ -928,6 +929,9 @@ dispatcher_get_property (GObject *object,
   GValue *value,
   GParamSpec *pspec)
 {
+  EmpathyDispatcher *dispatcher = EMPATHY_DISPATCHER (object);
+  EmpathyDispatcherPriv *priv = GET_PRIV (dispatcher);
+
   switch (property_id)
     {
       case PROP_INTERFACES:
@@ -943,6 +947,24 @@ dispatcher_get_property (GObject *object,
           g_value_set_boxed (value, filters);
           break;
         }
+      case PROP_CHANNELS:
+        {
+          GPtrArray *accounts;
+          GList *l;
+
+          accounts = g_ptr_array_new ();
+
+          for (l = priv->channels; l != NULL; l = g_list_next (l))
+            {
+              TpProxy *channel = TP_PROXY (l->data);
+
+              g_ptr_array_add (accounts,
+                g_strdup (tp_proxy_get_object_path (channel)));
+            }
+
+          g_value_set_boxed (value, accounts);
+          break;
+        }
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
         break;
@@ -961,6 +983,7 @@ empathy_dispatcher_class_init (EmpathyDispatcherClass *klass)
   };
   static TpDBusPropertiesMixinPropImpl client_handler_props[] = {
     { "HandlerChannelFilter", "channel-filter", NULL },
+    { "HandledChannels", "channels", NULL },
     { NULL }
   };
   static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = {
@@ -995,6 +1018,13 @@ empathy_dispatcher_class_init (EmpathyDispatcherClass *klass)
   g_object_class_install_property (object_class,
     PROP_CHANNEL_FILTER, param_spec);
 
+  param_spec = g_param_spec_boxed ("channels", "channels",
+    "List of channels we're handling",
+    EMPATHY_ARRAY_TYPE_OBJECT,
+    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class,
+    PROP_CHANNELS, param_spec);
+
   signals[OBSERVE] =
     g_signal_new ("observe",
       G_TYPE_FROM_CLASS (klass),