[Telepathy-commits] [telepathy-mission-control/master] Add the Account and PreferredHandler props to AddRequest
Alberto Mardegan
alberto.mardegan at nokia.com
Tue Nov 4 00:33:37 PST 2008
---
src/mcd-account-compat.c | 2 +-
src/mcd-account-requests.c | 2 +-
src/mcd-channel.c | 18 ++++++++++++++++++
src/mcd-channel.h | 1 +
src/mcd-dispatcher.c | 18 +++++++++++++++++-
src/mcd-dispatcher.h | 2 +-
6 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/src/mcd-account-compat.c b/src/mcd-account-compat.c
index 056182f..ab52c1a 100644
--- a/src/mcd-account-compat.c
+++ b/src/mcd-account-compat.c
@@ -338,7 +338,7 @@ _mcd_account_compat_request_channel_nmc4 (McdAccount *account,
g_hash_table_unref (properties);
dispatcher = mcd_master_get_dispatcher (mcd_master_get_default ());
- _mcd_dispatcher_add_request (dispatcher, channel);
+ _mcd_dispatcher_add_request (dispatcher, account, channel);
req_data = g_slice_new0 (McdAccountCompatReq);
req_data->requestor_serial = req->requestor_serial;
diff --git a/src/mcd-account-requests.c b/src/mcd-account-requests.c
index c52ec19..4932f06 100644
--- a/src/mcd-account-requests.c
+++ b/src/mcd-account-requests.c
@@ -148,7 +148,7 @@ create_request (McdAccount *account, GHashTable *properties,
G_CALLBACK (on_channel_status_changed), account);
dispatcher = mcd_master_get_dispatcher (mcd_master_get_default ());
- _mcd_dispatcher_add_request (dispatcher, channel);
+ _mcd_dispatcher_add_request (dispatcher, account, channel);
_mcd_account_online_request (account, online_request_cb, channel, &error);
if (error)
diff --git a/src/mcd-channel.c b/src/mcd-channel.c
index cee1214..1caf81f 100644
--- a/src/mcd-channel.c
+++ b/src/mcd-channel.c
@@ -1330,3 +1330,21 @@ _mcd_channel_get_request_user_action_time (McdChannel *channel)
return crd->user_time;
}
+/*
+ * _mcd_channel_get_request_preferred_handler:
+ * @channel: the #McdChannel.
+ *
+ * Returns: the preferred handler specified when requesting the channel, if the
+ * channel is in MCD_CHANNEL_REQUEST status.
+ */
+const gchar *
+_mcd_channel_get_request_preferred_handler (McdChannel *channel)
+{
+ McdChannelRequestData *crd;
+
+ g_return_val_if_fail (MCD_IS_CHANNEL (channel), NULL);
+ crd = g_object_get_data ((GObject *)channel, CD_REQUEST);
+ if (G_UNLIKELY (!crd)) return NULL;
+ return crd->preferred_handler;
+}
+
diff --git a/src/mcd-channel.h b/src/mcd-channel.h
index f38057b..e13e78f 100644
--- a/src/mcd-channel.h
+++ b/src/mcd-channel.h
@@ -124,6 +124,7 @@ const gchar *_mcd_channel_get_target_id (McdChannel *channel);
GHashTable *_mcd_channel_get_requested_properties (McdChannel *channel);
const gchar *_mcd_channel_get_request_path (McdChannel *channel);
guint64 _mcd_channel_get_request_user_action_time (McdChannel *channel);
+const gchar *_mcd_channel_get_request_preferred_handler (McdChannel *channel);
void _mcd_channel_set_error (McdChannel *channel, GError *error);
const GError *_mcd_channel_get_error (McdChannel *channel);
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index 7ca4ab3..6bea4f0 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -2031,19 +2031,23 @@ add_request_cb (TpProxy *proxy, const GError *error, gpointer user_data,
/*
* _mcd_dispatcher_add_request:
* @context: the #McdDispatcherContext.
+ * @account: the #McdAccount.
* @channels: a #McdChannel in MCD_CHANNEL_REQUEST state.
*
* Add a request; this basically means invoking AddRequest (and maybe
* RemoveRequest) on the channel handler.
*/
void
-_mcd_dispatcher_add_request (McdDispatcher *dispatcher, McdChannel *channel)
+_mcd_dispatcher_add_request (McdDispatcher *dispatcher, McdAccount *account,
+ McdChannel *channel)
{
McdDispatcherPrivate *priv;
McdClient *handler = NULL;
GHashTable *properties;
GValue v_user_time = { 0, };
GValue v_requests = { 0, };
+ GValue v_account = { 0, };
+ GValue v_preferred_handler = { 0, };
GPtrArray *requests;
GList *list;
@@ -2095,6 +2099,18 @@ _mcd_dispatcher_add_request (McdDispatcher *dispatcher, McdChannel *channel)
g_hash_table_insert (properties, "org.freedesktop.Telepathy.ChannelRequest"
".Requests", &v_requests);
+ g_value_init (&v_account, DBUS_TYPE_G_OBJECT_PATH);
+ g_value_set_static_boxed (&v_account,
+ mcd_account_get_object_path (account));
+ g_hash_table_insert (properties, "org.freedesktop.Telepathy.ChannelRequest"
+ ".Account", &v_account);
+
+ g_value_init (&v_preferred_handler, G_TYPE_STRING);
+ g_value_set_static_string (&v_preferred_handler,
+ _mcd_channel_get_request_preferred_handler (channel));
+ g_hash_table_insert (properties, "org.freedesktop.Telepathy.ChannelRequest"
+ ".PreferredHandler", &v_preferred_handler);
+
g_object_ref (channel);
mc_cli_client_handler_call_add_request (handler->proxy, -1,
_mcd_channel_get_request_path (channel), properties,
diff --git a/src/mcd-dispatcher.h b/src/mcd-dispatcher.h
index 9bf0de5..35505c7 100644
--- a/src/mcd-dispatcher.h
+++ b/src/mcd-dispatcher.h
@@ -88,7 +88,7 @@ GPtrArray *mcd_dispatcher_get_channel_capabilities (McdDispatcher * dispatcher,
/* not exported */
void _mcd_dispatcher_add_request (McdDispatcher *dispatcher,
- McdChannel *channel);
+ McdAccount *account, McdChannel *channel);
G_END_DECLS
--
1.5.6.5
More information about the Telepathy-commits
mailing list