telepathy-glib: tp_channel_request_dup_hints: add

Guillaume Desmottes gdesmott at kemper.freedesktop.org
Wed Sep 26 04:55:46 PDT 2012


Module: telepathy-glib
Branch: master
Commit: 69305347a64f5cb3ac69db067f525855f6eeaa9c
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=69305347a64f5cb3ac69db067f525855f6eeaa9c

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Wed Sep 19 14:07:52 2012 +0100

tp_channel_request_dup_hints: add

https://bugs.freedesktop.org/show_bug.cgi?id=55103

---

 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/channel-request.c           |   48 ++++++++++++++++++++++++++++
 telepathy-glib/channel-request.h           |    3 ++
 tests/dbus/channel-request.c               |   11 ++++++
 4 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 691d68e..8c2949c 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -5527,6 +5527,7 @@ tp_channel_request_get_account
 tp_channel_request_get_user_action_time
 tp_channel_request_get_preferred_handler
 tp_channel_request_get_hints
+tp_channel_request_dup_hints
 <SUBSECTION>
 tp_cli_channel_request_callback_for_cancel
 tp_cli_channel_request_call_cancel
diff --git a/telepathy-glib/channel-request.c b/telepathy-glib/channel-request.c
index 69f44e9..639a223 100644
--- a/telepathy-glib/channel-request.c
+++ b/telepathy-glib/channel-request.c
@@ -40,6 +40,7 @@
 #include "telepathy-glib/deprecated-internal.h"
 #include "telepathy-glib/proxy-internal.h"
 #include "telepathy-glib/simple-client-factory-internal.h"
+#include "telepathy-glib/variant-util-internal.h"
 #include "telepathy-glib/_gen/tp-cli-channel-request-body.h"
 
 /**
@@ -109,6 +110,7 @@ enum {
   PROP_USER_ACTION_TIME,
   PROP_PREFERRED_HANDLER,
   PROP_HINTS,
+  PROP_HINTS_VARDICT
 };
 
 static guint signals[N_SIGNALS] = { 0 };
@@ -192,6 +194,10 @@ tp_channel_request_get_property (GObject *object,
         g_value_set_boxed (value, tp_channel_request_get_hints (self));
         break;
 
+      case PROP_HINTS_VARDICT:
+        g_value_take_variant (value, tp_channel_request_dup_hints (self));
+        break;
+
       default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
         break;
@@ -475,6 +481,23 @@ tp_channel_request_class_init (TpChannelRequestClass *klass)
   g_object_class_install_property (object_class, PROP_HINTS, param_spec);
 
   /**
+   * TpChannelRequest:hints-vardict:
+   *
+   * A %G_VARIANT_TYPE_VARDICT of metadata provided by
+   * the channel requester; or %NULL if #TpChannelRequest:immutable-properties
+   * is not defined or if no hints have been defined.
+   *
+   * Read-only.
+   *
+   * Since: 0.UNRELEASED
+   */
+  param_spec = g_param_spec_variant ("hints-vardict", "Hints", "Hints",
+      G_VARIANT_TYPE_VARDICT, NULL,
+      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (object_class, PROP_HINTS_VARDICT,
+      param_spec);
+
+  /**
    * TpChannelRequest::succeeded:
    * @self: the channel request proxy
    *
@@ -775,3 +798,28 @@ tp_channel_request_get_hints (TpChannelRequest *self)
   return tp_asv_get_boxed (self->priv->immutable_properties,
       TP_PROP_CHANNEL_REQUEST_HINTS, TP_HASH_TYPE_STRING_VARIANT_MAP);
 }
+
+/**
+ * tp_channel_request_dup_hints:
+ * @self: a #TpChannelRequest
+ *
+ * Return the #TpChannelRequest:hints-vardict property
+ *
+ * Returns: (transfer full): the value of #TpChannelRequest:hints-vardict
+ *
+ * Since: 0.UNRELEASED
+ */
+GVariant *
+tp_channel_request_dup_hints (TpChannelRequest *self)
+{
+  const GHashTable *hints;
+
+  g_return_val_if_fail (TP_IS_CHANNEL_REQUEST (self), NULL);
+
+  hints = tp_channel_request_get_hints (self);
+
+  if (hints == NULL)
+    return NULL;
+
+  return _tp_asv_to_vardict (hints);
+}
diff --git a/telepathy-glib/channel-request.h b/telepathy-glib/channel-request.h
index 85a9437..7fcbf32 100644
--- a/telepathy-glib/channel-request.h
+++ b/telepathy-glib/channel-request.h
@@ -96,6 +96,9 @@ const gchar * tp_channel_request_get_preferred_handler (TpChannelRequest *self);
 
 const GHashTable * tp_channel_request_get_hints (TpChannelRequest *self);
 
+_TP_AVAILABLE_IN_UNRELEASED
+GVariant *tp_channel_request_dup_hints (TpChannelRequest *self);
+
 G_END_DECLS
 
 #include <telepathy-glib/_gen/tp-cli-channel-request.h>
diff --git a/tests/dbus/channel-request.c b/tests/dbus/channel-request.c
index 5d83182..779a110 100644
--- a/tests/dbus/channel-request.c
+++ b/tests/dbus/channel-request.c
@@ -350,6 +350,7 @@ test_properties (Test *test,
   TpAccount *account;
   gint64 user_action_time;
   const gchar *handler;
+  GVariant *vardict;
 
   hints = tp_asv_new ("test", G_TYPE_STRING, "hi", NULL);
 
@@ -402,6 +403,16 @@ test_properties (Test *test,
   g_assert_cmpstr (tp_asv_get_string (hints, "test"), ==, "hi");
 
   g_hash_table_unref (hints);
+
+  vardict = tp_channel_request_dup_hints (test->cr);
+  g_assert_cmpstr (tp_vardict_get_string (vardict, "test"), ==, "hi");
+  g_variant_unref (vardict);
+
+  g_object_get (test->cr,
+      "hints-vardict", &vardict,
+      NULL);
+  g_assert_cmpstr (tp_vardict_get_string (vardict, "test"), ==, "hi");
+  g_variant_unref (vardict);
 }
 
 int



More information about the telepathy-commits mailing list