[empathy: 4/11] add empathy_account_get_error_message



commit fde1ddca54a6f94fd4112f9d4e5c49d823ed00a4
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Aug 5 13:37:35 2010 +0200

    add empathy_account_get_error_message

 libempathy/empathy-utils.c |   21 ++++++++++++++++++++-
 libempathy/empathy-utils.h |    4 +++-
 2 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index f2f1d54..ee6ad5b 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -371,7 +371,7 @@ create_errors_to_message_hash (void)
 	return errors;
 }
 
-const gchar *
+static const gchar *
 empathy_dbus_error_name_get_default_message  (const gchar *error)
 {
 	static GHashTable *errors_to_message = NULL;
@@ -386,6 +386,25 @@ empathy_dbus_error_name_get_default_message  (const gchar *error)
 	return g_hash_table_lookup (errors_to_message, error);
 }
 
+const gchar *
+empathy_account_get_error_message (TpAccount *account,
+				   TpConnectionStatusReason reason)
+{
+	const gchar *dbus_error;
+	const gchar *message;
+	const GHashTable *details = NULL;
+
+	dbus_error = tp_account_get_detailed_error (account, &details);
+	message = empathy_dbus_error_name_get_default_message (dbus_error);
+	if (message != NULL)
+		return message;
+
+	DEBUG ("Don't understand error '%s'; fallback to the status reason (%u)",
+		dbus_error, reason);
+
+	return empathy_status_reason_get_default_message (reason);
+}
+
 gchar *
 empathy_file_lookup (const gchar *filename, const gchar *subdir)
 {
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index 6ddf58a..3407055 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -76,7 +76,9 @@ gboolean     empathy_check_available_state          (void);
 gint        empathy_uint_compare                    (gconstpointer a,
 						     gconstpointer b);
 const gchar * empathy_status_reason_get_default_message (TpConnectionStatusReason reason);
-const gchar * empathy_dbus_error_name_get_default_message  (const gchar *error);
+
+const gchar * empathy_account_get_error_message (TpAccount *account,
+						 TpConnectionStatusReason reason);
 
 gchar *empathy_protocol_icon_name (const gchar *protocol);
 const gchar *empathy_protocol_name_to_display_name (const gchar *proto_name);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]