aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-recur.c
Commit message (Collapse)AuthorAgeFilesLines
* These changes fix bugzilla bugs #874 and #875.Federico Mena Quintero2000-11-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-08 Federico Mena Quintero <federico@helixcode.com> These changes fix bugzilla bugs #874 and #875. * cal-util/cal-component.c (cal_component_get_exdate_list): Return a list of CalComponentDateTime instead of simple struct icaltimetype objects. Exception date properties *can* contain a timezone parameter, so we need to include those if they are present. (cal_component_set_exdate_list): On the input, handle a list of CalComponentDateTime structures. On the internals, handle a list of struct datetime instead of plain properties. (cal_component_free_exdate_list): Handle a list of CalComponentDateTime structures. (scan_exdate): Create a list of struct datetime structures. (free_icalcomponent): Free the exdate_list properly. * cal-util/cal-recur.c (generate_instances_for_chunk): Use the proper types for exception dates. * gui/comp-util.h: * gui/comp-util.c: New files with utilities for manipulating calendar component objects. (cal_comp_util_add_exdate): New function. * gui/Makefile.am (evolution_calendar_SOURCES): Added comp-util.[ch] to the list of sources. * gui/e-day-view.c (add_exdate): New convenience function to add an exception date to a calendar component. (e_day_view_on_unrecur_appointment): Use cal_comp_util_add_exdate(). (e_day_view_on_delete_occurrence): Likewise. * gui/e-week-view.c (e_week_view_on_delete_occurrence): Likewise. (e_week_view_on_unrecur_appointment): Likewise. * gui/event-editor.c (nth_weekday): Be paranoid about valid position values. (fill_widgets): Use the proper types for exdates. (dialog_to_comp_object): Likewise. svn path=/trunk/; revision=6517
* added _click-to-add-message, though I'm not sure if i18n will work.Damon Chaplin2000-10-201-13/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-20 Damon Chaplin <damon@helixcode.com> * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): added _click-to-add-message, though I'm not sure if i18n will work. * cal-util/cal-recur.c (cal_obj_time_add_hours): (cal_obj_time_add_minutes): (cal_obj_time_add_seconds): updated to handle -ve args. * cal-util/timeutil.c (time_add_day): set tm_isdst to -1 before calling mktime(). * cal-util/cal-recur.c (generate_instances_for_chunk): don't call the callback if the event ends exactly on the interval start time. * gui/e-week-view.c (e_week_view_reshape_event_span): * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons): * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event): * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event): * gui/e-day-view.c (e_day_view_reshape_long_event): (e_day_view_reshape_day_event): use cal_component_has_alarms(). * cal-util/cal-component.[hc]: added cal_component_has_alarms(). 2000-10-16 Damon Chaplin <damon@helixcode.com> * gui/calendar-config.c (config_read): set default MonthVPanePosition to 1 rather than 0, so if you move the hpane you'll see the date navigator. svn path=/trunk/; revision=6063
* call calendar_config_write_on_exit() to write out some special configDamon Chaplin2000-10-121-34/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-11 Damon Chaplin <damon@helixcode.com> * gui/main.c (main): call calendar_config_write_on_exit() to write out some special config settings (as the mail component does). * gui/calendar-commands.c (properties_cmd): changed to use the new preferences dialog. (update_all_config_settings): new function to iterate over all the calendars and update the config settings. * gui/dialogs/cal-prefs-dialog.glade: preferences dialog. * gui/dialogs/cal-prefs-dialog.[hc]: new files for the preferences dialog. * gui/calendar-config.[hc]: new files to handle loading/saving config settings. * cal-util/cal-recur.c: fixed bug in YEARLY when no filters were set, plus minor changes. * cal-util/test-recur.c: updated. * gui/e-day-view-time-item.c: * gui/popup-menu.c: update to #include <gal/widgets/e-gui-utils.h> * gui/component-factory.c (owner_set_cb): called calendar_config_init. (owner_set_cb): (owner_unset_cb): updated the prototypes. * gui/main.c (main): added call to calendar_config_write_on_exit(). * gui/component-factory.h: * gui/component-factory.c (owner_set_cb): added global evolution_dir just like the mail component, so we know we to store config stuff. svn path=/trunk/; revision=5856
* when the user types in a new event, don't create it until the user hitsDamon Chaplin2000-10-051-146/+213
| | | | | | | | | | | | | | | | | | | 2000-10-05 Damon Chaplin <damon@helixcode.com> * gui/e-day-view.c: * gui/e-week-view.c: when the user types in a new event, don't create it until the user hits Return or switches focus. Removed the editing_new_event flags. * cal-util/test-recur.c: rewritten to work on ics files. Now I can start testing the recurrence code. * cal-util/cal-recur.c: a few fixes. * gui/e-day-view.c (e_day_view_check_if_new_event_fits): fixed to return TRUE for long events, not FALSE. svn path=/trunk/; revision=5729
* updated to support RDATE end times or durations. Note that if you have twoDamon Chaplin2000-09-301-59/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-29 Damon Chaplin <damon@helixcode.com> * cal-util/cal-recur.c: updated to support RDATE end times or durations. Note that if you have two RDATEs with the same start times, but with different end dates/durations set, the results are unpredictable. So the event editor dialog should check for this. * gui/e-week-view-main-item.c (e_week_view_main_item_draw_day): make strftime() strings translatable, and changed the formats a bit. * NOTE: someone needs to check print.c to make sure strftime strings are OK for i18n. * gui/e-day-view.h: Changed EDayViewDateFormat enum. We now try to include the weekday if possible. Also changed EDayView struct so we store the month & weekdays with the longest names rather than the actual widths. This helps i18n. * gui/e-day-view.c (e_day_view_recalc_cell_sizes): used _() for strftime strings, tried to see if weekday fits, and rearranged a bit to make i18n easier. * gui/e-day-view-top-item.c (e_day_view_top_item_draw): used _() for strftime strings, and updated to use new formats. * gui/calendar-model.c: added use_24_hour_format boolean to CalendarModelPrivate so we can display dates in 12-hour format if requested. This meant adding a CalendarModel argument to a few functions. Also added get/set functions to set use_24_hour_format. I suppose ideally we should have an ECellDate renderer and this option should go there. svn path=/trunk/; revision=5646
* set the height of the scrolled window for the description field, since theDamon Chaplin2000-09-251-138/+398
| | | | | | | | | | | | | | | | | | | | | 2000-09-24 Damon Chaplin <damon@helixcode.com> * gui/dialogs/task-editor-dialog.glade: set the height of the scrolled window for the description field, since the default window height doesn't seem to be working. * cal-util/cal-component.h: added functions to get the actual icalproperty lists for RRULE and EXRULE properties. * cal-util/cal-recur.[hc]: added support for COUNT, though I need to test it a bit. Also fixed the call to generate_instances_for_year() so it uses the chunk dates. 2000-09-20 Damon Chaplin <damon@helixcode.com> * gui/event-editor.c: got rid of 1 '_' in '__Formatting'. svn path=/trunk/; revision=5562
* Fixed some warnings.Christopher James Lahey2000-09-091-0/+2
| | | | | | | | | | 2000-09-08 Christopher James Lahey <clahey@helixcode.com> * cal-util/cal-recur.c, gui/e-day-view.c, gui/e-week-view.c, gui/event-editor.c, gui/getdate.y, gui/gncal-todo.c, gui/gnome-cal.c, gui/dialogs/task-editor.c: Fixed some warnings. svn path=/trunk/; revision=5264
* Use new cal_component_has_recurrences convenience functionJP Rosevear2000-09-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-06 JP Rosevear <jpr@helixcode.com> * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event): Use new cal_component_has_recurrences convenience function * gui/e-week-view.c (e_week_view_show_popup_menu): ditto * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons): ditto * gui/calendar-model.c (calendar_model_value_at): ditto (calendar_model_value_at): ditto * gui/e-day-view.c (e_day_view_on_event_click): ditto (e_day_view_on_event_right_click): ditto (e_day_view_on_top_canvas_motion): ditto (e_day_view_on_top_canvas_motion): ditto (e_day_view_on_main_canvas_motion): ditto (e_day_view_on_main_canvas_motion): ditto (e_day_view_reshape_day_event): ditto * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event): ditto * gui/e-day-view.c (e_day_view_on_long_event_click): ditto svn path=/trunk/; revision=5220
* Use new convenience functions and only get the recurrence stuff if needed.JP Rosevear2000-09-061-8/+14
| | | | | | | | | | | | | | | | | | | | | | 2000-09-06 JP Rosevear <jpr@helixcode.com> * cal-util/cal-recur.c (cal_recur_generate_instances): Use new convenience functions and only get the recurrence stuff if needed. Free the recurrence stuff if used. 2000-09-05 JP Rosevear <jpr@helixcode.com> * cal-util/cal-component.h: Add new prototypes * cal-util/cal-component.c (cal_component_has_exrules): Utility function to determine whether a cal component has any exrules (cal_component_has_exdates): Ditto for exdates (cal_component_has_exceptions): Utility function to determine whether a cal component has any exception rules (cal_component_has_recurrences):Utility function to determine whether a cal component has any recurrence rules svn path=/trunk/; revision=5219
* Kill all exdates if there are no dates in the boxJP Rosevear2000-09-061-1/+39
| | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-05 JP Rosevear <jpr@helixcode.com> * gui/event-editor.c (dialog_to_comp_object): Kill all exdates if there are no dates in the box * cal-util/cal-recur.c (generate_instances_for_year): Add a special case for when there are exceptions but no rrules or rdates. (cal_obj_remove_exceptions): Use date only compare func (cal_obj_date_only_compare_func): New compare function that compares the date only, not the time. * gui/event-editor.c (dialog_to_comp_object): Need a break for the yearly recurrence type (dialog_to_comp_object): We need to allocate icaltimetypes for the exdate list (fill_widgets): Handle a weekly recurrence with no particular day set (dialog_to_comp_object): Kill all rrules if "None" is selected as the recurrence type by the user svn path=/trunk/; revision=5218
* The exdate and rdate lists are a list of icaltimetypes, notJP Rosevear2000-09-061-12/+10
| | | | | | | | | | | | | | 2000-09-05 JP Rosevear <jpr@helixcode.com> * cal-util/cal-recur.c (generate_instances_for_year): The exdate and rdate lists are a list of icaltimetypes, not CalComponentPeriods *gui/e-day-view.c (e_day_view_on_delete_occurrence): The exdate list is a list of icaltimetypes, not CalComponentDateTimes svn path=/trunk/; revision=5211
* Compute the event duration using the event start/end times, not theJP Rosevear2000-09-061-13/+12
| | | | | | | | | | 2000-09-05 JP Rosevear <jpr@helixcode.com> * cal-util/cal-recur.c (cal_recur_generate_instances): Compute the event duration using the event start/end times, not the interval times. svn path=/trunk/; revision=5199
* Check to see if r->enddate is (time_t)-1 and set to 0 if soJP Rosevear2000-09-061-0/+2
| | | | | | | | | 2000-09-05 JP Rosevear <jpr@helixcode.com> * cal-util/cal-recur.c (cal_recur_from_icalrecurrencetype): Check to see if r->enddate is (time_t)-1 and set to 0 if so svn path=/trunk/; revision=5198
* We don't need AC_PROG_RANLIB and AM_PROG_LIBTOOLJP Rosevear2000-09-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | 2000-09-01 JP Rosevear <jpr@helixcode.com> * configure.in: We don't need AC_PROG_RANLIB and AM_PROG_LIBTOOL * src/libical/icalyacc.y (clear_recur): Explicitly set the week_start to the Monday default in case the recurrence rule does not. 2000-09-01 JP Rosevear <jpr@helixcode.com> * gui/event-editor.c: Make toolbar save and close button. We should put a similar menu option in sometime. 2000-08-31 JP Rosevear <jpr@helixcode.com> * cal-util/cal-recur.c (array_to_list): Use ICAL_RECURRENCE_ARRAY_MAX instead of MAX_SHORT svn path=/trunk/; revision=5164
* We no longer need time_from_icaltimetype as libical has the API for thisJP Rosevear2000-08-291-5/+5
| | | | | | | | | | | | | | | | | | | | 2000-08-28 JP Rosevear <jpr@helixcode.com> * cal-util/timeutil.h: We no longer need time_from_icaltimetype as libical has the API for this * cal-util/timeutil.c: ditto * cal-util/cal-recur.c: Replace time_from_icaltimetype with icaltime_as_timet * gui/calendar-model.c: ditto * gui/event-editor.c: ditto * gui/gnome-cal.c: ditto svn path=/trunk/; revision=5090
* Use CalComponent and the new property types instead of the old iCalObjectFederico Mena Quintero2000-08-021-92/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | 2000-07-31 Federico Mena Quintero <federico@helixcode.com> * cal-util/cal-recur.c (*): Use CalComponent and the new property types instead of the old iCalObject stuff. (cal_recur_generate_instances): Renamed from cal_object_generate_events(). Ensure that the component has the DTSTART property. (generate_instances_for_year): Renamed from cal_object_generate_events_for_year(). (cal_obj_expand_recurrence): Made static. (cal_recur_from_icalrecurrencetype): New function. We should really convert this whole file to use struct icalrecurrencetype instead. (cal_recur_free): New function. * cal-util/cal-recur.h (CalRecurType): Renamed from CalObjRecurType. (CalRecurrence): Renamed from CalObjRecurrence. * cal-util/timeutil.c (time_from_icaltimetype): New function. * cal-util/Makefile.am: Commented out the test-recur program. svn path=/trunk/; revision=4464
* updated.Damon Chaplin2000-06-161-41/+343
| | | | | | | | | | | 2000-06-16 Damon Chaplin <damon@helixcode.com> * cal-util/test-recur.c: updated. * cal-util/cal-recur.[hc]: mostly finished, though it depends on the iCalObject struct being updated to support more of iCalendar. svn path=/trunk/; revision=3591
* added test-recur test program.Damon Chaplin2000-06-011-324/+1702
| | | | | | | | | | | | | | 2000-05-31 Damon Chaplin <damon@helixcode.com> * cal-util/Makefile.am: added test-recur test program. * cal-util/test-recur.c: new file to test the recurrence code. * cal-util/.cvsignore: added test-recur. * cal-util/cal-recur.c: updated. svn path=/trunk/; revision=3315
* new files to implement iCalendar recurrence rules. These are only partDamon Chaplin2000-05-201-0/+1131
2000-05-20 Damon Chaplin <damon@helixcode.com> * cal-util/cal-recur.[hc]: new files to implement iCalendar recurrence rules. These are only part finished, but people may like to check that the architecture seems OK. 2000-05-17 Damon Chaplin <damon@helixcode.com> * gui/e-day-view.c (e_day_view_on_delete_occurrence): * gui/e-week-view.c (e_week_view_on_delete_occurrence): use a copy of the iCalObject so we detect the change in the "update_event" callback. Maybe we should just update the view ourselves and then we wouldn't need to detect any change in the callback. * cal-util/calobj.c (ical_object_reset_recurrence): new function to get rid of any recurrence rules. Used when we 'unrecur' an event. * gui/e-day-view.c (e_day_view_key_press): don't add a new event if it won't fit, or we end up adding a new event for each key press. (e_day_view_update_event_label): don't update it if it doesn't have an EText item (i.e. it isn't visible). * gui/e-day-view-time-item.c: allow selection of times using this column. svn path=/trunk/; revision=3144