From 3911413b09fda188e7cf13a1d25422b0722e102f Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Tue, 4 Mar 2003 22:27:52 +0000 Subject: Fixes #37881 2003-02-11 JP Rosevear Fixes #37881 * gui/e-meeting-model.c (process_section): if the attendee is the empty string, try to get the email svn path=/trunk/; revision=20161 --- calendar/gui/calendar-offline-handler.c | 40 +++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'calendar/gui') 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; @@ -160,6 +160,19 @@ backend_cal_opened (CalClient *client, CalClientOpenStatus status, gpointer data cal_client_set_mode (client, CAL_MODE_LOCAL); } +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) { @@ -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); @@ -178,6 +191,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, @@ -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. */ -- cgit v1.2.3