From 63ca6c19ab323142c1362afe95f6acf1259d2ecf Mon Sep 17 00:00:00 2001 From: Not Zed Date: Wed, 12 May 2004 03:32:19 +0000 Subject: add GError return for error details & return errors. 2004-05-11 Not Zed * gui/migration.c (migrate_calendars, migrate_tasks): add GError return for error details & return errors. * gui/calendar-component.c (impl_upgradeFromVersion): fix for api change, and erturn exception if we need to. svn path=/trunk/; revision=25865 --- calendar/ChangeLog | 8 ++++++++ calendar/gui/calendar-component.c | 15 ++++++++++++--- calendar/gui/migration.c | 39 +++++++++++++++++++++++++-------------- calendar/gui/migration.h | 6 ++++-- calendar/gui/tasks-component.c | 15 +++++++++++++-- 5 files changed, 62 insertions(+), 21 deletions(-) (limited to 'calendar') diff --git a/calendar/ChangeLog b/calendar/ChangeLog index ece744dd01..96b56aac6c 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,11 @@ +2004-05-11 Not Zed + + * gui/migration.c (migrate_calendars, migrate_tasks): add GError + return for error details & return errors. + + * gui/calendar-component.c (impl_upgradeFromVersion): fix for api + change, and erturn exception if we need to. + 2004-05-11 Rodrigo Moya * gui/e-itip-control.c (update_item): get error information from diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c index 28500e7001..74cd196560 100644 --- a/calendar/gui/calendar-component.c +++ b/calendar/gui/calendar-component.c @@ -606,18 +606,27 @@ conf_changed_callback (GConfClient *client, /* Evolution::Component CORBA methods. */ -static CORBA_boolean +static void impl_upgradeFromVersion (PortableServer_Servant servant, CORBA_short major, CORBA_short minor, CORBA_short revision, CORBA_Environment *ev) { + GError *err = NULL; CalendarComponent *calendar_component = CALENDAR_COMPONENT (bonobo_object_from_servant (servant)); - migrate_calendars (calendar_component, major, minor, revision); + if (!migrate_calendars (calendar_component, major, minor, revision, &err)) { + GNOME_Evolution_Component_UpgradeFailed *failedex; + + failedex = GNOME_Evolution_Component_UpgradeFailed__alloc(); + failedex->what = CORBA_string_dup(_("Failed upgrading calendars.")); + failedex->why = CORBA_string_dup(err->message); + CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Component_UpgradeFailed, failedex); + } - return CORBA_TRUE; + if (err) + g_error_free(err); } static gboolean diff --git a/calendar/gui/migration.c b/calendar/gui/migration.c index e1d6731ba4..fa449d5f17 100644 --- a/calendar/gui/migration.c +++ b/calendar/gui/migration.c @@ -669,11 +669,11 @@ migrate_pilot_data (const char *component, const char *conduit, const char *old_ } gboolean -migrate_calendars (CalendarComponent *component, int major, int minor, int revision) +migrate_calendars (CalendarComponent *component, int major, int minor, int revision, GError **err) { ESourceGroup *on_this_computer = NULL, *on_the_web = NULL, *contacts = NULL; ESource *personal_source = NULL; - gboolean retval = TRUE; + gboolean retval = FALSE; /* we call this unconditionally now - create_groups either creates the groups/sources or it finds the necessary @@ -704,8 +704,9 @@ migrate_calendars (CalendarComponent *component, int major, int minor, int revis xmlFreeDoc(config_doc); if (res != 0) { - g_warning("Could not move config from bonobo-conf to gconf"); - return FALSE; + /* FIXME: set proper domain/code */ + g_set_error(err, 0, 0, _("Unable to migrate old settings from evolution/config.xmldb")); + goto fail; } } @@ -731,8 +732,12 @@ migrate_calendars (CalendarComponent *component, int major, int minor, int revis source_name = get_source_name (on_this_computer, (char*)l->data); - if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_EVENT)) - retval = FALSE; + if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_EVENT)) { + /* FIXME: domain/code */ + g_set_error(err, 0, 0, _("Unable to migrate calendar `%s'"), source_name); + g_free(source_name); + goto fail; + } g_free (source_name); } @@ -781,7 +786,8 @@ migrate_calendars (CalendarComponent *component, int major, int minor, int revis } e_source_list_sync (calendar_component_peek_source_list (component), NULL); - + retval = TRUE; +fail: if (on_this_computer) g_object_unref (on_this_computer); if (on_the_web) @@ -795,12 +801,12 @@ migrate_calendars (CalendarComponent *component, int major, int minor, int revis } gboolean -migrate_tasks (TasksComponent *component, int major, int minor, int revision) +migrate_tasks (TasksComponent *component, int major, int minor, int revision, GError **err) { ESourceGroup *on_this_computer = NULL; ESourceGroup *on_the_web = NULL; ESource *personal_source = NULL; - gboolean retval = TRUE; + gboolean retval = FALSE; /* we call this unconditionally now - create_groups either creates the groups/sources or it finds the necessary @@ -831,8 +837,8 @@ migrate_tasks (TasksComponent *component, int major, int minor, int revision) xmlFreeDoc(config_doc); if (res != 0) { - g_warning("Could not move config from bonobo-conf to gconf"); - return FALSE; + g_set_error(err, 0, 0, _("Unable to migrate old settings from evolution/config.xmldb")); + goto fail; } } @@ -858,8 +864,12 @@ migrate_tasks (TasksComponent *component, int major, int minor, int revision) source_name = get_source_name (on_this_computer, (char*)l->data); - if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_TODO)) - retval = FALSE; + if (!migrate_ical_folder (l->data, on_this_computer, source_name, E_CAL_SOURCE_TYPE_TODO)) { + /* FIXME: domain/code */ + g_set_error(err, 0, 0, _("Unable to migrate tasks `%s'"), source_name); + g_free(source_name); + goto fail; + } g_free (source_name); } @@ -882,7 +892,8 @@ migrate_tasks (TasksComponent *component, int major, int minor, int revision) } e_source_list_sync (tasks_component_peek_source_list (component), NULL); - + retval = TRUE; +fail: if (on_this_computer) g_object_unref (on_this_computer); if (on_the_web) diff --git a/calendar/gui/migration.h b/calendar/gui/migration.h index b7047d0898..1092e30c14 100644 --- a/calendar/gui/migration.h +++ b/calendar/gui/migration.h @@ -27,7 +27,9 @@ #include "calendar-component.h" #include "tasks-component.h" -gboolean migrate_calendars (CalendarComponent *component, int major, int minor, int revision); -gboolean migrate_tasks (TasksComponent *component, int major, int minor, int revision); +struct _GError; + +gboolean migrate_calendars (CalendarComponent *component, int major, int minor, int revision, struct _GError **err); +gboolean migrate_tasks (TasksComponent *component, int major, int minor, int revision, struct _GError **err); #endif diff --git a/calendar/gui/tasks-component.c b/calendar/gui/tasks-component.c index d0b556095c..60559f825a 100644 --- a/calendar/gui/tasks-component.c +++ b/calendar/gui/tasks-component.c @@ -430,16 +430,27 @@ model_rows_deleted_cb (ETableModel *etm, int row, int count, TasksComponentView /* Evolution::Component CORBA methods */ -static CORBA_boolean +static void impl_upgradeFromVersion (PortableServer_Servant servant, CORBA_short major, CORBA_short minor, CORBA_short revision, CORBA_Environment *ev) { + GError *err = NULL; TasksComponent *component = TASKS_COMPONENT (bonobo_object_from_servant (servant)); - return migrate_tasks (component, major, minor, revision); + if (!migrate_tasks(component, major, minor, revision, &err)) { + GNOME_Evolution_Component_UpgradeFailed *failedex; + + failedex = GNOME_Evolution_Component_UpgradeFailed__alloc(); + failedex->what = CORBA_string_dup(_("Failed upgrading tasks.")); + failedex->why = CORBA_string_dup(err->message); + CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Component_UpgradeFailed, failedex); + } + + if (err) + g_error_free(err); } static void -- cgit v1.2.3