aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2012-01-17 17:10:43 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2012-01-17 17:10:43 +0800
commit25a44d2984058a38f54ab6bd68027e524342e34b (patch)
treea698ac149fa82e1c93f0d1d25c45bc68d1ff9fc7 /libempathy
parentf17363e49737c2ad6bf304d7ed1dd2ccf8ca2b4c (diff)
parent5c615ca9c2ffcff23925c154e36dfeccf416ec30 (diff)
downloadgsoc2013-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.c44
-rw-r--r--libempathy/empathy-account-settings.h3
-rw-r--r--libempathy/empathy-client-factory.c18
-rw-r--r--libempathy/empathy-connection-aggregator.c1
-rw-r--r--libempathy/empathy-utils.c6
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);
}