[Telepathy-commits] [telepathy-salut/master] Allow creating file channels with the correct direction.
Jonny Lamb
jonny.lamb at collabora.co.uk
Fri Nov 21 03:46:05 PST 2008
20080721195613-8ed0e-a5fcd51e8d6706135565b6b6a42ec6c3c961519f.gz
---
src/salut-ft-manager.c | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/salut-ft-manager.c b/src/salut-ft-manager.c
index 4cef010..9b7a368 100644
--- a/src/salut-ft-manager.c
+++ b/src/salut-ft-manager.c
@@ -41,7 +41,7 @@ static void
salut_ft_manager_factory_iface_init (gpointer *g_iface, gpointer *iface_data);
static SalutFileChannel *
-salut_ft_manager_new_channel (SalutFtManager *mgr, TpHandle handle);
+salut_ft_manager_new_channel (SalutFtManager *mgr, TpHandle handle, gboolean incoming);
G_DEFINE_TYPE_WITH_CODE (SalutFtManager, salut_ft_manager, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_FACTORY_IFACE,
@@ -116,7 +116,7 @@ message_stanza_callback (SalutXmppConnectionManager *mgr,
chan = g_hash_table_lookup (priv->channels, GUINT_TO_POINTER (handle));
if (chan == NULL)
- chan = salut_ft_manager_new_channel (self, handle);
+ chan = salut_ft_manager_new_channel (self, handle, TRUE);
salut_file_channel_received_file_offer (chan, stanza, conn);
}
@@ -267,7 +267,8 @@ file_channel_closed_cb (SalutFileChannel *chan, gpointer user_data)
static SalutFileChannel *
salut_ft_manager_new_channel (SalutFtManager *mgr,
- TpHandle handle)
+ TpHandle handle,
+ gboolean incoming)
{
SalutFtManagerPrivate *priv = SALUT_FT_MANAGER_GET_PRIVATE (mgr);
TpBaseConnection *base_connection = TP_BASE_CONNECTION (priv->connection);
@@ -277,6 +278,7 @@ salut_ft_manager_new_channel (SalutFtManager *mgr,
SalutContact *contact;
const gchar *name;
gchar *path = NULL;
+ guint direction, state;
g_assert (g_hash_table_lookup (priv->channels, GINT_TO_POINTER (handle))
== NULL);
@@ -288,6 +290,9 @@ salut_ft_manager_new_channel (SalutFtManager *mgr,
return NULL;
}
+ state = incoming ? SALUT_FILE_TRANSFER_STATE_LOCAL_PENDING : SALUT_FILE_TRANSFER_STATE_REMOTE_PENDING;
+ direction = incoming ? SALUT_FILE_TRANSFER_DIRECTION_INCOMING : SALUT_FILE_TRANSFER_DIRECTION_OUTGOING;
+
name = tp_handle_inspect (handle_repo, handle);
path = g_strdup_printf ("%s/FileChannel/%u",
base_connection->object_path, handle);
@@ -297,7 +302,8 @@ salut_ft_manager_new_channel (SalutFtManager *mgr,
"object-path", path,
"handle", handle,
"xmpp-connection-manager", priv->xmpp_connection_manager,
- "direction", SALUT_FILE_TRANSFER_DIRECTION_OUTGOING,
+ "direction", direction,
+ "state", state,
NULL);
g_object_unref (contact);
g_free (path);
@@ -355,7 +361,7 @@ salut_ft_manager_factory_iface_request (TpChannelFactoryIface *iface,
chan = g_hash_table_lookup (priv->channels, GINT_TO_POINTER (handle));
if (chan == NULL)
{
- chan = salut_ft_manager_new_channel (mgr, handle);
+ chan = salut_ft_manager_new_channel (mgr, handle, FALSE);
created = TRUE;
}
*ret = TP_CHANNEL_IFACE (chan);
--
1.5.6.5
More information about the Telepathy-commits
mailing list