diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2012-01-17 17:10:43 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2012-01-17 17:10:43 +0800 |
commit | 25a44d2984058a38f54ab6bd68027e524342e34b (patch) | |
tree | a698ac149fa82e1c93f0d1d25c45bc68d1ff9fc7 /libempathy | |
parent | f17363e49737c2ad6bf304d7ed1dd2ccf8ca2b4c (diff) | |
parent | 5c615ca9c2ffcff23925c154e36dfeccf416ec30 (diff) | |
download | gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar.gz gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar.bz2 gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar.lz gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar.xz gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.tar.zst gsoc2013-empathy-25a44d2984058a38f54ab6bd68027e524342e34b.zip |
Merge branch 'master' into call1
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-account-settings.c | 44 | ||||
-rw-r--r-- | libempathy/empathy-account-settings.h | 3 | ||||
-rw-r--r-- | libempathy/empathy-client-factory.c | 18 | ||||
-rw-r--r-- | libempathy/empathy-connection-aggregator.c | 1 | ||||
-rw-r--r-- | libempathy/empathy-utils.c | 6 |
5 files changed, 63 insertions, 9 deletions
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index 78d609685..cf269bdc8 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -103,6 +103,8 @@ struct _EmpathyAccountSettingsPriv /* If TRUE, the account should have 'tel' in its * Account.Interface.Addressing.URISchemes property. */ gboolean uri_scheme_tel; + /* If TRUE, Service property needs to be updated when applying changes */ + gboolean update_service; GSimpleAsyncResult *apply_result; }; @@ -743,6 +745,21 @@ empathy_account_settings_get_service (EmpathyAccountSettings *settings) return priv->service; } +void +empathy_account_settings_set_service (EmpathyAccountSettings *settings, + const gchar *service) +{ + EmpathyAccountSettingsPriv *priv = GET_PRIV (settings); + + if (!tp_strdiff (priv->service, service)) + return; + + g_free (priv->service); + priv->service = g_strdup (service); + g_object_notify (G_OBJECT (settings), "service"); + priv->update_service = TRUE; +} + gchar * empathy_account_settings_get_icon_name (EmpathyAccountSettings *settings) { @@ -1446,6 +1463,32 @@ update_account_uri_schemes (EmpathyAccountSettings *self) } static void +set_service_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + GError *error = NULL; + + if (!tp_account_set_service_finish (TP_ACCOUNT (source), result, &error)) + { + DEBUG ("Failed to set Account.Service: %s", error->message); + g_error_free (error); + } +} + +static void +update_account_service (EmpathyAccountSettings *self) +{ + EmpathyAccountSettingsPriv *priv = GET_PRIV (self); + + if (!priv->update_service) + return; + + tp_account_set_service_async (priv->account, + priv->service != NULL ? priv->service : "", set_service_cb, self); +} + +static void empathy_account_settings_account_updated (GObject *source, GAsyncResult *result, gpointer user_data) @@ -1486,6 +1529,7 @@ empathy_account_settings_account_updated (GObject *source, } update_account_uri_schemes (settings); + update_account_service (settings); g_simple_async_result_set_op_res_gboolean (priv->apply_result, g_strv_length (reconnect_required) > 0); diff --git a/libempathy/empathy-account-settings.h b/libempathy/empathy-account-settings.h index ea0c5b048..10ed3684f 100644 --- a/libempathy/empathy-account-settings.h +++ b/libempathy/empathy-account-settings.h @@ -78,6 +78,9 @@ const gchar *empathy_account_settings_get_protocol ( const gchar *empathy_account_settings_get_service ( EmpathyAccountSettings *settings); +void empathy_account_settings_set_service (EmpathyAccountSettings *settings, + const gchar *service); + TpAccount *empathy_account_settings_get_account ( EmpathyAccountSettings *settings); diff --git a/libempathy/empathy-client-factory.c b/libempathy/empathy-client-factory.c index 65c0d267a..2a8559441 100644 --- a/libempathy/empathy-client-factory.c +++ b/libempathy/empathy-client-factory.c @@ -134,15 +134,21 @@ empathy_client_factory_dup_contact_features (TpSimpleClientFactory *factory, TpConnection *connection) { GArray *features; - TpContactFeature feature; + TpContactFeature extra_features[] = { + TP_CONTACT_FEATURE_ALIAS, + TP_CONTACT_FEATURE_PRESENCE, + TP_CONTACT_FEATURE_AVATAR_TOKEN, + TP_CONTACT_FEATURE_AVATAR_DATA, + TP_CONTACT_FEATURE_CAPABILITIES, + /* Needed by empathy_individual_add_menu_item_new to check if a contact + * is already in the contact list. This feature is pretty cheap to + * prepare as it doesn't prepare the full roster. */ + TP_CONTACT_FEATURE_SUBSCRIPTION_STATES, + }; features = chainup->dup_contact_features (factory, connection); - /* Needed by empathy_individual_add_menu_item_new to check if a contact is - * already in the contact list. This feature is pretty cheap to prepare as - * it doesn't prepare the full roster. */ - feature = TP_CONTACT_FEATURE_SUBSCRIPTION_STATES; - g_array_append_val (features, feature); + g_array_append_vals (features, extra_features, G_N_ELEMENTS (extra_features)); return features; } diff --git a/libempathy/empathy-connection-aggregator.c b/libempathy/empathy-connection-aggregator.c index 22d5ab8b2..fde365c27 100644 --- a/libempathy/empathy-connection-aggregator.c +++ b/libempathy/empathy-connection-aggregator.c @@ -231,6 +231,7 @@ empathy_connection_aggregator_dup_singleton (void) return aggregator; } +/* (transfer container) */ GList * empathy_connection_aggregator_get_all_groups (EmpathyConnectionAggregator *self) { diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 55e23380c..4b5738b7a 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -393,7 +393,7 @@ empathy_account_get_error_message (TpAccount *account, { const gchar *dbus_error; const gchar *message; - const GHashTable *details = NULL; + const GHashTable *details = NULL; TpConnectionStatusReason reason; dbus_error = tp_account_get_detailed_error (account, &details); @@ -410,11 +410,11 @@ empathy_account_get_error_message (TpAccount *account, if (message != NULL) return message; + tp_account_get_connection_status (account, &reason); + DEBUG ("Don't understand error '%s'; fallback to the status reason (%u)", dbus_error, reason); - tp_account_get_connection_status (account, &reason); - return empathy_status_reason_get_default_message (reason); } |