diff options
-rw-r--r-- | libempathy/empathy-contact.c | 39 | ||||
-rw-r--r-- | libempathy/empathy-contact.h | 2 |
2 files changed, 41 insertions, 0 deletions
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 6aed12acc..7c8539fba 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -560,6 +560,20 @@ empathy_contact_get_handle (EmpathyContact *contact) return priv->handle; } +static gboolean +is_salut (EmpathyContact *contact) +{ + McAccount *account; + McProfile *profile; + const gchar *name; + + account = empathy_contact_get_account (contact); + profile = mc_account_get_profile (account); + name = mc_profile_get_protocol_name (profile); + + return (strcmp (name, "local-xmpp") == 0); +} + void empathy_contact_set_handle (EmpathyContact *contact, guint handle) @@ -575,6 +589,19 @@ empathy_contact_set_handle (EmpathyContact *contact, { priv->handle = handle; g_object_notify (G_OBJECT (contact), "handle"); + + /* FIXME salut does not yet support the Capabilities interface, so for + * now we use this hack. + */ + if (is_salut (contact)) + { + EmpathyCapabilities caps; + + caps = empathy_contact_get_capabilities (contact); + caps |= EMPATHY_CAPABILITIES_FT; + + empathy_contact_set_capabilities (contact, caps); + } } contact_set_ready_flag (contact, EMPATHY_CONTACT_READY_HANDLE); g_object_unref (contact); @@ -680,6 +707,18 @@ empathy_contact_can_voip (EmpathyContact *contact) EMPATHY_CAPABILITIES_VIDEO); } +gboolean +empathy_contact_can_send_files (EmpathyContact *contact) +{ + EmpathyContactPriv *priv; + + g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE); + + priv = GET_PRIV (contact); + + return priv->capabilities & EMPATHY_CAPABILITIES_FT; +} + EmpathyContactReady empathy_contact_get_ready (EmpathyContact *contact) { diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h index da018fd95..d8a1a791f 100644 --- a/libempathy/empathy-contact.h +++ b/libempathy/empathy-contact.h @@ -66,6 +66,7 @@ typedef enum { EMPATHY_CAPABILITIES_NONE = 0, EMPATHY_CAPABILITIES_AUDIO = 1 << 0, EMPATHY_CAPABILITIES_VIDEO = 1 << 1, + EMPATHY_CAPABILITIES_FT = 1 << 2, EMPATHY_CAPABILITIES_UNKNOWN = 1 << 7 } EmpathyCapabilities; @@ -108,6 +109,7 @@ void empathy_contact_set_is_user (EmpathyContact *contact, gboolean empathy_contact_is_online (EmpathyContact *contact); const gchar * empathy_contact_get_status (EmpathyContact *contact); gboolean empathy_contact_can_voip (EmpathyContact *contact); +gboolean empathy_contact_can_send_files (EmpathyContact *contact); gboolean empathy_contact_equal (gconstpointer v1, gconstpointer v2); guint empathy_contact_hash (gconstpointer key); void empathy_contact_run_until_ready (EmpathyContact *contact, |