diff options
-rw-r--r-- | calendar/ChangeLog | 19 | ||||
-rw-r--r-- | calendar/cal-client/cal-client.c | 31 | ||||
-rw-r--r-- | calendar/cal-client/cal-client.h | 1 | ||||
-rw-r--r-- | calendar/gui/calendar-model.c | 6 | ||||
-rw-r--r-- | calendar/gui/e-day-view.c | 7 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 71 | ||||
-rw-r--r-- | calendar/gui/event-editor.c | 67 |
7 files changed, 95 insertions, 107 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index e7a2c75733..b9e445c2ec 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,22 @@ +2000-08-31 Federico Mena Quintero <federico@helixcode.com> + + * gui/event-editor.c (file_delete_cb): No need to spit a warning + if removal fails. + (event_editor_destroy): Free the exception clist data. Unref the + calendar client here. + (close_dialog): Just call gtk_object_destroy() on the event + editor; the destroy handler will free everything else. + + * cal-client/cal-client.c (cal_client_object_exists): Removed + function; this is not useful because we operate asynchronously. + + * gui/e-day-view.c (e_day_view_on_delete_appointment): No need to + spit a warning if removal fails. + + * gui/e-week-view.c (e_week_view_on_delete_appointment): Likewise. + + * gui/calendar-model.c (calendar_model_delete_task): Likewise. + 2000-08-31 JP Rosevear <jpr@helixcode.com> * gui/event-editor.c (file_delete_cb): Implement delete option diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c index d64026d6b2..65c0c4aea4 100644 --- a/calendar/cal-client/cal-client.c +++ b/calendar/cal-client/cal-client.c @@ -605,37 +605,6 @@ cal_client_get_n_objects (CalClient *client, CalObjType type) } /** - * cal_client_object_exists: - * @client: A calendar client - * @uid: Unique identifier for a calendar component - * - * Checks to see if a uid exists in the backend - * - * Return value: True or false if uid exists and can be obtained - **/ -gboolean -cal_client_object_exists (CalClient *client, const char *uid) -{ - CalComponent *comp; - CalClientGetStatus status; - - status = cal_client_get_object (client, uid, &comp); - - switch (status) { - case CAL_CLIENT_GET_SUCCESS: - gtk_object_unref (GTK_OBJECT (comp)); - return TRUE; - - case CAL_CLIENT_GET_SYNTAX_ERROR: - case CAL_CLIENT_GET_NOT_FOUND: - return FALSE; - - default: - g_assert_not_reached (); - } -} - -/** * cal_client_get_object: * @client: A calendar client. * @uid: Unique identifier for a calendar component. diff --git a/calendar/cal-client/cal-client.h b/calendar/cal-client/cal-client.h index bc08b2497a..6747c7488e 100644 --- a/calendar/cal-client/cal-client.h +++ b/calendar/cal-client/cal-client.h @@ -88,7 +88,6 @@ gboolean cal_client_is_loaded (CalClient *client); int cal_client_get_n_objects (CalClient *client, CalObjType type); -gboolean cal_client_object_exists (CalClient *client, const char *uid); CalClientGetStatus cal_client_get_object (CalClient *client, const char *uid, CalComponent **comp); diff --git a/calendar/gui/calendar-model.c b/calendar/gui/calendar-model.c index 8a6eae5445..51f2c28a35 100644 --- a/calendar/gui/calendar-model.c +++ b/calendar/gui/calendar-model.c @@ -1763,8 +1763,10 @@ calendar_model_delete_task (CalendarModel *model, cal_component_get_uid (comp, &uid); - if (!cal_client_remove_object (priv->client, uid)) - g_message ("calendar_model_delete_task(): Could not remove the object!"); + /* We don't check the return value; FALSE can mean the object was not in + * the server anyways. + */ + cal_client_remove_object (priv->client, uid); } diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 32d9380bb5..6377779497 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -2670,8 +2670,11 @@ e_day_view_on_delete_appointment (GtkWidget *widget, gpointer data) e_day_view_stop_editing_event (day_view); cal_component_get_uid (event->comp, &uid); - if (!cal_client_remove_object (day_view->client, uid)) - g_message ("e_day_view_on_delete_appointment(): Could not remove the object!"); + + /* We don't check the return value; FALSE can mean the object was not in + * the server anyways. + */ + cal_client_remove_object (day_view->client, uid); } diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 04da509a92..a3a3e684d8 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -1,13 +1,13 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Author : +/* + * Author : * Damon Chaplin <damon@helixcode.com> * * Copyright 1999, Helix Code, Inc. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * @@ -522,7 +522,7 @@ e_week_view_style_set (GtkWidget *widget, day_width = gdk_string_width (font, buffer); week_view->day_widths[day] = day_width; max_day_width = MAX (max_day_width, day_width); - + g_date_strftime (buffer, 128, "%a", &date); day_width = gdk_string_width (font, buffer); week_view->abbr_day_widths[day] = day_width; @@ -540,7 +540,7 @@ e_week_view_style_set (GtkWidget *widget, month_width = gdk_string_width (font, buffer); week_view->month_widths[month] = month_width; max_month_width = MAX (max_month_width, month_width); - + g_date_strftime (buffer, 128, "%b", &date); month_width = gdk_string_width (font, buffer); week_view->abbr_month_widths[month] = month_width; @@ -904,7 +904,7 @@ obj_updated_cb (CalClient *client, const char *uid, gpointer data) /* Add the occurrences of the event. */ num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7; - cal_recur_generate_instances (comp, + cal_recur_generate_instances (comp, week_view->day_starts[0], week_view->day_starts[num_days], e_week_view_add_event, @@ -937,7 +937,7 @@ obj_removed_cb (CalClient *client, const char *uid, gpointer data) * e_week_view_set_cal_client: * @week_view: A week view. * @client: A calendar client interface object. - * + * * Sets the calendar client interface object that a week view will monitor. **/ void @@ -1348,13 +1348,13 @@ e_week_view_update_event_cb (EWeekView *week_view, if (span->text_item) { CalComponentText t; - + cal_component_get_summary (event->comp, &t); text = (char*) t.value; gnome_canvas_item_set (span->text_item, "text", text ? text : "", NULL); - + e_week_view_reshape_event_span (week_view, event_num, span_num); } @@ -1376,7 +1376,7 @@ e_week_view_foreach_event_with_uid (EWeekView *week_view, { EWeekViewEvent *event; gint event_num; - + for (event_num = week_view->events->len - 1; event_num >= 0; event_num--) { @@ -1384,7 +1384,7 @@ e_week_view_foreach_event_with_uid (EWeekView *week_view, event = &g_array_index (week_view->events, EWeekViewEvent, event_num); - + cal_component_get_uid (event->comp, &u); if (u && !strcmp (uid, u)) { if (!(*callback) (week_view, event_num, data)) @@ -1409,7 +1409,7 @@ e_week_view_remove_event_cb (EWeekView *week_view, on_editing_stopped doesn't try to update the event. */ if (week_view->editing_event_num == event_num) week_view->editing_event_num = -1; - + /* We leave the span elements in the array, but set the canvas item pointers to NULL. */ for (span_num = 0; span_num < event->num_spans; span_num++) { @@ -1835,7 +1835,7 @@ e_week_view_reload_events (EWeekView *week_view) && g_date_valid (&week_view->first_day_shown)) { num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7; - + cal_client_generate_instances (week_view->client, CALOBJ_TYPE_EVENT, week_view->day_starts[0], @@ -2264,7 +2264,7 @@ e_week_view_reshape_event_span (EWeekView *week_view, /* Create the text item if necessary. */ if (!span->text_item) { CalComponentText text; - + cal_component_get_summary (comp, &text); span->text_item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->main_canvas)->root), @@ -2433,7 +2433,7 @@ e_week_view_find_day (EWeekView *week_view, /* This returns the last day in the same span as the given day. A span is all - the days which are displayed next to each other from left to right. + the days which are displayed next to each other from left to right. In the week view all spans are only 1 day, since Tuesday is below Monday rather than beside it etc. In the month view, if the weekends are not compressed then each week is a span, otherwise Monday to Saturday of each @@ -2711,7 +2711,7 @@ e_week_view_on_editing_stopped (EWeekView *week_view, gchar *text = NULL; CalComponentText summary; const char *uid; - + /* Note: the item we are passed here isn't reliable, so we just stop the edit of whatever item was being edited. We also receive this event twice for some reason. */ @@ -2752,7 +2752,7 @@ e_week_view_on_editing_stopped (EWeekView *week_view, summary.value = text; cal_component_set_summary (event->comp, &summary); g_free (text); - + if (!cal_client_update_object (week_view->client, event->comp)) g_message ("e_week_view_on_editing_stopped(): Could not update the object!"); } @@ -2805,7 +2805,7 @@ e_week_view_find_event_from_uid (EWeekView *week_view, num_events = week_view->events->len; for (event_num = 0; event_num < num_events; event_num++) { const char *u; - + event = &g_array_index (week_view->events, EWeekViewEvent, event_num); @@ -2858,7 +2858,7 @@ e_week_view_key_press (GtkWidget *widget, GdkEventKey *event) struct icaltimetype itt; time_t dtstart, dtend; const char *uid; - + g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (E_IS_WEEK_VIEW (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); @@ -2896,7 +2896,7 @@ e_week_view_key_press (GtkWidget *widget, GdkEventKey *event) cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT); dtstart = week_view->day_starts[week_view->selection_start_day]; dtend = week_view->day_starts[week_view->selection_end_day + 1]; - + date.value = &itt; date.tzid = NULL; @@ -2908,7 +2908,7 @@ e_week_view_key_press (GtkWidget *widget, GdkEventKey *event) /* We add the event locally and start editing it. When we get the "update_event" callback from the server, we basically ignore it. If we were to wait for the "update_event" callback it wouldn't be - as responsive and we may lose a few keystrokes. */ + as responsive and we may lose a few keystrokes. */ e_week_view_add_event (comp, dtstart, dtend, week_view); e_week_view_check_layout (week_view); gtk_widget_queue_draw (week_view->main_canvas); @@ -2976,7 +2976,7 @@ e_week_view_show_popup_menu (EWeekView *week_view, We could possibly set up another method of checking it. */ not_being_edited = TRUE; - if (cal_component_has_rrules (event->comp) + if (cal_component_has_rrules (event->comp) || cal_component_has_rdates (event->comp)) { num_items = 6; context_menu = &recur_child_items[0]; @@ -3010,7 +3010,7 @@ e_week_view_on_new_appointment (GtkWidget *widget, gpointer data) CalComponentDateTime date; struct icaltimetype itt; time_t dt; - + week_view = E_WEEK_VIEW (data); comp = cal_component_new (); @@ -3060,7 +3060,7 @@ e_week_view_on_delete_occurrence (GtkWidget *widget, gpointer data) CalComponent *comp; CalComponentDateTime *date=NULL; GSList *list; - + week_view = E_WEEK_VIEW (data); if (week_view->popup_event_num == -1) @@ -3071,7 +3071,7 @@ e_week_view_on_delete_occurrence (GtkWidget *widget, gpointer data) /* We must duplicate the CalComponent, or we won't know it has changed when we get the "update_event" callback. */ - + comp = cal_component_clone (event->comp); cal_component_get_exdate_list (comp, &list); list = g_slist_append (list, date); @@ -3094,7 +3094,7 @@ e_week_view_on_delete_appointment (GtkWidget *widget, gpointer data) EWeekView *week_view; EWeekViewEvent *event; const char *uid; - + week_view = E_WEEK_VIEW (data); if (week_view->popup_event_num == -1) @@ -3102,10 +3102,13 @@ e_week_view_on_delete_appointment (GtkWidget *widget, gpointer data) event = &g_array_index (week_view->events, EWeekViewEvent, week_view->popup_event_num); - + cal_component_get_uid (event->comp, &uid); - if (!cal_client_remove_object (week_view->client, uid)) - g_message ("e_week_view_on_delete_appointment(): Could not remove the object!"); + + /* We don't check the return value; FALSE can mean the object was not in + * the server anyways. + */ + cal_client_remove_object (week_view->client, uid); } @@ -3120,15 +3123,15 @@ e_week_view_on_unrecur_appointment (GtkWidget *widget, gpointer data) GSList *list; week_view = E_WEEK_VIEW (data); - + if (week_view->popup_event_num == -1) return; event = &g_array_index (week_view->events, EWeekViewEvent, week_view->popup_event_num); - + date.value = &itt; - date.tzid = NULL; + date.tzid = NULL; /* For the recurring object, we add a exception to get rid of the instance. */ @@ -3153,7 +3156,7 @@ e_week_view_on_unrecur_appointment (GtkWidget *widget, gpointer data) cal_component_set_dtstart (new_comp, &date); *date.value = icaltime_from_timet (event->end, TRUE, FALSE); cal_component_set_dtend (new_comp, &date); - + /* Now update both CalComponents. Note that we do this last since at present the updates happen synchronously so our event may disappear. */ diff --git a/calendar/gui/event-editor.c b/calendar/gui/event-editor.c index 615395fdc1..b0202493f2 100644 --- a/calendar/gui/event-editor.c +++ b/calendar/gui/event-editor.c @@ -198,6 +198,23 @@ event_editor_init (EventEditor *ee) ee->priv = priv; } +/* Frees the rows and the row data in the recurrence exceptions GtkCList */ +static void +free_exception_clist_data (GtkCList *clist) +{ + int i; + + for (i = 0; i < clist->rows; i++) { + gpointer data; + + data = gtk_clist_get_row_data (clist, i); + g_free (data); + gtk_clist_set_row_data (clist, i, NULL); + } + + gtk_clist_clear (clist); +} + /* Destroy handler for the event editor */ static void event_editor_destroy (GtkObject *object) @@ -216,6 +233,8 @@ event_editor_destroy (GtkObject *object) priv->uih = NULL; } + free_exception_clist_data (GTK_CLIST (priv->recurrence_exceptions_list)); + if (priv->app) { gtk_signal_disconnect_by_data (GTK_OBJECT (priv->app), ee); gtk_widget_destroy (priv->app); @@ -227,6 +246,12 @@ event_editor_destroy (GtkObject *object) priv->comp = NULL; } + if (priv->client) { + gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), ee); + gtk_object_unref (GTK_OBJECT (priv->client)); + priv->client = NULL; + } + if (priv->xml) { gtk_object_unref (GTK_OBJECT (priv->xml)); priv->xml = NULL; @@ -455,23 +480,6 @@ recur_options_get (GtkWidget *widget) static const int month_pos_map[] = { 0, 1, 2, 3, 4, -1 }; static const int weekday_map[] = { 0, 1, 2, 3, 4, 5, 6, -1 }; -/* Frees the rows and the row data in the recurrence exceptions GtkCList */ -static void -free_exception_clist_data (GtkCList *clist) -{ - int i; - - for (i = 0; i < clist->rows; i++) { - gpointer data; - - data = gtk_clist_get_row_data (clist, i); - g_free (data); - gtk_clist_set_row_data (clist, i, NULL); - } - - gtk_clist_clear (clist); -} - /* Hooks the widget signals */ static void init_widgets (EventEditor *ee) @@ -1084,23 +1092,6 @@ close_dialog (EventEditor *ee) g_assert (priv->app != NULL); - free_exception_clist_data (GTK_CLIST (priv->recurrence_exceptions_list)); - - gtk_widget_destroy (priv->app); - priv->app = NULL; - - if (priv->comp) { - gtk_object_unref (GTK_OBJECT (priv->comp)); - priv->comp = NULL; - } - - if (priv->client) { - gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), ee); - gtk_object_unref (GTK_OBJECT (priv->client)); - priv->client = NULL; - } - - gtk_object_destroy (GTK_OBJECT (ee)); } @@ -1133,9 +1124,11 @@ file_delete_cb (GtkWidget *widget, gpointer data) g_return_if_fail (priv->comp); cal_component_get_uid (priv->comp, &uid); - if (cal_client_object_exists (priv->client, uid)) - if (!cal_client_remove_object (priv->client, uid)) - g_message ("file_delete_cb (): Could not remove the object!"); + + /* We don't check the return value; FALSE can mean the object was not in + * the server anyways. + */ + cal_client_remove_object (priv->client, uid); close_dialog (ee); } |