diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-02-14 09:24:58 +0800 |
---|---|---|
committer | Chandni Verma <chandniverma2112@gmail.com> | 2011-03-11 13:10:23 +0800 |
commit | 80d502ca384aaf07e2b572da7414d7ff36e91936 (patch) | |
tree | 0a86266139ab8c5a5eb82975f27fa28a2d3bbc32 | |
parent | 428ac8930ef8cf312523a4d8b24eeda26729c4b3 (diff) | |
download | gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar.gz gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar.bz2 gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar.lz gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar.xz gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.tar.zst gsoc2013-empathy-80d502ca384aaf07e2b572da7414d7ff36e91936.zip |
Determine whether a connection supports reporting abuse, set the connection flag
-rw-r--r-- | libempathy/empathy-tp-contact-list.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libempathy/empathy-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c index 9b3383d9f..028744285 100644 --- a/libempathy/empathy-tp-contact-list.c +++ b/libempathy/empathy-tp-contact-list.c @@ -31,6 +31,8 @@ #include <telepathy-glib/dbus.h> #include <telepathy-glib/interfaces.h> +#include <extensions/extensions.h> + #include "empathy-tp-contact-list.h" #include "empathy-tp-contact-factory.h" #include "empathy-contact-list.h" @@ -809,6 +811,27 @@ list_ensure_channel_cb (TpConnection *conn, } static void +list_get_contact_blocking_capabilities_cb (TpProxy *conn, + const GValue *value, + const GError *in_error, + gpointer user_data, + GObject *weak_object) +{ + EmpathyTpContactList *list = EMPATHY_TP_CONTACT_LIST (weak_object); + EmpathyTpContactListPriv *priv = GET_PRIV (list); + EmpContactBlockingCapabilities caps; + + g_return_if_fail (G_VALUE_HOLDS_UINT (value)); + + caps = g_value_get_uint (value); + + if (caps & EMP_CONTACT_BLOCKING_CAPABILITY_CAN_REPORT_ABUSIVE) { + DEBUG ("Connection can report abusive contacts"); + priv->flags |= EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE; + } +} + +static void iterate_on_channels (EmpathyTpContactList *list, const GPtrArray *channels) { @@ -922,6 +945,19 @@ conn_ready_cb (TpConnection *connection, G_MAXINT, request, list_ensure_channel_cb, list, NULL, G_OBJECT (list)); g_hash_table_unref (request); + + /* Find out if we support reporting abusive contacts -- + * this is done via the new Conn.I.ContactBlocking interface */ + if (tp_proxy_has_interface_by_id (priv->connection, + EMP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { + DEBUG ("Have Conn.I.ContactBlocking"); + + tp_cli_dbus_properties_call_get (priv->connection, -1, + EMP_IFACE_CONNECTION_INTERFACE_CONTACT_BLOCKING, + "ContactBlockingCapabilities", + list_get_contact_blocking_capabilities_cb, + NULL, NULL, G_OBJECT (list)); + } out: g_object_unref (list); } |