[evolution-data-server/eclient] Merge common client error codes to E_CLIENT_ERROR
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/eclient] Merge common client error codes to E_CLIENT_ERROR
- Date: Tue, 26 Apr 2011 16:49:40 +0000 (UTC)
commit bc8e261f6876e5551aa22548d4dc0031626e82e5
Author: Milan Crha <mcrha redhat com>
Date: Tue Apr 26 18:48:37 2011 +0200
Merge common client error codes to E_CLIENT_ERROR
addressbook/libebook/e-book-client.c | 164 +++++++++++++----------------
addressbook/libebook/e-book-client.h | 19 +---
calendar/libecal/e-cal-client.c | 192 ++++++++++++++++------------------
calendar/libecal/e-cal-client.h | 18 +---
libedataserver/e-client.c | 47 ++++++++
libedataserver/e-client.h | 22 ++++
po/POTFILES.in | 1 +
7 files changed, 237 insertions(+), 226 deletions(-)
---
diff --git a/addressbook/libebook/e-book-client.c b/addressbook/libebook/e-book-client.c
index a78de81..2e99933 100644
--- a/addressbook/libebook/e-book-client.c
+++ b/addressbook/libebook/e-book-client.c
@@ -61,56 +61,22 @@ const gchar *
e_book_client_error_to_string (EBookClientError code)
{
switch (code) {
- case E_BOOK_CLIENT_ERROR_SUCCESS:
- return C_("BookClientError", "Success");
- case E_BOOK_CLIENT_ERROR_INVALID_ARG:
- return C_("BookClientError", "Invalid argument");
- case E_BOOK_CLIENT_ERROR_BUSY:
- return C_("BookClientError", "Backend is busy");
- case E_BOOK_CLIENT_ERROR_REPOSITORY_OFFLINE:
- return C_("BookClientError", "Repository offline");
case E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK:
return C_("BookClientError", "No such book");
- case E_BOOK_CLIENT_ERROR_NO_SELF_CONTACT:
- return C_("BookClientError", "No self contact");
- case E_BOOK_CLIENT_ERROR_SOURCE_NOT_LOADED:
- return C_("BookClientError", "Source not loaded");
- case E_BOOK_CLIENT_ERROR_SOURCE_ALREADY_LOADED:
- return C_("BookClientError", "Source already loaded");
- case E_BOOK_CLIENT_ERROR_PERMISSION_DENIED:
- return C_("BookClientError", "Permission denied");
case E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND:
return C_("BookClientError", "Contact not found");
case E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS:
return C_("BookClientError", "Contact ID already exists");
- case E_BOOK_CLIENT_ERROR_PROTOCOL_NOT_SUPPORTED:
- return C_("BookClientError", "Protocol not supported");
- case E_BOOK_CLIENT_ERROR_CANCELLED:
- return C_("BookClientError", "Cancelled");
- case E_BOOK_CLIENT_ERROR_COULD_NOT_CANCEL:
- return C_("BookClientError", "Could not cancel");
- case E_BOOK_CLIENT_ERROR_AUTHENTICATION_FAILED:
- return C_("BookClientError", "Authentication failed");
- case E_BOOK_CLIENT_ERROR_AUTHENTICATION_REQUIRED:
- return C_("BookClientError", "Authentication required");
case E_BOOK_CLIENT_ERROR_TLS_NOT_AVAILABLE:
return C_("BookClientError", "TLS not available");
- case E_BOOK_CLIENT_ERROR_DBUS_ERROR:
- return C_("BookClientError", "D-Bus error");
case E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE:
return C_("BookClientError", "No such source");
case E_BOOK_CLIENT_ERROR_OFFLINE_UNAVAILABLE:
return C_("BookClientError", "Offline unavailable");
- case E_BOOK_CLIENT_ERROR_OTHER_ERROR:
- return C_("BookClientError", "Other error");
- case E_BOOK_CLIENT_ERROR_INVALID_SERVER_VERSION:
- return C_("BookClientError", "Invalid server version");
case E_BOOK_CLIENT_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD:
return C_("BookClientError", "Unsupported authentication method");
case E_BOOK_CLIENT_ERROR_NO_SPACE:
return C_("BookClientError", "No space");
- case E_BOOK_CLIENT_ERROR_NOT_SUPPORTED:
- return C_("BookClientError", "Not supported");
}
return C_("BookClientError", "Unknown error");
@@ -120,42 +86,46 @@ e_book_client_error_to_string (EBookClientError code)
* If the GError is a remote error, extract the EBookClientError embedded inside.
* Otherwise return DBUS_ERROR.
*/
-static EBookClientError
-get_client_error_from_gerror (GError *error)
+static void
+get_client_error_from_gerror (GError *error, GError **client_error)
{
#define err(a,b) "org.gnome.evolution.dataserver.AddressBook." a, b
static struct {
const gchar *name;
- EBookClientError err_code;
- } errors[] = {
- { err ("Success", E_BOOK_CLIENT_ERROR_SUCCESS) },
- { err ("RepositoryOffline", E_BOOK_CLIENT_ERROR_REPOSITORY_OFFLINE) },
- { err ("PermissionDenied", E_BOOK_CLIENT_ERROR_PERMISSION_DENIED) },
+ gint err_code;
+ } book_errors[] = {
+ { err ("Success", -1) },
{ err ("ContactNotFound", E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND) },
{ err ("ContactIDAlreadyExists", E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS) },
- { err ("AuthenticationFailed", E_BOOK_CLIENT_ERROR_AUTHENTICATION_FAILED) },
- { err ("AuthenticationRequired", E_BOOK_CLIENT_ERROR_AUTHENTICATION_REQUIRED) },
- { err ("UnsupportedField", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
{ err ("UnsupportedAuthenticationMethod", E_BOOK_CLIENT_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD) },
{ err ("TLSNotAvailable", E_BOOK_CLIENT_ERROR_TLS_NOT_AVAILABLE) },
{ err ("NoSuchBook", E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK) },
{ err ("BookRemoved", E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE) },
{ err ("OfflineUnavailable", E_BOOK_CLIENT_ERROR_OFFLINE_UNAVAILABLE) },
- { err ("SearchSizeLimitExceeded", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
- { err ("SearchTimeLimitExceeded", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
- { err ("InvalidQuery", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
- { err ("QueryRefused", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
- { err ("CouldNotCancel", E_BOOK_CLIENT_ERROR_COULD_NOT_CANCEL) },
- { err ("OtherError", E_BOOK_CLIENT_ERROR_OTHER_ERROR) },
- { err ("InvalidServerVersion", E_BOOK_CLIENT_ERROR_INVALID_SERVER_VERSION) },
- { err ("NoSpace", E_BOOK_CLIENT_ERROR_NO_SPACE) },
- { err ("InvalidArg", E_BOOK_CLIENT_ERROR_INVALID_ARG) },
- { err ("NotSupported", E_BOOK_CLIENT_ERROR_NOT_SUPPORTED) }
+ { err ("NoSpace", E_BOOK_CLIENT_ERROR_NO_SPACE) }
+ }, cl_errors[] = {
+ { err ("RepositoryOffline", E_CLIENT_ERROR_REPOSITORY_OFFLINE) },
+ { err ("PermissionDenied", E_CLIENT_ERROR_PERMISSION_DENIED) },
+ { err ("AuthenticationFailed", E_CLIENT_ERROR_AUTHENTICATION_FAILED) },
+ { err ("AuthenticationRequired", E_CLIENT_ERROR_AUTHENTICATION_REQUIRED) },
+ { err ("CouldNotCancel", E_CLIENT_ERROR_COULD_NOT_CANCEL) },
+ { err ("InvalidArg", E_CLIENT_ERROR_INVALID_ARG) },
+ { err ("NotSupported", E_CLIENT_ERROR_NOT_SUPPORTED) },
+ { err ("UnsupportedField", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("SearchSizeLimitExceeded", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("SearchTimeLimitExceeded", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("InvalidQuery", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("QueryRefused", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("InvalidServerVersion", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("OtherError", E_CLIENT_ERROR_OTHER_ERROR) }
};
#undef err
+ g_return_if_fail (client_error != NULL);
+ g_return_if_fail (*client_error == NULL);
+
if G_LIKELY (error == NULL)
- return E_BOOK_CLIENT_ERROR_SUCCESS;
+ return;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
gchar *name;
@@ -163,24 +133,40 @@ get_client_error_from_gerror (GError *error)
name = g_dbus_error_get_remote_error (error);
- for (i = 0; i < G_N_ELEMENTS (errors); i++) {
- if (g_ascii_strcasecmp (errors[i].name, name) == 0) {
+ for (i = 0; i < G_N_ELEMENTS (book_errors); i++) {
+ if (g_ascii_strcasecmp (book_errors[i].name, name) == 0) {
+ g_free (name);
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_BOOK_CLIENT_ERROR, book_errors[i].err_code, error->message);
+ return;
+ }
+ }
+
+ for (i = 0; i < G_N_ELEMENTS (cl_errors); i++) {
+ if (g_ascii_strcasecmp (cl_errors[i].name, name) == 0) {
g_free (name);
- return errors[i].err_code;
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, cl_errors[i].err_code, error->message);
+ return;
}
}
g_warning (G_STRLOC ": Unmatched error name %s", name);
g_free (name);
- return E_BOOK_CLIENT_ERROR_OTHER_ERROR;
- } else if (error->domain == E_BOOK_CLIENT_ERROR) {
- return error->code;
+ g_dbus_error_strip_remote_error (error);
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR, error->message);
+ } else if (error->domain == E_BOOK_CLIENT_ERROR || error->domain == E_CLIENT_ERROR) {
+ *client_error = g_error_copy (error);
} else {
/* In this case the error was caused by DBus. Dump the message to the
console as otherwise we have no idea what the problem is. */
g_debug ("DBus error: %s", error->message);
- return E_BOOK_CLIENT_ERROR_DBUS_ERROR;
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, error->message);
}
}
@@ -196,14 +182,8 @@ unwrap_dbus_error (GError *error, GError **client_error)
return TRUE;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
- if (client_error) {
- gint code;
-
- code = get_client_error_from_gerror (error);
- g_dbus_error_strip_remote_error (error);
-
- *client_error = g_error_new_literal (E_BOOK_CLIENT_ERROR, code, error->message);
- }
+ if (client_error)
+ get_client_error_from_gerror (error, client_error);
g_error_free (error);
} else {
@@ -219,6 +199,12 @@ unwrap_dbus_error (GError *error, GError **client_error)
return FALSE;
}
+static void
+set_proxy_gone_error (GError **error)
+{
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+}
+
static guint active_book_clients = 0, book_connection_closed_id = 0;
static EGdbusBookFactory *book_factory_proxy = NULL;
static GStaticRecMutex book_factory_proxy_lock = G_STATIC_REC_MUTEX_INIT;
@@ -459,7 +445,7 @@ e_book_client_new (ESource *source, GError **error)
g_propagate_error (error, err);
} else {
g_warning ("%s: Failed to run book factory: Unknown error", G_STRFUNC);
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("Failed to run book factory"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("Failed to run book factory"));
}
return NULL;
@@ -468,7 +454,7 @@ e_book_client_new (ESource *source, GError **error)
xml = e_source_to_standalone_xml (source);
if (!xml || !*xml) {
g_free (xml);
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_INVALID_ARG, _("Invalid source"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, _("Invalid source"));
return NULL;
}
@@ -566,7 +552,7 @@ e_book_client_new_from_uri (const gchar *uri, GError **error)
if (!source) {
g_object_unref (source_list);
- g_set_error (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_INVALID_ARG, _("Incorrect uri '%s'"), uri);
+ g_set_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, _("Incorrect uri '%s'"), uri);
return NULL;
}
@@ -710,7 +696,7 @@ e_book_client_set_default_source (ESource *source, GError **error)
if (res)
res = e_source_list_sync (source_list, error);
else
- g_set_error (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_INVALID_ARG,
+ g_set_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG,
_("There was no source for UID '%s' stored in a source list."), e_source_peek_uid (source));
g_object_unref (source_list);
@@ -941,7 +927,7 @@ book_client_open_sync (EClient *client, gboolean only_if_exists, GCancellable *c
g_return_val_if_fail (book_client->priv != NULL, FALSE);
if (!book_client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -975,7 +961,7 @@ book_client_remove_sync (EClient *client, GCancellable *cancellable, GError **er
g_return_val_if_fail (book_client->priv != NULL, FALSE);
if (!book_client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1075,7 +1061,7 @@ e_book_client_get_capabilities_sync (EBookClient *client, GSList **capabilities,
g_return_val_if_fail (capabilities != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1178,7 +1164,7 @@ e_book_client_get_required_fields_sync (EBookClient *client, GSList **fields, GC
g_return_val_if_fail (fields != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1280,7 +1266,7 @@ e_book_client_get_supported_fields_sync (EBookClient *client, GSList **fields, G
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1378,7 +1364,7 @@ e_book_client_get_supported_auth_methods_sync (EBookClient *client, GSList **aut
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1498,7 +1484,7 @@ e_book_client_add_contact_sync (EBookClient *client, const EContact *contact, gc
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1600,7 +1586,7 @@ e_book_client_modify_contact_sync (EBookClient *client, const EContact *contact,
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1701,7 +1687,7 @@ e_book_client_remove_contact_sync (EBookClient *client, const EContact *contact,
g_return_val_if_fail (E_IS_CONTACT (contact), FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1803,7 +1789,7 @@ e_book_client_remove_contact_by_uid_sync (EBookClient *client, const gchar *uid,
g_return_val_if_fail (uid != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1906,7 +1892,7 @@ e_book_client_remove_contacts_sync (EBookClient *client, const GSList *uids, GCa
g_return_val_if_fail (uids != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2021,7 +2007,7 @@ e_book_client_get_contact_sync (EBookClient *client, const gchar *uid, EContact
g_return_val_if_fail (contact != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2151,7 +2137,7 @@ e_book_client_get_contacts_sync (EBookClient *client, const EBookQuery *query, G
g_return_val_if_fail (contacts != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2247,7 +2233,7 @@ complete_get_view (EBookClient *client, gboolean res, gchar *view_path, EBookVie
}
if (!*book_view && error && !*error)
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("Cannot get connection to view"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("Cannot get connection to view"));
g_free (view_path);
@@ -2312,7 +2298,7 @@ e_book_client_get_view_sync (EBookClient *client, const EBookQuery *query, EBook
g_return_val_if_fail (book_view != NULL, FALSE);
if (!client->priv->gdbus_book) {
- g_set_error_literal (error, E_BOOK_CLIENT_ERROR, E_BOOK_CLIENT_ERROR_DBUS_ERROR, _("D-Bus book proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
diff --git a/addressbook/libebook/e-book-client.h b/addressbook/libebook/e-book-client.h
index 5e81e61..492d47a 100644
--- a/addressbook/libebook/e-book-client.h
+++ b/addressbook/libebook/e-book-client.h
@@ -44,31 +44,14 @@ G_BEGIN_DECLS
GQuark e_book_client_error_quark (void) G_GNUC_CONST;
typedef enum {
- E_BOOK_CLIENT_ERROR_SUCCESS,
- E_BOOK_CLIENT_ERROR_INVALID_ARG,
- E_BOOK_CLIENT_ERROR_BUSY,
- E_BOOK_CLIENT_ERROR_REPOSITORY_OFFLINE,
E_BOOK_CLIENT_ERROR_NO_SUCH_BOOK,
- E_BOOK_CLIENT_ERROR_NO_SELF_CONTACT,
- E_BOOK_CLIENT_ERROR_SOURCE_NOT_LOADED,
- E_BOOK_CLIENT_ERROR_SOURCE_ALREADY_LOADED,
- E_BOOK_CLIENT_ERROR_PERMISSION_DENIED,
E_BOOK_CLIENT_ERROR_CONTACT_NOT_FOUND,
E_BOOK_CLIENT_ERROR_CONTACT_ID_ALREADY_EXISTS,
- E_BOOK_CLIENT_ERROR_PROTOCOL_NOT_SUPPORTED,
- E_BOOK_CLIENT_ERROR_CANCELLED,
- E_BOOK_CLIENT_ERROR_COULD_NOT_CANCEL,
- E_BOOK_CLIENT_ERROR_AUTHENTICATION_FAILED,
- E_BOOK_CLIENT_ERROR_AUTHENTICATION_REQUIRED,
E_BOOK_CLIENT_ERROR_TLS_NOT_AVAILABLE,
- E_BOOK_CLIENT_ERROR_DBUS_ERROR,
E_BOOK_CLIENT_ERROR_NO_SUCH_SOURCE,
E_BOOK_CLIENT_ERROR_OFFLINE_UNAVAILABLE,
- E_BOOK_CLIENT_ERROR_OTHER_ERROR,
- E_BOOK_CLIENT_ERROR_INVALID_SERVER_VERSION,
E_BOOK_CLIENT_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD,
- E_BOOK_CLIENT_ERROR_NO_SPACE,
- E_BOOK_CLIENT_ERROR_NOT_SUPPORTED
+ E_BOOK_CLIENT_ERROR_NO_SPACE
} EBookClientError;
const gchar *e_book_client_error_to_string (EBookClientError code);
diff --git a/calendar/libecal/e-cal-client.c b/calendar/libecal/e-cal-client.c
index 280cd0e..5c5ae26 100644
--- a/calendar/libecal/e-cal-client.c
+++ b/calendar/libecal/e-cal-client.c
@@ -107,48 +107,16 @@ const gchar *
e_cal_client_error_to_string (ECalClientError code)
{
switch (code) {
- case E_CAL_CLIENT_ERROR_SUCCESS:
- return C_("CalClientError", "Success");
- case E_CAL_CLIENT_ERROR_INVALID_ARG:
- return C_("CalClientError", "Invalid argument");
- case E_CAL_CLIENT_ERROR_BUSY:
- return C_("CalClientError", "Backend is busy");
- case E_CAL_CLIENT_ERROR_REPOSITORY_OFFLINE:
- return C_("CalClientError", "Repository offline");
case E_CAL_CLIENT_ERROR_NO_SUCH_CALENDAR:
return C_("CalClientError", "No such calendar");
case E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND:
return C_("CalClientError", "Object not found");
case E_CAL_CLIENT_ERROR_INVALID_OBJECT:
return C_("CalClientError", "Invalid object");
- case E_CAL_CLIENT_ERROR_SOURCE_NOT_LOADED:
- return C_("CalClientError", "Source not loaded");
- case E_CAL_CLIENT_ERROR_SOURCE_ALREADY_LOADED:
- return C_("CalClientError", "Source already loaded");
- case E_CAL_CLIENT_ERROR_PERMISSION_DENIED:
- return C_("CalClientError", "Permission denied");
case E_CAL_CLIENT_ERROR_UNKNOWN_USER:
return C_("CalClientError", "Unknown user");
case E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS:
return C_("CalClientError", "Object ID already exists");
- case E_CAL_CLIENT_ERROR_PROTOCOL_NOT_SUPPORTED:
- return C_("CalClientError", "Protocol not supported");
- case E_CAL_CLIENT_ERROR_CANCELLED:
- return C_("CalClientError", "Cancelled");
- case E_CAL_CLIENT_ERROR_COULD_NOT_CANCEL:
- return C_("CalClientError", "Could not cancel");
- case E_CAL_CLIENT_ERROR_AUTHENTICATION_FAILED:
- return C_("CalClientError", "Authentication failed");
- case E_CAL_CLIENT_ERROR_AUTHENTICATION_REQUIRED:
- return C_("CalClientError", "Authentication required");
- case E_CAL_CLIENT_ERROR_INVALID_SERVER_VERSION:
- return C_("CalClientError", "Invalid server version");
- case E_CAL_CLIENT_ERROR_DBUS_ERROR:
- return C_("CalClientError", "D-Bus error");
- case E_CAL_CLIENT_ERROR_OTHER_ERROR:
- return C_("CalClientError", "Other error");
- case E_CAL_CLIENT_ERROR_NOT_SUPPORTED:
- return C_("CalClientError", "Not supported");
}
return C_("CalClientError", "Unknown error");
@@ -158,44 +126,48 @@ e_cal_client_error_to_string (ECalClientError code)
* If the GError is a remote error, extract the ECalClientError embedded inside.
* Otherwise return DBUS_ERROR.
*/
-static ECalClientError
-get_client_error_from_gerror (GError *error)
+static void
+get_client_error_from_gerror (GError *error, GError **client_error)
{
#define err(a,b) "org.gnome.evolution.dataserver.Calendar." a, b
static struct {
const gchar *name;
ECalClientError err_code;
- } errors[] = {
- { err ("Success", E_CAL_CLIENT_ERROR_SUCCESS) },
- { err ("RepositoryOffline", E_CAL_CLIENT_ERROR_REPOSITORY_OFFLINE) },
- { err ("PermissionDenied", E_CAL_CLIENT_ERROR_PERMISSION_DENIED) },
- { err ("InvalidRange", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
+ } cal_errors[] = {
+ { err ("Success", -1) },
{ err ("ObjectNotFound", E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND) },
{ err ("InvalidObject", E_CAL_CLIENT_ERROR_INVALID_OBJECT) },
{ err ("ObjectIdAlreadyExists", E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS) },
- { err ("AuthenticationFailed", E_CAL_CLIENT_ERROR_AUTHENTICATION_FAILED) },
- { err ("AuthenticationRequired", E_CAL_CLIENT_ERROR_AUTHENTICATION_REQUIRED) },
- { err ("UnsupportedField", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("UnsupportedMethod", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("UnsupportedAuthenticationMethod", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("TLSNotAvailable", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
{ err ("NoSuchCal", E_CAL_CLIENT_ERROR_NO_SUCH_CALENDAR) },
{ err ("UnknownUser", E_CAL_CLIENT_ERROR_UNKNOWN_USER) },
- { err ("OfflineUnavailable", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("SearchSizeLimitExceeded", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("SearchTimeLimitExceeded", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("InvalidQuery", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("QueryRefused", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("CouldNotCancel", E_CAL_CLIENT_ERROR_COULD_NOT_CANCEL) },
- { err ("OtherError", E_CAL_CLIENT_ERROR_OTHER_ERROR) },
- { err ("InvalidServerVersion", E_CAL_CLIENT_ERROR_INVALID_SERVER_VERSION) },
- { err ("InvalidArg", E_CAL_CLIENT_ERROR_INVALID_ARG) },
- { err ("NotSupported", E_CAL_CLIENT_ERROR_NOT_SUPPORTED) }
+ }, cl_errors[] = {
+ { err ("InvalidArg", E_CLIENT_ERROR_INVALID_ARG) },
+ { err ("RepositoryOffline", E_CLIENT_ERROR_REPOSITORY_OFFLINE) },
+ { err ("PermissionDenied", E_CLIENT_ERROR_PERMISSION_DENIED) },
+ { err ("AuthenticationFailed", E_CLIENT_ERROR_AUTHENTICATION_FAILED) },
+ { err ("AuthenticationRequired", E_CLIENT_ERROR_AUTHENTICATION_REQUIRED) },
+ { err ("CouldNotCancel", E_CLIENT_ERROR_COULD_NOT_CANCEL) },
+ { err ("NotSupported", E_CLIENT_ERROR_NOT_SUPPORTED) },
+ { err ("InvalidRange", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("UnsupportedField", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("UnsupportedMethod", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("UnsupportedAuthenticationMethod", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("TLSNotAvailable", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("OfflineUnavailable", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("SearchSizeLimitExceeded", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("SearchTimeLimitExceeded", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("InvalidQuery", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("QueryRefused", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("InvalidServerVersion", E_CLIENT_ERROR_OTHER_ERROR) },
+ { err ("OtherError", E_CLIENT_ERROR_OTHER_ERROR) }
};
#undef err
+ g_return_if_fail (client_error != NULL);
+ g_return_if_fail (*client_error == NULL);
+
if G_LIKELY (error == NULL)
- return E_CAL_CLIENT_ERROR_SUCCESS;
+ return;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
gchar *name;
@@ -203,24 +175,40 @@ get_client_error_from_gerror (GError *error)
name = g_dbus_error_get_remote_error (error);
- for (i = 0; i < G_N_ELEMENTS (errors); i++) {
- if (g_ascii_strcasecmp (errors[i].name, name) == 0) {
+ for (i = 0; i < G_N_ELEMENTS (cal_errors); i++) {
+ if (g_ascii_strcasecmp (cal_errors[i].name, name) == 0) {
+ g_free (name);
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_CAL_CLIENT_ERROR, cal_errors[i].err_code, error->message);
+ return;
+ }
+ }
+
+ for (i = 0; i < G_N_ELEMENTS (cl_errors); i++) {
+ if (g_ascii_strcasecmp (cl_errors[i].name, name) == 0) {
g_free (name);
- return errors[i].err_code;
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, cl_errors[i].err_code, error->message);
+ return;
}
}
g_warning (G_STRLOC ": Unmatched error name %s", name);
g_free (name);
- return E_CAL_CLIENT_ERROR_OTHER_ERROR;
- } else if (error->domain == E_CAL_CLIENT_ERROR) {
- return error->code;
+ g_dbus_error_strip_remote_error (error);
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR, error->message);
+ } else if (error->domain == E_CAL_CLIENT_ERROR || error->domain == E_CLIENT_ERROR) {
+ *client_error = g_error_copy (error);
} else {
/* In this case the error was caused by DBus. Dump the message to the
console as otherwise we have no idea what the problem is. */
g_debug ("DBus error: %s", error->message);
- return E_CAL_CLIENT_ERROR_DBUS_ERROR;
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, error->message);
}
}
@@ -236,14 +224,8 @@ unwrap_dbus_error (GError *error, GError **client_error)
return TRUE;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
- if (client_error) {
- gint code;
-
- code = get_client_error_from_gerror (error);
- g_dbus_error_strip_remote_error (error);
-
- *client_error = g_error_new_literal (E_CAL_CLIENT_ERROR, code, error->message);
- }
+ if (client_error)
+ get_client_error_from_gerror (error, client_error);
g_error_free (error);
} else {
@@ -259,6 +241,12 @@ unwrap_dbus_error (GError *error, GError **client_error)
return FALSE;
}
+static void
+set_proxy_gone_error (GError **error)
+{
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+}
+
static guint active_cal_clients = 0, cal_connection_closed_id = 0;
static EGdbusCalFactory *cal_factory_proxy = NULL;
static GStaticRecMutex cal_factory_proxy_lock = G_STATIC_REC_MUTEX_INIT;
@@ -560,7 +548,7 @@ e_cal_client_new (ESource *source, ECalClientSourceType source_type, GError **er
g_propagate_error (error, err);
} else {
g_warning ("%s: Failed to run calendar factory: Unknown error", G_STRFUNC);
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("Failed to run calendar factory"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("Failed to run calendar factory"));
}
return NULL;
@@ -569,14 +557,14 @@ e_cal_client_new (ESource *source, ECalClientSourceType source_type, GError **er
xml = e_source_to_standalone_xml (source);
if (!xml || !*xml) {
g_free (xml);
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, _("Invalid source"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, _("Invalid source"));
return NULL;
}
strv = e_gdbus_cal_factory_encode_get_cal (xml, convert_type (source_type));
if (!strv) {
g_free (xml);
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_OTHER_ERROR, _("Other error"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR, _("Other error"));
return NULL;
}
@@ -677,7 +665,7 @@ e_cal_client_new_from_uri (const gchar *uri, ECalClientSourceType source_type, G
if (!source) {
g_object_unref (source_list);
- g_set_error (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, _("Incorrect uri '%s'"), uri);
+ g_set_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, _("Incorrect uri '%s'"), uri);
return NULL;
}
@@ -824,7 +812,7 @@ e_cal_client_set_default_source (ESource *source, ECalClientSourceType source_ty
if (res)
res = e_source_list_sync (source_list, error);
else
- g_set_error (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG,
+ g_set_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG,
_("There was no source for UID '%s' stored in a source list."), e_source_peek_uid (source));
g_object_unref (source_list);
@@ -864,7 +852,7 @@ e_cal_client_get_sources (ESourceList **sources, ECalClientSourceType source_typ
key = "/apps/evolution/memos/sources";
break;
default:
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, _("Invalid source type"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, _("Invalid source type"));
return FALSE;
}
@@ -1820,7 +1808,7 @@ cal_client_open_sync (EClient *client, gboolean only_if_exists, GCancellable *ca
g_return_val_if_fail (cal_client->priv != NULL, FALSE);
if (!cal_client->priv->gdbus_cal) {
- g_set_error (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1854,7 +1842,7 @@ cal_client_remove_sync (EClient *client, GCancellable *cancellable, GError **err
g_return_val_if_fail (cal_client->priv != NULL, FALSE);
if (!cal_client->priv->gdbus_cal) {
- g_set_error (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1954,7 +1942,7 @@ e_cal_client_get_capabilities_sync (ECalClient *client, GSList **capabilities, G
g_return_val_if_fail (capabilities != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -1989,7 +1977,7 @@ complete_string_exchange (gboolean res, gchar *out_string, gchar **result, GErro
res = FALSE;
if (error && !*error)
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, e_cal_client_error_to_string (E_CAL_CLIENT_ERROR_INVALID_ARG));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, e_client_error_to_string (E_CLIENT_ERROR_INVALID_ARG));
}
return res;
@@ -2073,7 +2061,7 @@ e_cal_client_get_cal_email_address_sync (ECalClient *client, gchar **address, GC
g_return_val_if_fail (address != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2160,7 +2148,7 @@ e_cal_client_get_alarm_email_address_sync (ECalClient *client, gchar **address,
g_return_val_if_fail (address != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2270,7 +2258,7 @@ e_cal_client_get_default_object_sync (ECalClient *client, icalcomponent **icalco
g_return_val_if_fail (icalcomp != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2341,7 +2329,7 @@ e_cal_client_refresh_sync (ECalClient *client, GCancellable *cancellable, GError
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2443,7 +2431,7 @@ e_cal_client_get_object_sync (ECalClient *client, const gchar *uid, const gchar
g_return_val_if_fail (icalcomp != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2603,7 +2591,7 @@ e_cal_client_get_objects_for_uid_sync (ECalClient *client, const gchar *uid, GSL
g_return_val_if_fail (ecalcomps != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2737,7 +2725,7 @@ e_cal_client_get_object_list_sync (ECalClient *client, const gchar *sexp, GSList
g_return_val_if_fail (icalcomps != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2875,7 +2863,7 @@ e_cal_client_get_object_list_as_comps_sync (ECalClient *client, const gchar *sex
g_return_val_if_fail (ecalcomps != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -2974,7 +2962,7 @@ e_cal_client_get_free_busy_sync (ECalClient *client, time_t start, time_t end, c
g_return_val_if_fail (users != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3084,7 +3072,7 @@ e_cal_client_create_object_sync (ECalClient *client, const icalcomponent *icalco
g_return_val_if_fail (uid != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3194,7 +3182,7 @@ e_cal_client_modify_object_sync (ECalClient *client, const icalcomponent *icalco
g_return_val_if_fail (icalcomp != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3301,7 +3289,7 @@ e_cal_client_remove_object_sync (ECalClient *client, const gchar *uid, const gch
g_return_val_if_fail (uid != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3398,7 +3386,7 @@ e_cal_client_receive_objects_sync (ECalClient *client, const icalcomponent *ical
g_return_val_if_fail (client->priv != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3471,7 +3459,7 @@ complete_send_objects (gboolean res, gchar **out_strv, GSList **users, icalcompo
res = FALSE;
}
} else {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, e_cal_client_error_to_string (E_CAL_CLIENT_ERROR_INVALID_ARG));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, e_client_error_to_string (E_CLIENT_ERROR_INVALID_ARG));
e_client_util_free_string_slist (*users);
*users = NULL;
res = FALSE;
@@ -3550,7 +3538,7 @@ e_cal_client_send_objects_sync (ECalClient *client, const icalcomponent *icalcom
g_return_val_if_fail (modified_icalcomp != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3666,7 +3654,7 @@ e_cal_client_get_attachment_uris_sync (ECalClient *client, const gchar *uid, con
g_return_val_if_fail (attachment_uris != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -3752,7 +3740,7 @@ complete_get_view (ECalClient *client, gboolean res, gchar *view_path, ECalView
}
if (!*cal_view && error && !*error)
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("Cannot get connection to view"));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_DBUS_ERROR, _("Cannot get connection to view"));
g_free (view_path);
@@ -3817,7 +3805,7 @@ e_cal_client_get_view_sync (ECalClient *client, const gchar *sexp, ECalView **ca
g_return_val_if_fail (cal_view != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -4082,7 +4070,7 @@ e_cal_client_get_timezone_sync (ECalClient *client, const gchar *tzid, icaltimez
g_return_val_if_fail (zone != NULL, FALSE);
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
@@ -4189,12 +4177,12 @@ e_cal_client_add_timezone_sync (ECalClient *client, const icaltimezone *zone, GC
icalcomp = icaltimezone_get_component ((icaltimezone *) zone);
if (!icalcomp) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_INVALID_ARG, e_cal_client_error_to_string (E_CAL_CLIENT_ERROR_INVALID_ARG));
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_INVALID_ARG, e_client_error_to_string (E_CLIENT_ERROR_INVALID_ARG));
return FALSE;
}
if (!client->priv->gdbus_cal) {
- g_set_error_literal (error, E_CAL_CLIENT_ERROR, E_CAL_CLIENT_ERROR_DBUS_ERROR, _("D-Bus calendar proxy gone"));
+ set_proxy_gone_error (error);
return FALSE;
}
diff --git a/calendar/libecal/e-cal-client.h b/calendar/libecal/e-cal-client.h
index 2802add..2adeae9 100644
--- a/calendar/libecal/e-cal-client.h
+++ b/calendar/libecal/e-cal-client.h
@@ -53,27 +53,11 @@ GType e_cal_client_source_type_enum_get_type (void);
GQuark e_cal_client_error_quark (void) G_GNUC_CONST;
typedef enum {
- E_CAL_CLIENT_ERROR_SUCCESS,
- E_CAL_CLIENT_ERROR_INVALID_ARG,
- E_CAL_CLIENT_ERROR_BUSY,
- E_CAL_CLIENT_ERROR_REPOSITORY_OFFLINE,
E_CAL_CLIENT_ERROR_NO_SUCH_CALENDAR,
E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND,
E_CAL_CLIENT_ERROR_INVALID_OBJECT,
- E_CAL_CLIENT_ERROR_SOURCE_NOT_LOADED,
- E_CAL_CLIENT_ERROR_SOURCE_ALREADY_LOADED,
- E_CAL_CLIENT_ERROR_PERMISSION_DENIED,
E_CAL_CLIENT_ERROR_UNKNOWN_USER,
- E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS,
- E_CAL_CLIENT_ERROR_PROTOCOL_NOT_SUPPORTED,
- E_CAL_CLIENT_ERROR_CANCELLED,
- E_CAL_CLIENT_ERROR_COULD_NOT_CANCEL,
- E_CAL_CLIENT_ERROR_AUTHENTICATION_FAILED,
- E_CAL_CLIENT_ERROR_AUTHENTICATION_REQUIRED,
- E_CAL_CLIENT_ERROR_INVALID_SERVER_VERSION,
- E_CAL_CLIENT_ERROR_DBUS_ERROR,
- E_CAL_CLIENT_ERROR_OTHER_ERROR,
- E_CAL_CLIENT_ERROR_NOT_SUPPORTED
+ E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS
} ECalClientError;
const gchar *e_cal_client_error_to_string (ECalClientError code);
diff --git a/libedataserver/e-client.c b/libedataserver/e-client.c
index 3f72f05..a8018a6 100644
--- a/libedataserver/e-client.c
+++ b/libedataserver/e-client.c
@@ -24,6 +24,7 @@
#endif
#include <glib.h>
+#include <glib/gi18n-lib.h>
#include <gio/gio.h>
#include "e-gdbus-marshallers.h"
@@ -69,6 +70,52 @@ static EOperationPool *ops_pool = NULL;
G_DEFINE_ABSTRACT_TYPE (EClient, e_client, G_TYPE_OBJECT)
+GQuark
+e_client_error_quark (void)
+{
+ static GQuark q = 0;
+
+ if (q == 0)
+ q = g_quark_from_static_string ("e-client-error-quark");
+
+ return q;
+}
+
+const gchar *
+e_client_error_to_string (EClientError code)
+{
+ switch (code) {
+ case E_CLIENT_ERROR_INVALID_ARG:
+ return C_("ClientError", "Invalid argument");
+ case E_CLIENT_ERROR_BUSY:
+ return C_("ClientError", "Backend is busy");
+ case E_CLIENT_ERROR_SOURCE_NOT_LOADED:
+ return C_("ClientError", "Source not loaded");
+ case E_CLIENT_ERROR_SOURCE_ALREADY_LOADED:
+ return C_("ClientError", "Source already loaded");
+ case E_CLIENT_ERROR_AUTHENTICATION_FAILED:
+ return C_("ClientError", "Authentication failed");
+ case E_CLIENT_ERROR_AUTHENTICATION_REQUIRED:
+ return C_("ClientError", "Authentication required");
+ case E_CLIENT_ERROR_REPOSITORY_OFFLINE:
+ return C_("ClientError", "Repository offline");
+ case E_CLIENT_ERROR_PERMISSION_DENIED:
+ return C_("ClientError", "Permission denied");
+ case E_CLIENT_ERROR_CANCELLED:
+ return C_("ClientError", "Cancelled");
+ case E_CLIENT_ERROR_COULD_NOT_CANCEL:
+ return C_("ClientError", "Could not cancel");
+ case E_CLIENT_ERROR_NOT_SUPPORTED:
+ return C_("ClientError", "Not supported");
+ case E_CLIENT_ERROR_DBUS_ERROR:
+ return C_("ClientError", "D-Bus error");
+ case E_CLIENT_ERROR_OTHER_ERROR:
+ return C_("ClientError", "Other error");
+ }
+
+ return C_("ClientError", "Unknown error");
+}
+
static void client_set_source (EClient *client, ESource *source);
static void client_operation_thread (gpointer data, gpointer user_data);
static void client_handle_authentication (EClient *client, const ECredentials *credentials);
diff --git a/libedataserver/e-client.h b/libedataserver/e-client.h
index 1d89638..f341d66 100644
--- a/libedataserver/e-client.h
+++ b/libedataserver/e-client.h
@@ -36,6 +36,28 @@
#define E_IS_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_CLIENT))
#define E_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_CLIENT, EClientClass))
+#define E_CLIENT_ERROR e_client_error_quark ()
+
+GQuark e_client_error_quark (void) G_GNUC_CONST;
+
+typedef enum {
+ E_CLIENT_ERROR_INVALID_ARG,
+ E_CLIENT_ERROR_BUSY,
+ E_CLIENT_ERROR_SOURCE_NOT_LOADED,
+ E_CLIENT_ERROR_SOURCE_ALREADY_LOADED,
+ E_CLIENT_ERROR_AUTHENTICATION_FAILED,
+ E_CLIENT_ERROR_AUTHENTICATION_REQUIRED,
+ E_CLIENT_ERROR_REPOSITORY_OFFLINE,
+ E_CLIENT_ERROR_PERMISSION_DENIED,
+ E_CLIENT_ERROR_CANCELLED,
+ E_CLIENT_ERROR_COULD_NOT_CANCEL,
+ E_CLIENT_ERROR_NOT_SUPPORTED,
+ E_CLIENT_ERROR_DBUS_ERROR,
+ E_CLIENT_ERROR_OTHER_ERROR
+} EClientError;
+
+const gchar *e_client_error_to_string (EClientError code);
+
typedef struct _EClient EClient;
typedef struct _EClientClass EClientClass;
typedef struct _EClientPrivate EClientPrivate;
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ba78aea..bb5f689 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -191,6 +191,7 @@ libedataserverui/e-book-auth-util.c
libedataserverui/e-categories-dialog.c
libedataserverui/e-category-completion.c
libedataserverui/e-cell-renderer-color.c
+libedataserverui/e-client.c
libedataserverui/e-client-authenticate.c
libedataserverui/e-name-selector-dialog.c
libedataserverui/e-name-selector-entry.c
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]