aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2003-03-05 06:27:52 +0800
committerJP Rosevear <jpr@src.gnome.org>2003-03-05 06:27:52 +0800
commit3911413b09fda188e7cf13a1d25422b0722e102f (patch)
treec421cbfb46bb488c39c331d2330e9e5da5e84235 /calendar/gui
parentee4b08496dd5863d166e229c33d68f3c1176064a (diff)
downloadgsoc2013-evolution-3911413b09fda188e7cf13a1d25422b0722e102f.tar.gz
gsoc2013-evolution-3911413b09fda188e7cf13a1d25422b0722e102f.tar.zst
gsoc2013-evolution-3911413b09fda188e7cf13a1d25422b0722e102f.zip
Fixes #37881
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 svn path=/trunk/; revision=20161
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/calendar-offline-handler.c40
1 files changed, 38 insertions, 2 deletions
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. */