aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-recur.c
Commit message (Collapse)AuthorAgeFilesLines
* Various changes to merge in evolution-data-server reliance.JP Rosevear2003-11-071-4021/+0
| | | | svn path=/trunk/; revision=23206
* new functions for individual instances management.Rodrigo Moya2003-10-241-0/+1
| | | | | | | | | | | | | | | | | | | 2003-10-24 Rodrigo Moya <rodrigo@ximian.com> * cal-util/cal-util.[ch] (cal_util_construct_instance, cal_util_remove_instances): new functions for individual instances management. * pcs/cal-backend-file.c (cal_backend_file_get_object): if we dont have a recurrence in our hash table, generate one for the specified recurrence ID. (match_recurrence_sexp): new function to match recurrences on regular expresessions. (match_object_sexp): call match_recurrence_sexp() for all recurrences. (cal_backend_file_modify_object): handle mod_types. (cal_backend_file_remove_object): handle mod_types. svn path=/trunk/; revision=23058
* update g_date calls to non-deprecated callsJP Rosevear2003-10-231-15/+19
| | | | | | | | | | | | | | | | | | | | 2003-10-23 JP Rosevear <jpr@ximian.com> * cal-util/cal-recur.c: update g_date calls to non-deprecated calls * cal-util/Makefile.am: turn off deprecated funcs * cal-client/Makefile.am: turn off deprecated funcs * cal-client/cal-client.c (cal_client_get_error_message): add OK message * pcs/cal-backend.[hc]: remove dead funcs * pcs/query.c: tidy headers svn path=/trunk/; revision=23035
* If only the pipe wouldn't break.JP Rosevear2003-03-051-0/+2
| | | | svn path=/trunk/; revision=20143
* array of localized month day names ("1st" - "31st")Dan Winship2003-02-061-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cal-util/cal-recur.c (cal_recur_nth): array of localized month day names ("1st" - "31st") * gui/dialogs/recurrence-page.c (make_recur_month_num_submenu, make_recur_month_num_menu, month_num_menu_selection_done_cb): Use the new cal_recur_nth[] array. The way this was done before didn't localize properly. * gui/alarm-notify/notify-main.c (main): s/glade_gnome_init/glade_init/ From evolution-1-2-branch: * gui/e-itip-control.c (write_recurrence_piece): Describe recurrences, if we can. #30993 (set_date_label): If the meeting has recurrences, call write_recurrence_piece after writing the start and end dates. (write_label_piece): Wrap the timezone in <font size=-1> to de-emphasize it a bit and try to keep the timestamp on a single line even with big Outlook timezone names. Add an option to show just the date, for describing the end of recurrences (since the time in the UNTIL is the *beginning* of the last instance, which would confuse people). (update_item): Set the VCALENDAR's METHOD. (ok_clicked_cb): Use update_item, not remove_item, to process a cancelation. Part of #33875. * pcs/cal-backend-file.c (cal_backend_file_cancel_object): New, handle an ICAL_METHOD_CANCEL update. (cal_backend_file_update_objects): Call cal_backend_file_update_object or cal_backend_file_cancel_object as appropriate. svn path=/trunk/; revision=19763
* convert months from 1-12 to 0-11. Fixes bug #19235.Damon Chaplin2002-02-071-0/+6
| | | | | | | | | 2002-02-06 Damon Chaplin <damon@ximian.com> * cal-util/cal-recur.c (cal_recur_from_icalproperty): convert months from 1-12 to 0-11. Fixes bug #19235. svn path=/trunk/; revision=15584
* updated code to handle DATE values.Damon Chaplin2001-10-301-4/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-30 Damon Chaplin <damon@ximian.com> * gui/dialogs/schedule-page.c: * gui/dialogs/event-page.c: * gui/dialogs/comp-editor-util.c: updated code to handle DATE values. * gui/gnome-cal.c (gnome_calendar_new_appointment_for): * gui/e-day-view.c (e_day_view_key_press): updated DATE code. * gui/e-cell-date-edit-text.c: * gui/calendar-model.c: updated to support DATE values. * cal-util/cal-recur.c (cal_recur_generate_instances_of_rule): updated to use DATE values in same way as Outlook - i.e. the DTEND date is not included entirely. Though I did make it so that if the DTSTART and DTEND used the same DATE value, it includes the entire day. So 1-day events should be the same. Long All-Day events will be 1 day shorter. * cal-util/cal-component.c (cal_component_get_start_plus_duration): don't subtract a day from the end date. * gui/tasks-control.c: updated the EPixmap paths for Cut/Copy etc. Removed Print & Print Preview paths, since we don't have menu commands for these any more. svn path=/trunk/; revision=14456
* Fixing the license text.Ettore Perazzoli2001-10-281-4/+3
| | | | svn path=/trunk/; revision=14214
* convert the formatted date to UTF-8.Damon Chaplin2001-10-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-26 Damon Chaplin <damon@ximian.com> * gui/e-itip-control.c (write_label_piece): convert the formatted date to UTF-8. * cal-util/cal-recur.c (CAL_OBJ_DEBUG): turn off debug functions. * gui/dialogs/comp-editor-util.c (parse_contact_string): handle UTF8 correctly. Bug #4450. Good enough for 1.0. * gui/e-week-view-event-item.c (e_week_view_draw_time): set the gc color before drawing. Should fix bug #11469. * gui/dialogs/task-editor.c (task_editor_edit_comp): show or hide the meeting page as appropriate. Note this may be called more than once, if the task gets updated somewhere else and the user clicks 'Update the object'. Hopefully fixes bug #12930. * gui/print.c (print_comp_item): printed more fields and made a little prettier. Fixes bug #9352. (print_date_label): used the correct timezones for each date field. * *.c: removed several debug messages. svn path=/trunk/; revision=14187
* subtract 1 from any positive BYSETPOS value, since our array is 0-based.Damon Chaplin2001-10-261-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-25 Damon Chaplin <damon@ximian.com> * cal-util/cal-recur.c (cal_obj_bysetpos_filter): subtract 1 from any positive BYSETPOS value, since our array is 0-based. * gui/dialogs/recurrence-page.c (simple_recur_to_comp): (recurrence_page_fill_widgets): Outlook (2000) will not accept monthly recurrences like BYDAY=2TU. Instead it uses BYDAY=TU;BYSETPOS=2. So to be compatable with it we now do the same, although we still accept and convert the old format. * cal-client/cal-client.c (cal_client_get_component_as_string): new function to return a complete VCALENDAR string containing a VEVENT or VTODO with all the VTIMEZONEs it uses. * gui/dialogs/comp-editor.c (save_as_ok): use above function so we save the VTIMEZONE data with the VEVENT/VTODO. Fixes bug #????. Also made sure we output "METHOD:PUBLISH" since Outlook (2000) will not import it otherwise. * gui/dialogs/comp-editor.c (page_mapped_cb): (page_unmapped_cb): install/uninstall the GtkAccelGroup for the page. (comp_editor_append_page): connect to the map/unmap signals to install/uninstall the accelerators. (This is all for bug #11609, though of course it doesn't work too well in GTK+ 1.2 anyway.) * gui/dialogs/task-page.c (get_widgets): * gui/dialogs/task-details-page.c (get_widgets): * gui/dialogs/schedule-page.c (get_widgets): * gui/dialogs/recurrence-page.c (get_widgets): * gui/dialogs/meeting-page.c (get_widgets): * gui/dialogs/event-page.c (get_widgets): * gui/dialogs/alarm-page.c (get_widgets): got the GtkAccelGroup from the original window, ref'ed it and placed it in the CompEditorPage struct. * gui/dialogs/comp-editor-page.c (comp_editor_page_destroy): unref any GtkAccelGroup for the page. * gui/dialogs/task-page.glade: changed '_Confidential' to 'Con_fidential' as it clashed with '_Contacts'. It now matches the event editor as well. * gui/dialogs/event-page.glade: * gui/dialogs/task-page.glade: Set CAN_FOCUS to TRUE for the custom EDateEdit widgets, and set them as the accel targets of the labels. svn path=/trunk/; revision=14108
* added setDefaultTimezone() method.Damon Chaplin2001-10-231-32/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-22 Damon Chaplin <damon@ximian.com> * idl/evolution-calendar.idl: added setDefaultTimezone() method. * pcs/cal-backend.c (cal_backend_get_default_timezone): (cal_backend_set_default_timezone): new functions to call class methods. * pcs/cal-backend-file.c: lots of changes to handle the default timezone and use it. * pcs/query.c: use the default timezone. * gui/dialogs/task-details-page.c (date_changed_cb): initialized completed_tt. * gui/dialogs/event-page.c: changed it to handle DATE values. The 'All Day Event' checkbox is only set now when the DTSTART and DTEND are DATE values. * gui/dialogs/comp-editor-util.c (comp_editor_free_dates): free the CalComponentDateTime structs as well. * gui/e-tasks.c: set the default timezone on the server. * gui/tag-calendar.c: * gui/gnome-cal.c: * gui/e-week-view.c: * gui/e-day-view.c: updates to handle DATE values. * gui/e-calendar-table.c (date_compare_cb): updated to use the new ECellDateEditValue values, so it now works. (percent_compare_cb): updated to use GPOINTER_TO_INT values. (e_calendar_table_init): use an ECellPercent for the percent field and an ECellDateEditText for the date fields. * gui/comp-util.c (cal_comp_util_compare_event_timezones): return TRUE if the DTSTART or DTEND is a DATE value. We don't want to show the timezone icons for DATE values. * gui/comp-editor-factory.c (resolve_pending_requests): set the default timezone on the server. * gui/calendar-model.c: major changes to support sorting properly. For date and percent fields we now use subclasses of ECellText, so we don't use a char* as the model value. For the percent field we now use a GINT_TO_POINTER. For the date fields we now use a ECellDateEditValue* as the value. * gui/calendar-config.c (calendar_config_configure_e_cell_date_edit): set the timezone and use_24_hour flags of the new ECellDateEditText. * conduits/todo/todo-conduit.c (pre_sync): * conduits/calendar/calendar-conduit.c (pre_sync): set the default timezone on the server. * cal-util/timeutil.c (time_days_in_month): removed debug message. * cal-util/test-recur.c: try to handle timezones in the iCalendar file properly, and updated to pass default timezone. * cal-util/cal-util.c (cal_util_generate_alarms_for_comp): (cal_util_generate_alarms_for_list): added default timezone argument. * cal-util/cal-recur.c: changed many of the functions to take a default timezone, to use to resolve DATE and floating DATE-TIME values. * cal-client/cal-client.c (cal_client_set_default_timezone): new function to set the default timezone. (cal_client_ensure_timezone_on_server): new function to ensure that a given timezone is on the server. * gui/e-cell-date-edit-text.c: new subclass of ECellText to display and edit a date value. * cal-util/cal-recur.c (cal_obj_byday_expand_monthly): changed week_num to -week_num when calculating the weeks to go back from the end of the month for things like BYDAY=-2WE. Fixes bug #11525. (cal_recur_generate_instances_of_rule): only go up to MAX_YEAR (2037). We can't really handle anything past that anyway. (cal_recur_ensure_rule_end_date): initialize cb_date.end_date to 0, so if the RULE doesn't generate COUNT instances we save 0 as the time_t. svn path=/trunk/; revision=13920
* save the EXDATE as a DATE-TIME value, since we know the exact time. FixesDamon Chaplin2001-10-031-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | 2001-10-03 Damon Chaplin <damon@ximian.com> * gui/comp-util.c (cal_comp_util_add_exdate): save the EXDATE as a DATE-TIME value, since we know the exact time. Fixes bug #11278. (Before we were setting is_date, but icaltime_from_timet_with_zone() didn't convert it properly. We need to figure out how to handle DATEs when using time_t's.) * gui/dialogs/recurrence-page.c (get_exception_string): use e_time_format_date_and_time() so we show the time as well, if the exception is a DATE-TIME value. * cal-util/timeutil.c: removed time_add_month(), time_year_begin(), time_month_begin() & time_week_begin() - old pre-timezone functions which we no longer use. * cal-util/cal-recur.c (cal_recur_from_icalproperty): set ir.until.is_date to FALSE before converting to a time_t. Hopefully fixes bug #5034. svn path=/trunk/; revision=13366
* started some code to show the currently displayed dates in the folderDamon Chaplin2001-07-311-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-30 Damon Chaplin <damon@ximian.com> * gui/gnome-cal.c: * gui/calendar-commands.c (clear_folder_bar_label): started some code to show the currently displayed dates in the folder title bar. Unfinished. * gui/e-itip-control.c (set_date_label): * conduits/todo/todo-conduit.c (local_record_from_comp): * conduits/calendar/calendar-conduit.c (local_record_from_comp): free the CalComponentDateTimes. (Note the iTIP control needs updating for timezone support.) * cal-util/cal-component.c: Changed CalComponentDateTime so that the TZID is malloc'ed and freed rather than being a pointer to a static string. This was causing problems as sometimes we were freeing the string that was being pointed to, so we got corrupted TZIDs. * gui/comp-util.c (cal_comp_util_add_exdate): set TZID to NULL. DATE values do not have timezones. * gui/e-week-view.c: * gui/e-day-view.c: Moved 'Paste' after the New Appointment commands, since I think they are more commonly-used. Also added underlined accelerator keys. * gui/e-calendar-table.c: changed 'Edit this task' to 'Open' in the popup menu to be consistent with other folders, and separated from the clipboard commands. Also changed to use EPopupMenu so the accelerators work, and the masks may be useful at some point. * gui/dialogs/recurrence-page.c: use DATE values for UNTIL, since that makes it simpler. Fixes bug #5034. * gui/calendar-config.c (calendar_config_set_timezone): strdup the location string. Fixes bug #4990. * gui/tag-calendar.c (tag_calendar_cb): take 1 off iend as the times don't include the end time. * gui/e-week-view-layout.c (e_week_view_layout_event): fixed days_shown. Fixes bug #5709. * cal-client/cal-client.c (cal_client_get_timezone): took out some debugging messages. svn path=/trunk/; revision=11494
* Fixes bug #4380 as well as some leftovers from the days of struct tm andFederico Mena Quintero2001-07-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-11 Federico Mena Quintero <federico@ximian.com> Fixes bug #4380 as well as some leftovers from the days of struct tm and some uninitialized values. * gui/gnome-cal.c (gnome_calendar_on_date_navigator_selection_changed): Initialize the icaltimetype structures completely. (gnome_calendar_init): Do not reset priv->zone to NULL here, since it was set by gnome_calendar_update_config_settings() from setup_widgets(). * gui/calendar-model.c (set_completed): Do not set is_daylight. * gui/e-day-view.c (e_day_view_convert_grid_position_to_time): Likewise. * gui/e-week-view.c (e_week_view_set_timezone): Likewise. * cal-util/cal-recur.c (generate_instances_for_chunk): Likewise, and initialize start_tt and end_tt completely. * cal-util/timeutil.c (time_year_begin_with_zone): Likewise. (time_month_begin_with_zone): Likewise. (time_week_begin_with_zone): Likewise. (time_day_begin_with_zone): Likewise. (time_day_end_with_zone): Likewise. (time_from_isodate): Likewise. * gui/dialogs/task-page.c (task_page_fill_component): Initialize icaltime before using it. * gui/dialogs/event-page.c (event_page_fill_component): Likewise. * gui/dialogs/recurrence-page.c (simple_recur_to_comp): Removed an unused icaltimetype. * gui/dialogs/task-details-page.c (task_details_page_fill_component): Initialize icaltime before using it. svn path=/trunk/; revision=11024
* more timezone updates. I'm pretty much done with the calendar code now,Damon Chaplin2001-07-111-95/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-10 Damon Chaplin <damon@ximian.com> * gui/calendar-model.c: * gui/e-calendar-table.c: * gui/e-day-view-main-item.c: * gui/e-day-view-top-item.c: * gui/e-day-view.[hc]: * gui/e-week-view.c: * gui/gnome-cal.c: * gui/print.c: * gui/dialogs/cal-prefs-dialog.c: * gui/dialogs/comp-editor-util.c: * gui/dialogs/event-page.c: * pcs/cal-backend-file.c: * pcs/query.c: * cal-util/cal-component.[hc]: * cal-util/cal-recur.c: * cal-util/timeutil.[hc]: * cal-client/cal-client.[hc]: more timezone updates. I'm pretty much done with the calendar code now, except for alarms and conduits, which Federico and JP know more about. And there are a couple of other minor things to fix. But it is still pretty buggy. svn path=/trunk/; revision=10984
* cal-client/cal-client.[hc] cal-util/cal-component.cDamon Chaplin2001-07-031-17/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-03 Damon Chaplin <damon@ximian.com> * cal-client/cal-client.[hc] * cal-util/cal-component.c * cal-util/cal-recur.[hc] * cal-util/test-recur.c * cal-util/timeutil.c * gui/calendar-config.c * gui/calendar-model.[hc] * gui/comp-util.[hc] * gui/e-calendar-table.c * gui/e-day-view-main-item.c * gui/e-day-view-top-item.c * gui/e-day-view.[hc] * gui/e-itip-control.c * gui/e-timezone-entry.[hc] * gui/e-week-view.[hc] * gui/gnome-cal.[hc] * gui/goto.c * gui/tag-calendar.[hc] * gui/dialogs/cal-prefs-dialog.c * gui/dialogs/comp-editor-page.[hc] * gui/dialogs/comp-editor-util.[hc] * gui/dialogs/comp-editor.c * gui/dialogs/e-timezone-dialog.[hc] * gui/dialogs/event-page.c * gui/dialogs/meeting-page.c * gui/dialogs/recurrence-page.c * gui/dialogs/task-details-page.c * gui/dialogs/task-details-page.glade * gui/dialogs/task-page.c * idl/evolution-calendar.idl * pcs/cal-backend-file.c * pcs/cal-backend.c * pcs/cal-backend.h * pcs/cal.c * pcs/query.c: timezone changes everywhere. There's still quite a few things to update, and its not working well at present. svn path=/trunk/; revision=10729
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-231-2/+2
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* new files to contain layout code split off from EDayView an EWeekView, soDamon Chaplin2001-05-291-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | 2001-05-28 Damon Chaplin <damon@ximian.com> * gui/e-week-view-layout.[hc]: * gui/e-day-view-layout.[hc]: new files to contain layout code split off from EDayView an EWeekView, so we can use it for printing. * gui/print.c: rewritten to use the same layout code as the EDayView and EWeekView widgets. * gui/gnome-cal.c (gnome_calendar_get_task_pad_cal_client): added function so we can get the CalClient used for the TaskPad for printing. * gui/Makefile.am (evolution_calendar_SOURCES): added e-day-view-layout.[hc] amd e-week-view-layout.[hc]. * cal-util/timeutil.c (time_week_begin): (time_week_end): added week_start_day argument. * cal-util/cal-recur.c: added comments describing problems in it. svn path=/trunk/; revision=10037
* libical import cleanupJP Rosevear2001-01-241-1/+1
| | | | | | | | 2001-01-23 JP Rosevear <jpr@ximian.com> * libical import cleanup svn path=/trunk/; revision=7753
* Even though icaltime_from_timet() now properly ignores the is_utc argumentFederico Mena Quintero2000-12-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-13 Federico Mena Quintero <federico@helixcode.com> * cal-util/cal-component.c (ensure_mandatory_properties): Even though icaltime_from_timet() now properly ignores the is_utc argument since time_t values *are* in UTC by definition, we were passing FALSE for that argument's value in a bunch of places. So although it is ignored, changed them to TRUE for consistency. Hopefully newer versions of libical will remove that argument entirely since it does not make sense to speak of non-absolute time_t values. * cal-util/cal-recur.c (cal_recur_set_rule_end_date): Likewise. * conduits/calendar/calendar-conduit.c (comp_from_remote_record): Likewise. * conduits/todo/todo-conduit.c (comp_from_remote_record): Likewise. * gui/dialogs/task-editor.c (dialog_to_comp_object): Likewise. * gui/e-day-view.c (e_day_view_on_new_appointment): Likewise. (e_day_view_on_delete_occurrence): Likewise. (e_day_view_on_unrecur_appointment): Likewise. (e_day_view_on_unrecur_appointment): Likewise. (e_day_view_finish_long_event_resize): Likewise. (e_day_view_finish_resize): Likewise. (e_day_view_key_press): Likewise. (e_day_view_on_top_canvas_drag_data_received): Likewise. (e_day_view_on_main_canvas_drag_data_received): Likewise. * gui/e-week-view.c (e_week_view_key_press): Likewise. (e_week_view_on_new_appointment): Likewise. (e_week_view_on_delete_occurrence): Likewise. (e_week_view_on_unrecur_appointment): Likewise. * gui/event-editor.c (simple_recur_to_comp_object): Likewise. (recur_to_comp_object): Likewise. (dialog_to_comp_object): Likewise. * gui/gnome-cal.c (gnome_calendar_new_appointment): Likewise. svn path=/trunk/; revision=6995
* #if 0ed cal_obj_date_only_compare_func. (cal_object_get_rdate_end):Christopher James Lahey2000-12-141-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-13 Christopher James Lahey <clahey@helixcode.com> * cal-util/cal-recur.c: #if 0ed cal_obj_date_only_compare_func. (cal_object_get_rdate_end): Changed this function to get rid of a possible uninitialized error on the rdate function. * gui/calendar-model.c: Fixed some warnings involving the #define _XOPEN_SOURCE lines here. * gui/component-factory.c: #ifdef WANT_THE_EXECUTIVE_SUMMARYed out the summary_factory object since it's unused if WANT_THE_EXCUTIVE_SUMMARY is not defined. * gui/e-day-view.c: #if 0ed out e_day_view_remove_event_cb. (obj_updated_cb): #ifndef NO_WARNINGSed out a #warning. * gui/e-week-view-event-item.c (e_week_view_event_item_draw): Made it so that * gui/e-week-view.c (obj_updated_cb): #ifndef NO_WARNINGSed out a #warning. svn path=/trunk/; revision=6982
* Constify for new libical API. (set_text_list): Likewise.Federico Mena Quintero2000-12-131-2/+2
| | | | | | | | | | | | | | | | | | | | | 2000-12-12 Federico Mena Quintero <federico@helixcode.com> * cal-util/cal-component.c (get_text_list): Constify for new libical API. (set_text_list): Likewise. * cal-util/cal-recur.c (cal_recur_get_rule_end_date): Likewise. (cal_recur_set_rule_end_date): Likewise. * gui/e-itip-control.c (find_attendee): Likewise. (pstream_load): Likewise. * gui/gnome-cal.c (released_event_object_cb): Removed unused function. * gui/dialogs/task-editor.c (status_string_map): Removed unused variable. svn path=/trunk/; revision=6943
* updated the tests on the start & end time just before calling theDamon Chaplin2000-12-121-34/+47
| | | | | | | | | | | | | | 2000-12-11 Damon Chaplin <damon@helixcode.com> * cal-util/cal-recur.c (generate_instances_for_chunk): updated the tests on the start & end time just before calling the callback. It was skipping occurrences that started before the required interval's start time, which was wrong. We want all occurrences that intersect the interval. (cal_obj_time_weekday): removed the CalRecurrence* argument, since it isn't needed. svn path=/trunk/; revision=6925
* added changed flags and added calls to a new functionDamon Chaplin2000-12-111-16/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-11 Damon Chaplin <damon@helixcode.com> * gui/event-editor.c: added changed flags and added calls to a new function event_editor_set_changed() to set & reset this flag. Added prompt_to_save_changed() which is called when the user selects File/Close or the window's close button. Fixed the 'All day event' toggle button. Made the 'Alarm' page sensitive as appropriate when filling widgets. (Though note that the alarm widgets are not being set yet.) * gui/dialogs/task-editor.c: added changed flag as above. * gui/event-editor-dialog.glade: used good names for all the classification radio buttons so we can access them in the code. * gui/event-editor.c (init_widgets): use the "show week numbers" config option in the recurrence preview calendar. * gui/e-day-view.c (e_day_view_update_event_label): use 9:00 instead of 09:00 in the main view, as we do everywhere else now. It means the times won't line up, but they are easier to read which I think is better. Added support for Page Up/Down, though I think it should move the selection rather than just scroll the canvas. * cal-util/cal-recur.c (generate_instances_for_chunk): removed the end parameter since we should be using the chunk end time now. Added single_rule parameter for when we are generating the occurrences of a single RRULE, in which case the event's start date is not included in the occurrences output (unless it results from the RRULE expansion). Both of these fix problems when using COUNT. * gui/gnome-cal.c (gnome_calendar_on_date_navigator_selection_changed): fixed bug when checking if the new start day starts on the week start day. If you select a complete week it should now show the Week view. svn path=/trunk/; revision=6896
* use a gint for day rather than a guint since we now support -ve days. AlsoDamon Chaplin2000-11-271-55/+117
| | | | | | | | * cal-util/cal-recur.c (cal_obj_time_add_days): use a gint for day rather than a guint since we now support -ve days. Also fixed bug with weekly recurrences. svn path=/trunk/; revision=6674
* 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