diff options
author | Sjoerd Simons <sjoerd@luon.net> | 2006-11-20 13:37:19 +0000 |
---|---|---|
committer | Sjoerd Simons <sjoerd@luon.net> | 2006-11-20 13:37:19 +0000 |
commit | dedad4642ba53577be9e77b15372da4dcbb5a59e (patch) | |
tree | 34ae7147f2e8677c78b105e1571d9320b0eb49d2 | |
parent | a9cc486d08adcc1a2ae1553c23f456e65a587121 (diff) | |
download | telepathy-salut-dedad4642ba53577be9e77b15372da4dcbb5a59e.tar.gz |
[project @ 7bfde2bd2eabf5b20abab8c27ff31903562a6963]
* Rename SalutIMChannel to SalutImChannel
* Add a function to get a channel to a given contact handle
20061120133719-93b9a-eec8fa11e60f755f4e7c0f8249205afa1e7b4734.gz
-rw-r--r-- | src/salut-im-manager.c | 27 | ||||
-rw-r--r-- | src/salut-im-manager.h | 3 |
2 files changed, 24 insertions, 6 deletions
diff --git a/src/salut-im-manager.c b/src/salut-im-manager.c index b54db1df..57eb426e 100644 --- a/src/salut-im-manager.c +++ b/src/salut-im-manager.c @@ -40,7 +40,7 @@ static void salut_im_manager_factory_iface_init(gpointer *g_iface, gpointer *iface_data); -static SalutIMChannel * +static SalutImChannel * salut_im_manager_new_channel(SalutImManager *mgr, Handle handle); G_DEFINE_TYPE_WITH_CODE(SalutImManager, salut_im_manager, @@ -228,7 +228,7 @@ salut_im_manager_factory_iface_request(TpChannelFactoryIface *iface, TpChannelIface **ret) { SalutImManager *mgr = SALUT_IM_MANAGER(iface); SalutImManagerPrivate *priv = SALUT_IM_MANAGER_GET_PRIVATE(mgr); - SalutIMChannel *chan; + SalutImChannel *chan; /* We only support text channels */ if (strcmp(chan_type, TP_IFACE_CHANNEL_TYPE_TEXT)) { @@ -276,7 +276,7 @@ static void salut_im_manager_factory_iface_init(gpointer *g_iface, /* private functions */ static void -im_channel_closed_cb(SalutIMChannel *chan, gpointer user_data) { +im_channel_closed_cb(SalutImChannel *chan, gpointer user_data) { SalutImManager *self = SALUT_IM_MANAGER(user_data); SalutImManagerPrivate *priv = SALUT_IM_MANAGER_GET_PRIVATE(self); Handle handle; @@ -288,10 +288,10 @@ im_channel_closed_cb(SalutIMChannel *chan, gpointer user_data) { } } -static SalutIMChannel * +static SalutImChannel * salut_im_manager_new_channel(SalutImManager *mgr, Handle handle) { SalutImManagerPrivate *priv = SALUT_IM_MANAGER_GET_PRIVATE(mgr); - SalutIMChannel *chan; + SalutImChannel *chan; SalutContact *contact; const gchar *name; gchar *path = NULL; @@ -343,13 +343,28 @@ salut_im_manager_new(SalutConnection *connection, return ret; } +SalutImChannel * +salut_im_manager_get_channel_for_handle(SalutImManager *mgr, + Handle handle) { + SalutImManagerPrivate *priv = SALUT_IM_MANAGER_GET_PRIVATE(mgr); + SalutImChannel *chan; + chan = g_hash_table_lookup(priv->channels, GINT_TO_POINTER(handle)); + if (chan == NULL) { + chan = salut_im_manager_new_channel(mgr, handle); + } + if (chan != NULL) { + g_object_ref(chan); + } + return chan; +} + static void found_contact_for_connection(SalutImManager *mgr, SalutLmConnection *connection, SalutContact *contact) { SalutImManagerPrivate *priv = SALUT_IM_MANAGER_GET_PRIVATE(mgr); Handle handle; - SalutIMChannel *chan; + SalutImChannel *chan; handle = handle_for_contact(priv->connection->handle_repo, contact->name); diff --git a/src/salut-im-manager.h b/src/salut-im-manager.h index a3b1e69c..dfc7dfb3 100644 --- a/src/salut-im-manager.h +++ b/src/salut-im-manager.h @@ -58,6 +58,9 @@ SalutImManager * salut_im_manager_new(SalutConnection *connection, SalutContactManager *contact_manager); +SalutImChannel * +salut_im_manager_get_channel_for_handle(SalutImManager *mgr, + Handle handle); void salut_im_manager_handle_connection(SalutImManager *mgr, SalutLmConnection *connection); |