diff options
-rw-r--r-- | calendar/ChangeLog | 25 | ||||
-rw-r--r-- | calendar/calendar-pilot-sync.c | 2 | ||||
-rw-r--r-- | calendar/calendar.c | 8 | ||||
-rw-r--r-- | calendar/calendar.h | 7 | ||||
-rw-r--r-- | calendar/corba-cal.c | 2 | ||||
-rw-r--r-- | calendar/eventedit.c | 11 | ||||
-rw-r--r-- | calendar/gnome-cal.c | 2 | ||||
-rw-r--r-- | calendar/gui/calendar-pilot-sync.c | 2 | ||||
-rw-r--r-- | calendar/gui/calendar.c | 8 | ||||
-rw-r--r-- | calendar/gui/calendar.h | 7 | ||||
-rw-r--r-- | calendar/gui/corba-cal.c | 2 | ||||
-rw-r--r-- | calendar/gui/eventedit.c | 11 | ||||
-rw-r--r-- | calendar/gui/gnome-cal.c | 2 | ||||
-rw-r--r-- | calendar/gui/main.c | 4 | ||||
-rw-r--r-- | calendar/main.c | 4 |
15 files changed, 71 insertions, 26 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 616db438da..b5be27f69b 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,28 @@ +1999-12-31 Eskil Heyn Olsen <deity@eskil.dk> + + * eventedit.c (ee_store_recur_end_to_ical): Adds 86400 secs (1 + day) to the date chooses by the user. This ensures the recurrence + also occurs on that date. + (ee_rp_init_ending_date): And subtracts 86400 secs when about to + redisplay the box. + + * calendar.h: Added an argument to calendar_new, to enable certain + features, such as initing alarms or nor. + + * calendar.c (calendar_new): Implemented support for the + CALENDAR_INIT_ALARMS option to calendar_new. + + * corba-cal.c (cal_repo_get_updated_objects): Added + CALENDAR_INIT_ALARMS to calendar_new calls. + + * main.c: Added CALENDAR_INIT_ALARMS to calendar_new calls. This + should probably be CALENDAR_INIT_NIL, but I'm not sure, guess + steintr should check it. + + * gnome-cal.c: Added CALENDAR_INIT_ALARMS to calendar_new calls. + + * calendar-pilot-sync.c: Added CALENDAR_INIT_NIL to calendar_new calls. + 1999-12-10 Russell Steinthal <rms39@columbia.edu> * eventedit.c (ee_create_ae): Fix sensitivity bug when used to diff --git a/calendar/calendar-pilot-sync.c b/calendar/calendar-pilot-sync.c index a98ff9b49b..5039bb37b7 100644 --- a/calendar/calendar-pilot-sync.c +++ b/calendar/calendar-pilot-sync.c @@ -605,7 +605,7 @@ sync_pilot (GNOME_Calendar_Repository repo, int pilot_fd) */ if (!only_pilot_to_desktop){ vcalendar_string = GNOME_Calendar_Repository_get_updated_objects (repo, &ev); - dirty_cal = calendar_new ("Temporal"); + dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); error = calendar_load_from_memory (dirty_cal, vcalendar_string); if (!error) sync_cal_to_pilot (repo, dirty_cal, pilot_fd); diff --git a/calendar/calendar.c b/calendar/calendar.c index 0fbecaf6f6..db31ba016b 100644 --- a/calendar/calendar.c +++ b/calendar/calendar.c @@ -33,7 +33,7 @@ static void calendar_init_alarms (Calendar *cal); static void calendar_set_day (void); Calendar * -calendar_new (char *title) +calendar_new (char *title,CalendarNewOptions options) { Calendar *cal; @@ -46,7 +46,9 @@ calendar_new (char *title) cal->event_hash = g_hash_table_new (g_str_hash, g_str_equal); - calendar_init_alarms (cal); + if (options & CALENDAR_INIT_ALARMS) { + calendar_init_alarms (cal); + } return cal; } @@ -633,7 +635,7 @@ calendar_string_from_object (iCalObject *object) g_return_val_if_fail (object != NULL, NULL); - cal = calendar_new ("Temporal"); + cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); calendar_add_object (cal, object); str = calendar_get_as_vcal_string (cal); calendar_remove_object (cal, object); diff --git a/calendar/calendar.h b/calendar/calendar.h index 4a9d4bcff2..858f0151ca 100644 --- a/calendar/calendar.h +++ b/calendar/calendar.h @@ -41,7 +41,12 @@ typedef struct { iCalObject *ico; } CalendarObject; -Calendar *calendar_new (char *title); +typedef enum { + CALENDAR_INIT_NIL = 0, + CALENDAR_INIT_ALARMS = 1 << 0 +} CalendarNewOptions; + +Calendar *calendar_new (char *title,CalendarNewOptions options); char *calendar_get_as_vcal_string (Calendar *cal); char *calendar_string_from_object (iCalObject *object); diff --git a/calendar/corba-cal.c b/calendar/corba-cal.c index 472d83008e..2a3a727869 100644 --- a/calendar/corba-cal.c +++ b/calendar/corba-cal.c @@ -251,7 +251,7 @@ cal_repo_get_updated_objects (PortableServer_Servant servant, CORBA_char *res; char *str; - dirty_cal = calendar_new ("Temporal"); + dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); for (l = gcal->cal->events; l; l = l->next){ iCalObject *obj = l->data; diff --git a/calendar/eventedit.c b/calendar/eventedit.c index 5b45674d00..31fbf11225 100644 --- a/calendar/eventedit.c +++ b/calendar/eventedit.c @@ -650,7 +650,9 @@ ee_store_recur_end_to_ical (EventEditor *ee) case 1: /* end date */ - ical->recur->_enddate = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->recur_ed_end_on)); + /* Also here, to ensure that the event is used, we add 86400 secs to get + get next day, in accordance to the RFC */ + ical->recur->_enddate = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->recur_ed_end_on)) + 86400; ical->recur->enddate = ical->recur->_enddate; ical->recur->duration = 0; break; @@ -1247,9 +1249,10 @@ ee_rp_init_ending_date (EventEditor *ee) gtk_widget_set_sensitive (ihbox, FALSE); gtk_box_pack_start (GTK_BOX (hbox), ihbox, FALSE, FALSE, 0); - if (ee->ical->recur) - enddate = ee->ical->recur->enddate; - else + if (ee->ical->recur) { + /* Shorten by one day, as we store end-on date a day ahead */ + enddate = ee->ical->recur->enddate - 86400; + } else enddate = ee->ical->dtend; ee->recur_ed_end_on = widget = date_edit_new (enddate, FALSE); diff --git a/calendar/gnome-cal.c b/calendar/gnome-cal.c index 9b3479e473..387d46a31c 100644 --- a/calendar/gnome-cal.c +++ b/calendar/gnome-cal.c @@ -227,7 +227,7 @@ gnome_calendar_new (char *title) gtk_window_set_title(GTK_WINDOW(retval), title); gcal->current_display = time_day_begin (time (NULL)); - gcal->cal = calendar_new (title); + gcal->cal = calendar_new (title,CALENDAR_INIT_ALARMS); setup_widgets (gcal); gnome_calendar_create_corba_server (gcal); diff --git a/calendar/gui/calendar-pilot-sync.c b/calendar/gui/calendar-pilot-sync.c index a98ff9b49b..5039bb37b7 100644 --- a/calendar/gui/calendar-pilot-sync.c +++ b/calendar/gui/calendar-pilot-sync.c @@ -605,7 +605,7 @@ sync_pilot (GNOME_Calendar_Repository repo, int pilot_fd) */ if (!only_pilot_to_desktop){ vcalendar_string = GNOME_Calendar_Repository_get_updated_objects (repo, &ev); - dirty_cal = calendar_new ("Temporal"); + dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); error = calendar_load_from_memory (dirty_cal, vcalendar_string); if (!error) sync_cal_to_pilot (repo, dirty_cal, pilot_fd); diff --git a/calendar/gui/calendar.c b/calendar/gui/calendar.c index 0fbecaf6f6..db31ba016b 100644 --- a/calendar/gui/calendar.c +++ b/calendar/gui/calendar.c @@ -33,7 +33,7 @@ static void calendar_init_alarms (Calendar *cal); static void calendar_set_day (void); Calendar * -calendar_new (char *title) +calendar_new (char *title,CalendarNewOptions options) { Calendar *cal; @@ -46,7 +46,9 @@ calendar_new (char *title) cal->event_hash = g_hash_table_new (g_str_hash, g_str_equal); - calendar_init_alarms (cal); + if (options & CALENDAR_INIT_ALARMS) { + calendar_init_alarms (cal); + } return cal; } @@ -633,7 +635,7 @@ calendar_string_from_object (iCalObject *object) g_return_val_if_fail (object != NULL, NULL); - cal = calendar_new ("Temporal"); + cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); calendar_add_object (cal, object); str = calendar_get_as_vcal_string (cal); calendar_remove_object (cal, object); diff --git a/calendar/gui/calendar.h b/calendar/gui/calendar.h index 4a9d4bcff2..858f0151ca 100644 --- a/calendar/gui/calendar.h +++ b/calendar/gui/calendar.h @@ -41,7 +41,12 @@ typedef struct { iCalObject *ico; } CalendarObject; -Calendar *calendar_new (char *title); +typedef enum { + CALENDAR_INIT_NIL = 0, + CALENDAR_INIT_ALARMS = 1 << 0 +} CalendarNewOptions; + +Calendar *calendar_new (char *title,CalendarNewOptions options); char *calendar_get_as_vcal_string (Calendar *cal); char *calendar_string_from_object (iCalObject *object); diff --git a/calendar/gui/corba-cal.c b/calendar/gui/corba-cal.c index 472d83008e..2a3a727869 100644 --- a/calendar/gui/corba-cal.c +++ b/calendar/gui/corba-cal.c @@ -251,7 +251,7 @@ cal_repo_get_updated_objects (PortableServer_Servant servant, CORBA_char *res; char *str; - dirty_cal = calendar_new ("Temporal"); + dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); for (l = gcal->cal->events; l; l = l->next){ iCalObject *obj = l->data; diff --git a/calendar/gui/eventedit.c b/calendar/gui/eventedit.c index 5b45674d00..31fbf11225 100644 --- a/calendar/gui/eventedit.c +++ b/calendar/gui/eventedit.c @@ -650,7 +650,9 @@ ee_store_recur_end_to_ical (EventEditor *ee) case 1: /* end date */ - ical->recur->_enddate = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->recur_ed_end_on)); + /* Also here, to ensure that the event is used, we add 86400 secs to get + get next day, in accordance to the RFC */ + ical->recur->_enddate = gnome_date_edit_get_date (GNOME_DATE_EDIT (ee->recur_ed_end_on)) + 86400; ical->recur->enddate = ical->recur->_enddate; ical->recur->duration = 0; break; @@ -1247,9 +1249,10 @@ ee_rp_init_ending_date (EventEditor *ee) gtk_widget_set_sensitive (ihbox, FALSE); gtk_box_pack_start (GTK_BOX (hbox), ihbox, FALSE, FALSE, 0); - if (ee->ical->recur) - enddate = ee->ical->recur->enddate; - else + if (ee->ical->recur) { + /* Shorten by one day, as we store end-on date a day ahead */ + enddate = ee->ical->recur->enddate - 86400; + } else enddate = ee->ical->dtend; ee->recur_ed_end_on = widget = date_edit_new (enddate, FALSE); diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index 9b3479e473..387d46a31c 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -227,7 +227,7 @@ gnome_calendar_new (char *title) gtk_window_set_title(GTK_WINDOW(retval), title); gcal->current_display = time_day_begin (time (NULL)); - gcal->cal = calendar_new (title); + gcal->cal = calendar_new (title,CALENDAR_INIT_ALARMS); setup_widgets (gcal); gnome_calendar_create_corba_server (gcal); diff --git a/calendar/gui/main.c b/calendar/gui/main.c index 98157d101d..9dead6b92e 100644 --- a/calendar/gui/main.c +++ b/calendar/gui/main.c @@ -788,7 +788,7 @@ dump_events (void) process_dates (); init_calendar (); - cal = calendar_new (full_name); + cal = calendar_new (full_name, CALENDAR_INIT_ALARMS); s = calendar_load (cal, load_file ? load_file : user_calendar_file); if (s){ printf ("error: %s\n", s); @@ -832,7 +832,7 @@ dump_todo (void) process_dates (); init_calendar (); - cal = calendar_new (full_name); + cal = calendar_new (full_name, CALENDAR_INIT_ALARMS); s = calendar_load (cal, load_file ? load_file : user_calendar_file); if (s){ printf ("error: %s\n", s); diff --git a/calendar/main.c b/calendar/main.c index 98157d101d..9dead6b92e 100644 --- a/calendar/main.c +++ b/calendar/main.c @@ -788,7 +788,7 @@ dump_events (void) process_dates (); init_calendar (); - cal = calendar_new (full_name); + cal = calendar_new (full_name, CALENDAR_INIT_ALARMS); s = calendar_load (cal, load_file ? load_file : user_calendar_file); if (s){ printf ("error: %s\n", s); @@ -832,7 +832,7 @@ dump_todo (void) process_dates (); init_calendar (); - cal = calendar_new (full_name); + cal = calendar_new (full_name, CALENDAR_INIT_ALARMS); s = calendar_load (cal, load_file ? load_file : user_calendar_file); if (s){ printf ("error: %s\n", s); |