diff options
-rw-r--r-- | calendar/ChangeLog | 14 | ||||
-rw-r--r-- | calendar/gui/calendar-offline-handler.c | 40 |
2 files changed, 52 insertions, 2 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 9c6db47879..579e46986b 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -4,6 +4,20 @@ * gui/e-meeting-model.c (process_section): if the attendee is the empty string, try to get the email + +2003-02-18 JP Rosevear <jpr@ximian.com> + + * gui/calendar-offline-handler.c (backend_cal_opened_online): set + the backend to REMOTE mode when it opens + (backend_go_online): prepare to set calendar mode to REMOTE + (impl_goOnline): get all the local calendars and set to REMOTE + +2003-02-11 JP Rosevear <jpr@ximian.com> + + Fixes #37881 + + * gui/e-meeting-model.c (process_section): if the attendee is the + empty string, try to get the email 2003-03-04 JP Rosevear <jpr@ximian.com> diff --git a/calendar/gui/calendar-offline-handler.c b/calendar/gui/calendar-offline-handler.c index 694ade9882..97b015d970 100644 --- a/calendar/gui/calendar-offline-handler.c +++ b/calendar/gui/calendar-offline-handler.c @@ -146,7 +146,7 @@ backend_cal_set_mode (CalClient *client, CalClientSetModeStatus status, CalMode } static void -backend_cal_opened (CalClient *client, CalClientOpenStatus status, gpointer data) +backend_cal_opened_offline (CalClient *client, CalClientOpenStatus status, gpointer data) { CalendarOfflineHandler *offline_handler = data; @@ -161,6 +161,19 @@ backend_cal_opened (CalClient *client, CalClientOpenStatus status, gpointer data } static void +backend_cal_opened_online (CalClient *client, CalClientOpenStatus status, gpointer data) +{ + CalendarOfflineHandler *offline_handler = data; + + if (status != CAL_CLIENT_OPEN_SUCCESS) { + gtk_object_unref (GTK_OBJECT (client)); + return; + } + + cal_client_set_mode (client, CAL_MODE_REMOTE); +} + +static void backend_go_offline (gpointer data, gpointer user_data) { CalendarOfflineHandler *offline_handler = user_data; @@ -169,7 +182,7 @@ backend_go_offline (gpointer data, gpointer user_data) gboolean success; client = cal_client_new (); - g_signal_connect (client, "cal_opened", G_CALLBACK (backend_cal_opened), offline_handler); + g_signal_connect (client, "cal_opened", G_CALLBACK (backend_cal_opened_offline), offline_handler); success = cal_client_open_calendar (client, uri, TRUE); if (!success) { update_offline (offline_handler); @@ -179,6 +192,24 @@ backend_go_offline (gpointer data, gpointer user_data) } static void +backend_go_online (gpointer data, gpointer user_data) +{ + CalendarOfflineHandler *offline_handler = user_data; + char *uri = data; + CalClient *client; + gboolean success; + + client = cal_client_new (); + gtk_signal_connect (GTK_OBJECT (client), "cal_opened", + backend_cal_opened_online, offline_handler); + success = cal_client_open_calendar (client, uri, TRUE); + if (!success) { + gtk_object_unref (GTK_OBJECT (client)); + return; + } +} + +static void impl_goOffline (PortableServer_Servant servant, const GNOME_Evolution_OfflineProgressListener progress_listener, CORBA_Environment *ev) @@ -204,9 +235,14 @@ impl_goOnline (PortableServer_Servant servant, { CalendarOfflineHandler *offline_handler; CalendarOfflineHandlerPrivate *priv; + GList *uris; offline_handler = CALENDAR_OFFLINE_HANDLER (bonobo_object_from_servant (servant)); priv = offline_handler->priv; + + uris = cal_client_uri_list (priv->client, CAL_MODE_LOCAL); + + g_list_foreach (uris, backend_go_online, offline_handler); } /* GObject methods. */ |