[telepathy-mission-control/master] Get own nickname on new connections
Alberto Mardegan
alberto.mardegan at nokia.com
Tue Sep 15 04:44:11 PDT 2009
When a new connection with aliases support is established, get our own
nickname.
Originally written by Simon McVittie <simon.mcvittie at collabora.co.uk>
---
src/mcd-connection.c | 44 ++++++++++++++++++++++++++++++
test/twisted/account-manager/nickname.py | 15 +++++++---
2 files changed, 55 insertions(+), 4 deletions(-)
diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index 4e4f262..507ffb4 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -917,15 +917,59 @@ _mcd_connection_set_nickname (McdConnection *connection,
}
static void
+_mcd_connection_get_aliases_cb (TpConnection *proxy,
+ GHashTable *aliases,
+ const GError *error,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ McdConnectionPrivate *priv = user_data;
+ guint self_handle;
+ const gchar *alias;
+
+ DEBUG ("called");
+
+ if (error != NULL)
+ {
+ DEBUG ("GetAliases([SelfHandle]) failed: %s", error->message);
+ return;
+ }
+
+ self_handle = tp_connection_get_self_handle (proxy);
+
+ alias = g_hash_table_lookup (aliases,GUINT_TO_POINTER (self_handle));
+
+ if (alias != NULL &&
+ (priv->alias == NULL || tp_strdiff (priv->alias, alias)))
+ {
+ g_free (priv->alias);
+ priv->alias = g_strdup (alias);
+ g_signal_emit (weak_object, signals[SELF_NICKNAME_CHANGED], 0,
+ alias);
+ }
+}
+
+static void
_mcd_connection_setup_alias (McdConnection *connection)
{
McdConnectionPrivate *priv = connection->priv;
+ GArray *self_handle_array;
+ guint self_handle;
+
+ self_handle_array = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
+ self_handle = tp_connection_get_self_handle (priv->tp_conn);
+ g_array_append_val (self_handle_array, self_handle);
tp_cli_connection_interface_aliasing_connect_to_aliases_changed (priv->tp_conn,
on_aliases_changed,
priv, NULL,
(GObject *)connection,
NULL);
+
+ tp_cli_connection_interface_aliasing_call_get_aliases
+ (priv->tp_conn, -1, self_handle_array, _mcd_connection_get_aliases_cb,
+ priv, NULL, (GObject *) connection);
+ g_array_free (self_handle_array, TRUE);
}
static gboolean
diff --git a/test/twisted/account-manager/nickname.py b/test/twisted/account-manager/nickname.py
index 112cb14..c286507 100644
--- a/test/twisted/account-manager/nickname.py
+++ b/test/twisted/account-manager/nickname.py
@@ -49,16 +49,23 @@ def test(q, bus, mc):
assert account_props.Get(cs.ACCOUNT, 'Nickname') == 'resiak'
# OK, let's go online
- conn, e = enable_fakecm_account(q, bus, mc, account, params,
- has_aliasing=True,
+ conn, get_aliases, set_aliases = enable_fakecm_account(q, bus, mc,
+ account, params, has_aliasing=True,
expect_after_connect=[
EventPattern('dbus-method-call',
+ interface=cs.CONN_IFACE_ALIASING, method='GetAliases',
+ handled=False),
+ EventPattern('dbus-method-call',
interface=cs.CONN_IFACE_ALIASING, method='SetAliases',
handled=False),
])
- assert e.args[0] == { conn.self_handle: 'resiak' }
- q.dbus_return(e.message, signature='')
+ assert get_aliases.args[0] == [ conn.self_handle ]
+ q.dbus_return(get_aliases.message, { conn.self_handle: 'wjt at example.com' },
+ signature='a{us}')
+
+ assert set_aliases.args[0] == { conn.self_handle: 'resiak' }
+ q.dbus_return(set_aliases.message, signature='')
# Change alias after going online
call_async(q, account_props, 'Set', cs.ACCOUNT, 'Nickname',
--
1.5.6.5
More information about the telepathy-commits
mailing list