[telepathy-mission-control/master] McdDispatchOperation: remember the possible handlers
Simon McVittie
simon.mcvittie at collabora.co.uk
Tue Apr 7 09:00:47 PDT 2009
---
src/mcd-dispatch-operation.c | 29 +++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/mcd-dispatch-operation.c b/src/mcd-dispatch-operation.c
index 87f456a..a2232c2 100644
--- a/src/mcd-dispatch-operation.c
+++ b/src/mcd-dispatch-operation.c
@@ -70,6 +70,7 @@ struct _McdDispatchOperationPrivate
{
gchar *unique_name;
gchar *object_path;
+ GStrv possible_handlers;
GHashTable *properties;
/* Results */
@@ -90,6 +91,7 @@ enum
PROP_0,
PROP_DBUS_DAEMON,
PROP_CHANNELS,
+ PROP_POSSIBLE_HANDLERS,
};
static void
@@ -165,8 +167,7 @@ get_possible_handlers (TpSvcDBusProperties *self, const gchar *name,
DEBUG ("called for %s", priv->unique_name);
g_value_init (value, G_TYPE_STRV);
- g_warning ("%s not implemented", G_STRFUNC);
- g_value_set_static_boxed (value, NULL);
+ g_value_set_boxed (value, priv->possible_handlers);
}
@@ -308,6 +309,7 @@ mcd_dispatch_operation_set_property (GObject *obj, guint prop_id,
g_object_unref (priv->dbus_daemon);
priv->dbus_daemon = TP_DBUS_DAEMON (g_value_dup_object (val));
break;
+
case PROP_CHANNELS:
g_assert (priv->channels == NULL);
priv->channels = g_value_get_pointer (val);
@@ -325,6 +327,13 @@ mcd_dispatch_operation_set_property (GObject *obj, guint prop_id,
g_object_ref (list->data);
}
break;
+
+ case PROP_POSSIBLE_HANDLERS:
+ g_assert (priv->possible_handlers == NULL);
+ priv->possible_handlers = g_value_dup_boxed (val);
+ g_assert (priv->possible_handlers != NULL);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -342,6 +351,11 @@ mcd_dispatch_operation_get_property (GObject *obj, guint prop_id,
case PROP_DBUS_DAEMON:
g_value_set_object (val, priv->dbus_daemon);
break;
+
+ case PROP_POSSIBLE_HANDLERS:
+ g_value_set_boxed (val, priv->possible_handlers);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -368,6 +382,9 @@ mcd_dispatch_operation_dispose (GObject *object)
McdDispatchOperationPrivate *priv = MCD_DISPATCH_OPERATION_PRIV (object);
GList *list;
+ g_strfreev (priv->possible_handlers);
+ priv->possible_handlers = NULL;
+
if (priv->channels)
{
for (list = priv->channels; list != NULL; list = list->next)
@@ -411,6 +428,13 @@ mcd_dispatch_operation_class_init (McdDispatchOperationClass * klass)
g_object_class_install_property (object_class, PROP_CHANNELS,
g_param_spec_pointer ("channels", "channels", "channels",
G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (object_class, PROP_POSSIBLE_HANDLERS,
+ g_param_spec_boxed ("possible-handlers", "Possible handlers",
+ "Well-known bus names of possible handlers",
+ G_TYPE_STRV,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -445,6 +469,7 @@ _mcd_dispatch_operation_new (TpDBusDaemon *dbus_daemon,
obj = g_object_new (MCD_TYPE_DISPATCH_OPERATION,
"dbus-daemon", dbus_daemon,
"channels", channels,
+ "possible-handlers", possible_handlers,
NULL);
return MCD_DISPATCH_OPERATION (obj);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list