aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/cal-backend-file.c
Commit message (Collapse)AuthorAgeFilesLines
* This commit was manufactured by cvs2svn to create tagRELEASE_1_0_1nobody2002-11-011-2038/+0
| | | | | | 'RELEASE_1_0_1'. svn path=/tags/RELEASE_1_0_1/; revision=18481
* Fixes #15892Rodrigo Moya2002-10-071-25/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-10-04 Rodrigo Moya <rodrigo@ximian.com> Fixes #15892 * idl/evolution-calendar.idl: added notifyErrorOccurred method to the Listener interface, so that backends can notify clients of errors that can't be reported otherwise. * pcs/cal.[ch] (cal_notify_error): new function. * pcs/cal-backend-file.c (save): made to save to temporary file and then moved to the correct file, so that we don't lose any data if there's a problem while saving. (notify_error): new function for notifying error messages to clients. * cal-client/cal-listener.[ch]: added new callback function for getting error messages from backends. (impl_notifyErrorOccurred): new method implementation. (cal_listener_class_init): initialize new epv member. (cal_listener_init, cal_listener_destroy, cal_listener_construct, cal_listener_new): initialize new function pointer. * cal-client/cal-client.[ch]: adapted to changes in CalListener class. (cal_client_class_init): added "backend_error" signal to CalClient class. (backend_error_cb): callback for "error_occurred" signal on the CalListener, which just emits the "backend_error" signal of CalClient. * gui/gnome-cal.c (gnome_calendar_construct): connect to "backend_error" signal on the CalClient's we create. (backend_error_cb): display error message on error from backend. * gui/e-tasks.c: likewise. svn path=/trunk/; revision=18329
* added isReadOnly method to Cal interface.Rodrigo Moya2002-10-021-0/+10
| | | | | | | | | | | | | | | | | | | 2002-10-01 Rodrigo Moya <rodrigo@ximian.com> * idl/evolution-calendar.idl: added isReadOnly method to Cal interface. * pcs/cal.c (impl_Cal_is_read_only): new method implementation. * pcs/cal-backend.[ch]: added is_read_only method to CalBackend class. (cal_backend_is_read_only): new function. * pcs/cal-backend-file.c (cal_backend_file_is_read_only): new method. (cal_backend_file_class_init): set new signal's virtual method. * cal-client/cal-client.[ch] (cal_client_is_read_only): new function. svn path=/trunk/; revision=18282
* Non-Connector part of #29334 (meeting created by a delegate in theDan Winship2002-09-281-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | delegator's calendar should have the delegator as Organizer). * idl/evolution-calendar.idl: add Cal_getEmailAddress, to return the email address associated with a backend (if any). * pcs/cal-backend.c (cal_backend_get_email_address): New. * pcs/cal-backend-file.c (cal_backend_file_get_email_address): Return NULL (for now). * pcs/cal.c (impl_Cal_get_email_address): Implement this by calling cal_backend_get_email_address and returning a NotFound exception if it returns NULL. * cal-client/cal-client.c (cal_client_get_email_address): New. (cal_client_init, cal_client_destroy, etc): initialize/free email_address * gui/dialogs/event-editor.c (event_editor_construct): Split this out of event_editor_init. Take and set a CalClient. (event_editor_new): Take a CalClient. * gui/dialogs/task-editor.c (task_editor_construct, task_editor_new): Likewise. * gui/dialogs/meeting-page.c (meeting_page_new, meeting_page_construct): Take a CalClient and call cal_client_get_email_address to find the default organizer address. (Also fix a bug if the default account's name has non-ASCII characters.) * gui/itip-utils.c (comp_from): New. When sending a REQUEST or CANCEL, use the Organizer as the From address. (itip_send_comp): Call comp_from and pass the result to Composer_setHeaders. * gui/comp-editor-factory.c (edit_existing, edit_new): Pass the CalClient to event_editor_new/task_editor_new * gui/e-calendar-table.c (open_task): Likewise. * gui/e-tasks.c (e_tasks_new_task): Likewise. * gui/gnome-cal.c (gnome_calendar_edit_object, gnome_calendar_new_task): Likewise. svn path=/trunk/; revision=18253
* Fixes #27961Rodrigo Moya2002-09-251-0/+5
| | | | | | | | | | | 2002-09-25 Rodrigo Moya <rodrigo@ximian.com> Fixes #27961 * pcs/cal-backend-file.c (cal_backend_file_update_object): set the LAST-MODIFIED time of the components when we save them. svn path=/trunk/; revision=18213
* return a builtin timezone if we don't find the timezone in our component.Rodrigo Moya2002-09-251-7/+16
| | | | | | | | | | 2002-09-24 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_get_timezone_object, cal_backend_file_get_timezone): return a builtin timezone if we don't find the timezone in our component. svn path=/trunk/; revision=18202
* provide error message param, give a dialog with the message if we get aJP Rosevear2002-09-051-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-09-04 JP Rosevear <jpr@ximian.com> * gui/itip-utils.c (comp_server_send): provide error message param, give a dialog with the message if we get a busy result; return TRUE if we succeed (itip_send_comp): bail out if we had a problem sending via the server * cal-client/cal-client.c (cal_client_send_object): pass back error message if we get the busy exception in the new param * cal-client/cal-client.h: update proto * pcs/cal.c (impl_Cal_send_object): dump backend error message into Busy exception * pcs/cal-backend.h: update proto * pcs/cal-backend.c (cal_backend_send_object): take/pass new error message parameter * pcs/cal-backend-file.c (cal_backend_file_send_object): take new param * idl/evolution-calendar.idl: add errorMsg to Busy exception svn path=/trunk/; revision=17964
* just return the object untouched since we don't send anythingJP Rosevear2002-08-081-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-08-07 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_send_object): just return the object untouched since we don't send anything * pcs/cal-backend.c (cal_backend_remove_object): call virtual method * pcs/cal-backend.h: add send result codes, new proto * pcs/cal.c (impl_Cal_send_object): implement sendObject corba call (cal_class_init): add to epv * gui/itip-utils.c (comp_toplevel_with_zones): utility function to create icalcomponent with necessary timezone info (comp_has_attendee): see if attendee is in the attendee list (comp_server_send): use above and remove attendees if the server sends them * gui/e-itip-control.c (show_current_todo): remove unused var * idl/evolution-calendar.idl: add Busy exception and * cal-client/cal-client.c (cal_client_send_object): send object via the server (if the server can) * cal-client/cal-client.h: add send results and new proto svn path=/trunk/; revision=17734
* check the value returned by gnome_vfs_uri_to_string before using it.Rodrigo Moya2002-05-251-1/+4
| | | | | | | | | | 2002-05-24 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (save): check the value returned by gnome_vfs_uri_to_string before using it. (cal_backend_file_open): ditto. svn path=/trunk/; revision=17008
* check the string returned by gnome_vfs_uri_to_string, which can be empty.Rodrigo Moya2002-05-201-0/+4
| | | | | | | | | | 2002-05-20 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_open): check the string returned by gnome_vfs_uri_to_string, which can be empty. If so, return an error. svn path=/trunk/; revision=16940
* added PermissionDenied exception and make it be raised in open,Rodrigo Moya2002-05-171-14/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-05-16 Rodrigo Moya <rodrigo@ximian.com> * idl/evolution-calendar.idl: added PermissionDenied exception and make it be raised in open, updateObjects and removeObject. * pcs/cal-backend.h: added CAL_BACKEND_OPEN_PERMISSION_DENIED to CalBackendOpenStatus enumeration, added CalBackendResult enumeration. * pcs/cal.c: * pcs/cal-backend.c: * pcs/cal-backend-file.c: adapted to changes in update_objects and remove_object methods. * cal-client/cal-client.[ch]: added CalClientResult enumeration. (cal_client_update_object, cal_client_update_objects, cal_client_remove_object): changed to return a CalClientResult. * conduits/calendar/calendar-conduit.c: * calendar/conduits/todo/todo-conduit.c: * importers/icalendar-importer.c: * gui/dialogs/comp-editor.c: * gui/calendar-model.c: * gui/e-calendar-table.c: * gui/e-day-view.c: * gui/e-itip-control.c: * gui/e-week-view.c: * gui/comp-util.c: * gui/e-tasks.c: * gui/tasks-migrate.c: adapted to changes in cal_client_update_object(s) and cal_client_remove_object. svn path=/trunk/; revision=16932
* new method.Rodrigo Moya2002-04-121-0/+17
| | | | | | | | | | | | | | | 2002-04-05 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend.[ch] (cal_backend_get_query): new method. * pcs/cal-backend-file.c (cal_backend_file_get_query): new method. * pcs/cal.c (impl_Cal_get_query): call the CalBackend's implementation instead of calling query_new directly. * pcs/query.[ch]: fixed headers. svn path=/trunk/; revision=16443
* recurrence expansion callback for free/busy (create_user_free_busy):JP Rosevear2001-11-121-18/+44
| | | | | | | | | | | 2001-11-11 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c (free_busy_instance): recurrence expansion callback for free/busy (create_user_free_busy): expand recurrences and use date/time values for dtstart and dtend svn path=/trunk/; revision=14670
* don't leak the string returned by cal_component_get_as_string nor theRodrigo Moya2001-11-091-1/+7
| | | | | | | | | | | 2001-11-08 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_compute_changes_foreach_key): don't leak the string returned by cal_component_get_as_string nor the temporary CalComponent we create svn path=/trunk/; revision=14629
* Fixing the license text.Ettore Perazzoli2001-10-281-4/+3
| | | | svn path=/trunk/; revision=14214
* when iterating over the subcomponents, use 'subcomp' rather thanDamon Chaplin2001-10-251-2/+2
| | | | | | | | | | | | | | | | | | | | 2001-10-24 Damon Chaplin <damon@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_update_objects): when iterating over the subcomponents, use 'subcomp' rather than 'icalcomp'. That meant it wasn't working at all well when an entire VCALENDAR was passed in. * cal-util/cal-component.c: handle DURATION property used instead of DTEND or DUE. In cal_component_get_dtend/due we will return DTSTART + DURATION if necessary. In set_dtend/due we remove any DURATION property. Fixes bug #11262. * gui/e-meeting-model.c (build_etable): * gui/e-calendar-table.c (e_calendar_table_init): use U_ for the ECellCombo popdown strings, as it expects UTF-8 strings. svn path=/trunk/; revision=13992
* added setDefaultTimezone() method.Damon Chaplin2001-10-231-88/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* moved to a common place (cal_backend_file_open): check if "uristr != NULL"Rodrigo Moya2001-10-101-62/+3
| | | | | | | | | | | | | | 2001-10-09 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (mail_account_*): moved to a common place (cal_backend_file_open): check if "uristr != NULL" and not "uri != NULL" * pcs/cal-backend-util.c: moved to here * gui/e-day-view.c: add missing header file svn path=/trunk/; revision=13517
* replace use of gnome_vfs_uri with e_uriRodrigo Moya2001-10-041-24/+41
| | | | | | | | | | | | | | | | | | | | | | | 2001-10-03 Rodrigo Moya <rodrigo@ximian.com> * gui/component-factory.c: * gui/calendar-offline-handler.c: * gui/comp-editor-factory.c: replace use of gnome_vfs_uri with e_uri * gui/e-meeting-model.c (start_addressbook_server): make it return void, since the return value does not mind * pcs/cal.c: * pcs/cal-factory.c: * pcs/cal-backend.[ch]: don't use GnomeVFS for URI management * pcs/cal-backend-file.c: ditto, only use GnomeVFS for internal operations * cal-client/cal-client.c (cal_client_open_calendar): don't CORBA_exception_free before checking for exceptions svn path=/trunk/; revision=13380
* strdup the uid to avoid double free, write out only after everything isJP Rosevear2001-10-021-3/+3
| | | | | | | | | | 2001-10-01 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_compute_changes): strdup the uid to avoid double free, write out only after everything is done svn path=/trunk/; revision=13266
* Handle the fields and category we don't sync by making sure we don'tJP Rosevear2001-09-291-3/+9
| | | | | | | | | | | | | | | | 2001-09-28 JP Rosevear <jpr@ximian.com> * conduits/calendar/calendar-conduit.c (local_record_from_comp): Handle the fields and category we don't sync by making sure we don't overwrite them (local_record_to_pilot_record): use local record category (pre_sync): track db info * conduits/calendar/calendar-conduit.h: db info field * conduits/todo/todo-conduit.[hc]: same as above svn path=/trunk/; revision=13235
* new protoJP Rosevear2001-09-261-5/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-26 JP Rosevear <jpr@ximian.com> * pcs/cal.h: new proto * pcs/cal.c (impl_Cal_set_mode): implement set mode method (cal_class_init): set setMode function in epv (cal_notify_mode): notify listener of mode change * pcs/cal-factory.c (add_uri): deal with UriType renaming * pcs/cal-backend.h: add new virtual methods and protos * pcs/cal-backend.c (cal_backend_class_init): init new virtual methods to null (cal_backend_set_mode): sets mode (cal_backend_get_mode): gets mode * pcs/cal-backend-file.c (cal_backend_file_class_init): overide get_mode and set_mode methods (cal_backend_file_get_mode): return mode (notify_mode): have listeners notified of the set mode call (cal_backend_file_set_mode): set the mode by indicating not supported * cal-client/cal-listener.h: update proto * cal-client/cal-listener.c (impl_notifyCalSetMode): implement set mode callback (cal_listener_construct): take set mode callback (cal_listener_new): ditto * cal-client/cal-client.h: update protos, add signal proto * cal-client/cal-client.c (cal_client_class_init): add cal_set_mode signal (cal_set_mode_cb): handle set mode callback from listener (cal_client_open_calendar): pass additional param to cal_listener_new (cal_client_set_mode): wrapper to set the calendar mode * idl/evolution-calendar.idl: make UriType into CalMode, add SetModeStatus enum and notifyCalSetMode method to the listener * gui/calendar-offline-handler.c (create_connection_list): fetch the uri list ourselves (impl_prepareForOffline): reflect param change of create_connect_list (update_offline): ditto (backend_cal_set_mode): set mode call back (backend_cal_opened): cal opened call back, set mode to local (impl_goOffline): reflect UriType renaming * cal-util/cal-util.h: rename UriType to CalMode svn path=/trunk/; revision=13142
* use bonobo-exception stuff to clean codeJP Rosevear2001-09-261-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-25 JP Rosevear <jpr@ximian.com> * pcs/cal.c: use bonobo-exception stuff to clean code * pcs/cal-factory.c (add_uri): add uri to the list if the type matches (impl_CalFactory_uriList): implement uriList method * pcs/cal-backend.h: new virtual function member * pcs/cal-backend.c (cal_backend_is_remote): call virtual function * pcs/cal-backend-file.c (cal_backend_file_class_init): override virtual function (cal_backend_file_is_remote): new virtual function, always return FALSE * idl/evolution-calendar.idl: uriList factory call, with flags for types to get * gui/dialogs/comp-editor.c (comp_editor_destroy): cast to remove warning * gui/e-itip-control.c (write_label_piece): kill warnings by take const char * * gui/component-factory.c (create_object): aggregate offline interface * gui/Makefile.am: compile new files * calobj.[hc]: Remove obsolete files * cal-util/cal-util.h: enum URI types for uriList call * cal-client/cal-client.c (build_uri_list): build list from string sequence (cal_client_uri_list): factory call to get uri list * cal-client/cal-client.h: new proto * cal-client/cal-client.c: use bonobo exception stuff to clean code * gui/calendar-offline-handler.[hc]: Start some skeleton routines for online/offline handling * pcs/cal-factory.c (launch_backend_for_uri): use accessor and remove FIXME svn path=/trunk/; revision=13110
* gets a config db (cal_backend_file_destroy): release config dbJP Rosevear2001-09-211-15/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-20 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c (load_db): gets a config db (cal_backend_file_destroy): release config db (cal_backend_file_init): use load_db (mail_account_get): gets a mail account by number (mail_account_get_default): gets the default mail account (mail_account_is_valid): looks to see if any accounts have the given address (create_user_free_busy): modularize so we can call multiple times if necessary, set organizer (cal_backend_file_get_free_busy): if the list of users is null, use the default account otherwise get the same info for each address that is an identity in the mailer * gui/itip-utils.c (itip_addresses_get): s/gint/glong/ for bonobo conf returns * gui/calendar-commands.c (publish_freebusy_cmd): fix problems from a merge so that we publish 6 weeks of free/busy information again svn path=/trunk/; revision=13015
* new class for managing multiple calendars, with an API very similar to theRodrigo Moya2001-09-191-28/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-18 Rodrigo Moya <rodrigo@ximian.com> * cal-client/cal-client-multi.[ch]: new class for managing multiple calendars, with an API very similar to the CalClient one, for ease of transition from one to the other * gui/component-factory.c (xfer_folder, remove_folder, create_folder): reworked to be able to manage folders for any calendar backend, and not only the file: one 2001-09-18 Rodrigo Moya <rodrigo@ximian.com> * idl/evolution-calendar.idl: changed signature for the getFreeBusy method, to return a sequence of CalObj's, and added sequence of users as a new parameter to that method * cal-client/cal-client.c (cal_client_get_free_busy): adapted to new IDL method signature, by adding a new "GList *users" parameter, for callers to be able to specify a list of users * pcs/cal-backend.[ch] (cal_backend_get_free_busy): * pcs/cal-backend-file.c (cal_backend_file_get_free_busy): add the "GList *users" parameter. In cal_backend_file_get_free_busy, call lookup_component to get the CalComponent for each uid, instead of calling cal_backend_get_object, which meant converting the component to a string and then parsing it again. * cal-client/client-test.c (cal_opened_cb): * gui/e-itip-control.c (send_freebusy): * gui/calendar-commands.c (publish_freebusy_cmd): adapted to new getFreeBusy method signature svn path=/trunk/; revision=12951
* added a timeout to refresh the list every 10 minutes. Not ideal, as theDamon Chaplin2001-09-181-20/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-17 Damon Chaplin <damon@ximian.com> * gui/calendar-model.c: added a timeout to refresh the list every 10 minutes. Not ideal, as the user may be editing a task when it gets refreshed. (adjust_query_sexp): use the 'completed-before?' operator to filter out tasks according to the config settings. * gui/dialogs/task-details-page.c (task_details_page_fill_widgets): added support for the 'Completed' date. This code must have got lost somewhere, as it used to work. (date_changed_cb): set the priv->updating flag while updating the other widgets. * pcs/cal-backend-file.c (cal_backend_file_update_objects): made sure we freed the components. * pcs/query.c (func_completed_before): added 'completed-before?' operator. * gui/calendar-config.c (calendar_config_configure_e_cell_date_edit): don't set the lower & upper hour. Use 0-24 like the EDateEdit does. * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_show_config): set the 12/24-hour time format options sensitive only if we support both. * gui/calendar-config.c (config_read): if the locale doesn't define 'am' and 'pm' strings then we must use 24-hour format. * gui/calendar-commands.c (calendar_set_folder_bar_label): don't translate the '%d' as it doesn't make much sense. Resolves bug #8027. svn path=/trunk/; revision=12925
* See if the set of categories changed by using the removed_categories hashFederico Mena Quintero2001-08-301-16/+77
| | | | | | | | | | | | | | | | | | 2001-08-29 Federico Mena Quintero <federico@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_remove_object): See if the set of categories changed by using the removed_categories hash table. (cal_backend_file_init): Create a table of removed categories. This allows us to notify if and only if the set of category changes when an object is updated/removed, instead of unconditionally notifying if an object is updated. (cal_backend_file_update_objects): Only notify if the set of categories really changed. (update_categories_from_comp): Shuffle the categories between the priv->categories and priv->removed_categories lists. svn path=/trunk/; revision=12522
* new files to contain utility functions for calendar backendsRodrigo Moya2001-08-211-137/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-21 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-util.[ch]: new files to contain utility functions for calendar backends * pcs/cal-backend.c (cal_backend_add_cal): implement it here, and not in the calendar backends. Add a "cal_added" signal, so that backends are notified when a new Cal is added, if they need to (cal_backend_get_type_by_uid): implement it here * pcs/cal-backend-file.c (fill_alarm_instances_seq): moved to cal-backend-util.c (cal_backend_file_add_cal): removed (cal_backend_file_init): connect to the "cal_added" signal in the CalBackend class so that we can update categories when a new Cal is added (cal_backend_file_get_type_by_uid): removed * pcs/cal-backend-db.c (fill_alarm_instances_seq): moved to cal-backend-util.c (cal_backend_db_add_cal): removed (cal_backend_db_get_type_by_uid): removed * AUTHORS: added JP and Damon to list of authors svn path=/trunk/; revision=12339
* new functions moved from the CalBackendFile, to allow its use outside ofRodrigo Moya2001-08-211-299/+21
| | | | | | | | | | | | | | | | | | | | 2001-08-20 Rodrigo Moya <rodrigo@ximian.com> * cal-util/cal-util.[ch] (cal_util_generate_alarms_for_list): (cal_util_generate_alarms_for_comp): new functions moved from the CalBackendFile, to allow its use outside of it. The signature has changed a little bit, since these functions need a way to get the timezones from the callers, so a callback function to resolve the timezones has been added to the list of parameters * pcs/cal-backend-file.c (generate_alarms_for_list): (generate_alarms_for_comp): moved to cal-util, with all their related functions/structures * pcs/cal-backend-db.c: removed functions that were moved to cal-util svn path=/trunk/; revision=12338
* added new backend method to get the component given a UID.Damon Chaplin2001-08-101-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-09 Damon Chaplin <damon@ximian.com> * pcs/cal-backend.c (cal_backend_get_object_component): added new backend method to get the component given a UID. * pcs/cal-backend-file.c (cal_backend_file_get_object_component): added implementation of above virtual method. * pcs/query.c (match_component): use the new backend function to get the CalComponent rather than the string. This avoids converting all the calendar components to strings and parsing them back into components for every query! (That wasn't a good idea, was it ;) * gui/e-week-view.c: * gui/e-day-view.c: use a timeout handler to layout the events, to avoid doing a layout for each event we get from a query. * gui/print.c (print_day_add_event): * gui/e-day-view.c (e_day_view_add_event): set start_row_or_col and num_columns to 0. They are guint8's. * gui/e-week-view.c (e_week_view_free_events): hide all the jump buttons. Fixes bug #5946. * gui/calendar-commands.c (calendar_set_folder_bar_label): added the day numbers for the month view. * gui/dialogs/recurrence-page.glade: changed "_Delete" to "_Remove", since it clashed with "_Add". Also added underlined accelerators for the recurrence radio buttons. Note that none of these accelerators actually work at present, due to the way we are using .glade files for each notebook page. I need to add a bug about this. Also, the "_Action" menu doesn't popup when I press Alt+A, even though the "_File" menu does popup when I press Alt+F. Strange. * pcs/cal-backend-file.c (cal_backend_file_get_timezone_object): removed debug msgs. svn path=/trunk/; revision=11866
* added 'different_timezone' fields to EDayViewEvent and EWeekViewEvent, toDamon Chaplin2001-08-071-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-06 Damon Chaplin <damon@ximian.com> * gui/e-week-view.h: * gui/e-day-view.h: added 'different_timezone' fields to EDayViewEvent and EWeekViewEvent, to note that the event is in a different timezone. We now compute this once when we add the event to the array, rather than each time we draw the event. If it is set, we will draw the timezone icon next to the event. * gui/e-day-view-main-item.c: take transparency into account when drawing the blue vertical bars to represent busy time. * gui/tag-calendar.c: take transparency into account when tagging the mini calendar. * gui/e-calendar-table.c (e_calendar_table_init): removed the "None" options for transparency and classification, since these properties have defaults anyway, so we may as well use those to keep it simple. Also use "Free" and "Busy" for transparency, rather than "Transparent" and "Opaque". * gui/calendar-model.c: updated classification & transparency code as above. * gui/e-calendar-table.etspec: changed "Transparency" to "Show Time As" since people have a chance of understanding that. * gui/e-week-view.c: * gui/e-day-view.c: * gui/gnome-cal.c: added functions to get the visible time range. * gui/calendar-commands.c: finished stuff to set the folder bar label to the dates currently displayed. * gui/control-factory.c (control_factory_new_control): connected signal to update the folder title bar label when the dates shown are changed. I had to connect it here since we need the BonoboControl in the callback, and I don't know how to get the control from the widget. * gui/tasks-control.c (tasks_control_activate): clear the folder bar label. We could display something here at some point. * gui/dialogs/recurrence-page.glade: changed "_Add" to "A_dd", since we have an "_Actions" menu. (These also use Alt+key, right?) * gui/dialogs/event-page.glade: * gui/dialogs/event-page.c: added 'Show Time As' field, which is really the TRANSP property but with a better name! Also changed one of the "_Confidential" to "Con_fidential" since we already have "_Contacts" using the same 'C' key. * pcs/cal-backend-file.c (cal_backend_file_get_free_busy): skip events that are TRANSPARENT. Also added comment as this code looks inefficient. * cal-util/cal-component.c: removed stuff for comparing timezones. * gui/comp-util.c (cal_comp_util_compare_event_timezones): moved the above function here, and updated it to compare the UTC offsets of the times as well as the TZIDs. svn path=/trunk/; revision=11717
* The calendar search bar widget now includes a drop-down menu of availableFederico Mena Quintero2001-08-021-51/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-08-01 Federico Mena Quintero <federico@ximian.com> The calendar search bar widget now includes a drop-down menu of available categories. * pcs/query.c (func_has_categories): Handle one and only one #f value as meaning "unfiled", for components that have no categories at all. * pcs/cal-backend-file.c (open_cal): Duh, do not notify here about changed categories since at this point we don't have any clients bound to us yet. (create_cal): Likewise. (cal_backend_file_add_cal): Notify here. * gui/cal-search-bar.h (CalSearchBarClass): New signal "category_changed". * gui/cal-search-bar.c (cal_search_bar_construct): Add a drop-down menu for the list of categories. (search_option_items): Removed the "Has category" option, since we now have the drop-down menu instad and it would be confusing to have both options. (regen_query): Likewise. Also, this function is now the old cal_search_bar_query_changed() and is shared by that very function and by the callback from the drop-down menu. (notify_query_contains): Include the sub-sexp for the categories. (cal_search_bar_set_categories): New function. (cal_search_bar_get_category): New function. (categories_selection_done_cb): Emit the "category_changed" signal. * gui/e-tasks.c (obj_updated_cb): Removed function since it did not do anything; all updates are handled by the CalendarModel. (obj_removed_cb): Likewise. (ETasksPrivate): Removed the fields for the categories option menu, since now it is in the ESearchBar. (search_bar_sexp_changed_cb): Use calendar_model_set_query() directly here, as we do not need to frob the sexp anymore. (update_query): Removed. (client_categories_changed_cb): New callback. (search_bar_category_changed_cb): New callback. (e_tasks_new_task): Set the default category on the component to the one that is selected in the search bar. (e_tasks_on_filter_selected): Removed. (e_tasks_on_categories_changed): Removed. (e_tasks_rebuild_categories_menu): Removed. (e_tasks_add_menu_item): Removed. (e_tasks_setup_view_menus): Sanitized not to sink objects wildly. (e_tasks_discard_view_menus): New function. * gui/calendar-model.h (CalendarModelClass): Removed the "categories_changed" signal since this is handled in the Wombat now. * gui/calendar-model.c (calendar_model_get_categories): Removed. (calendar_model_set_value_at): Do not collect the categories. (query_obj_updated_cb): Likewise. (calendar_model_collect_categories): Removed. (calendar_model_set_default_category): Constify. * gui/tasks-control.c (tasks_control_deactivate): Call e_tasks_discard_view_menus(). * gui/gnome-cal.c (search_bar_category_changed_cb): Set the default category for the task pad's model. svn path=/trunk/; revision=11559
* The Wombat now keeps track of which categories are present in the objectsFederico Mena Quintero2001-08-011-1/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-31 Federico Mena Quintero <federico@ximian.com> The Wombat now keeps track of which categories are present in the objects of a calendar. It will notify the clients of changes in this set. This is to make the category drop-down menus in the calendar/tasks views be always up to date. * idl/evolution-calendar.idl (Listener): Added a notifyCategoriesChanged() method. The Wombat now keeps track of the categories within a calendar. * cal-client/cal-listener.[ch]: Switched it to use BonoboXObject. Also added the notifyCategoriesChanged implementation. * cal-client/cal-client.[ch]: Added a "categories_changed" signal. * pcs/cal-backend-file.c: Maintain a list of the live categories. (update_categories_from_comp): New function to maintain the set of live categories. (add_component): Update the set of categories. (remove_component): Likewise. (open_cal): Notify about changes in the set of categories. (create_cal): Likewise. (cal_backend_file_update_objects): Likewise. (cal_backend_file_remove_object): Likewise. (notify_categories_changed): New function to notify the clients about the current set of categories. * pcs/cal.c (cal_notify_categories_changed): New function. svn path=/trunk/; revision=11536
* implementedRodrigo Moya2001-07-301-1/+57
| | | | | | | | 2001-07-30 Rodrigo Moya <rodrigo@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_get_free_busy): implemented svn path=/trunk/; revision=11472
* new protoJP Rosevear2001-07-131-18/+2
| | | | | | | | | | | | | | | | | 2001-07-12 JP Rosevear <jpr@ximian.com> * cal-util/cal-util.h: new proto * cal-util/cal-util.c (cal_util_new_top_level): standard place to get your top level calendar component * pcs/cal-backend-file.c (create_cal): use it * gui/itip-utils.c (itip_send_comp): ditto * gui/e-calendar-table.c (e_calendar_table_copy_clipboard): ditto svn path=/trunk/; revision=11053
* renamed updateObject to updateObjects and removed the UID argument, sinceDamon Chaplin2001-07-121-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-11 Damon Chaplin <damon@ximian.com> * idl/evolution-calendar.idl: renamed updateObject to updateObjects and removed the UID argument, since it can add/update multiple objects at once. (It can't yet, but it will!) * pcs/cal.c: * pcs/cal-backend.[hc]: * pcs/cal-backend-file.c: renamed update_object to update_objects and got rid of the UID arg. * cal-client/cal-client.c (cal_client_update_objects): new function to add/update multiple objects in one go, i.e for iTIP and for importing calendars. * gui/print.c (print_date_label): fixed type bug. * gui/e-week-view.[hc]: * gui/e-week-view-event-item.c: draw the timezone icons if the event's DTSTART or DTEND is in a different timezone to the current one. Note that we may want to change this so it compares the UTC offsets rather than the TZIDs, since currently it will draw the icons for all events coming from iTIP requests from other clients. svn path=/trunk/; revision=11027
* more timezone updates. I'm pretty much done with the calendar code now,Damon Chaplin2001-07-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Pass the parent vCalendar component as the timezone closure ofFederico Mena Quintero2001-07-111-1/+10
| | | | | | | | | | | | | | | 2001-07-09 Federico Mena Quintero <federico@ximian.com> * pcs/cal-backend-file.c (generate_alarms_for_comp): Pass the parent vCalendar component as the timezone closure of cal_recur_generate_instances(). * gui/dialogs/alarm-page.c (get_alarm_string): Make the string consistent with the option menu text. (get_alarm_string): Removed extra spaces from the last part of the alarm string. svn path=/trunk/; revision=10961
* added virtual method to get a VTIMEZONE component given a TZID. We needDamon Chaplin2001-07-031-5/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-03 Damon Chaplin <damon@ximian.com> * pcs/cal-backend.[hc]: added virtual method to get a VTIMEZONE component given a TZID. We need this to resolve TZIDs when expanding an event using cal_recur_generate_instances() in query.c. * pcs/cal-backend-file.c (cal_backend_file_get_timezone): implemented virtual method. (cal_backend_file_update_object): fixed bug, kind -> child_kind. * pcs/query.c (func_occur_in_time_range): use the virtual method for resolving TZIDs. The other way didn't work anyway, as we didn't have the entire VCALENDAR with VTIMEZONEs in it. * gui/dialogs/recurrence-page.c (init_widgets): (make_ending_until_special): moved the call to e_date_edit_set_get_time_callback() from init_widgets to make_ending_until_special(), since that is where the widget gets created. * gui/e-timezone-entry.c (e_timezone_entry_set_timezone): handle zone being NULL. svn path=/trunk/; revision=10732
* cal-client/cal-client.[hc] cal-util/cal-component.cDamon Chaplin2001-07-031-7/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Renamed the occur field to occur_start; added an occur_end field. This wayFederico Mena Quintero2001-06-271-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-06-26 Federico Mena Quintero <federico@ximian.com> * idl/evolution-calendar.idl (CalAlarmInstance): Renamed the occur field to occur_start; added an occur_end field. This way we can present the complete times for the occurrence from the server. * cal-util/cal-component.h (CalAlarmInstance): Likewise. * pcs/cal-backend-file.c (add_alarm_occurrences_cb): Fill the new fields appropriately. (generate_absolute_triggers): Likewise; we use -1 in case the component has no DTSTART or DTEND because there are no meaningful occurrence dates here. (fill_alarm_instances_seq): Fill in the new fields. * cal-client/cal-client.c (build_alarm_instance_list): Likewise. * gui/alarm-notify/alarm-notify-dialog.c (alarm_notify_dialog): Take in both the occur_start and occur_end times. * gui/goto.c (goto_dialog): Free the dlg structure on the bail-out cases. * gui/dialogs/event-page.c (get_widgets): Do not assert if we cannot find the main widget; just return FALSE. * gui/dialogs/alarm-page.c (get_widgets): Likewise. * gui/dialogs/task-page.c (get_widgets): Likewise. * gui/dialogs/task-details-page.c (get_widgets): Likewise. * gui/dialogs/meeting-page.c (get_widgets): Likewise. svn path=/trunk/; revision=10517
* Initialize libglade.Federico Mena Quintero2001-06-251-5/+12
| | | | | | | | | | | | | | | | | 2001-06-24 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/notify-main.c (main): Initialize libglade. * pcs/cal-backend-file.c (compute_alarm_range): icaldurationtype_as_int() will now return a negative value if dur->is_neg is true, so we need to flip the sign of some operations here. (add_alarm_occurrences_cb): Likewise. * pcs/cal-backend-db.c (compute_alarm_range): Likewise. (add_alarm_occurrences_cb): Likewise. svn path=/trunk/; revision=10456
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-231-1/+1
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* changed getFreeBusy method to return a CalObj instead of a sequenceRodrigo Moya2001-06-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 2001-06-22 Rodrigo Moya <rodrigo@ximian.com> * idl/evolution-calendar.idl: changed getFreeBusy method to return a CalObj instead of a sequence * cal-client/cal-client.[ch] (cal_client_get_free_busy): changed it to work like the cal_client_get_object function, that is, it does not return anymore a list of UIDs, but a CalClientGetStatus code, and added a new parameter for the caller to get the component back when this function returns (cal_client_open): aggregate WombatClient interface to the CalListener being used * pcs/cal-backend-db.c, pcs/cal-backend-file.c (..get_free_busy): set return value to "char *" as it will be returning a FreeBusy object, and not a list of UIDs * pcs/cal-backend.[ch] (cal_backend_get_free_busy): ditto * pcs/cal.c (cal_construct): queryInterface on the listener to obtain the WombatClient interface svn path=/trunk/; revision=10393
* added getFreeBusy methodRodrigo Moya2001-06-201-0/+8
| | | | | | | | | | | | | | | | | | | | 2001-06-20 Rodrigo Moya <rodrigo@ximian.com> * idl/evolution-calendar.idl: added getFreeBusy method * pcs/cal.c (impl_Cal_get_free_busy): implementation of the new getFreeBusy added method * pcs/cal-backend.[ch]: added new virtual method to the CalBackend class (get_free_busy) * pcs/cal-backend-db.c (cal_backend_db_get_free_busy): new function, not implemented yet * pcs/cal-backend-file.c (cal_backend_file_get_free_busy): new funtion, not implemented yet svn path=/trunk/; revision=10333
* prepend to both changes and change_ids when different and mark asJP Rosevear2001-04-121-2/+2
| | | | | | | | | | 2001-04-11 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c (cal_backend_file_compute_changes): prepend to both changes and change_ids when different and mark as modified, not added svn path=/trunk/; revision=9246
* Engine for live queries to calendars. A query object watches a CalBackendFederico Mena Quintero2001-03-301-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-29 Federico Mena Quintero <federico@ximian.com> Engine for live queries to calendars. A query object watches a CalBackend in the PCS and is otherwise completely separate from it; backends need to do nothing to support live queries. Right now we have the following functions: (get-vtype) Returns a string indicating the type of component (VEVENT, VTODO, VJOURNAL, VFREEBUSY, VTIMEZONE, UNKNOWN). (occur-in-time-range? START END) START - int, time_t start of the time range END - int, time_t end of the time range Returns a boolean indicating whether the component has any occurrences in the specified time range. * idl/evolution-calendar.idl (Cal::getQuery): New method that initiates a live query. (Query): New interface for a handle to a live query. (QueryListener): New interface for a listener to changes in a live query. * pcs/query.[ch]: New files with the live query engine. * pcs/cal-backend.h (CalBackendClass): Added notification signals so that the query system can catch them. (CalBackendClass): New virtual method ::get_load_state(). * pcs/cal-backend.c (cal_backend_opened): (cal_backend_obj_updated): (cal_backend_obj_updated): New functions to emit the notification signals; to be used only by backend implementations. (cal_backend_get_load_state): New function. * pcs/cal-backend-file.c (notify_update): Call cal_backend_obj_updated(). (notify_remove): Call call_backend_obj_removed(). (open_cal): Free the icalcomp if it is not of the correct type. (cal_backend_file_get_load_state): Implemented new method. * pcs/cal-backend-db.c (cal_backend_db_update_object): Call cal_backend_obj_updated(). (cal_backend_db_remove_object): Call cal_backend_obj_removed(). (cal_backend_db_get_load_state): Implemented new method. * pcs/cal.c (Cal_get_query): Implementation of the ::getQuery() method. svn path=/trunk/; revision=9013
* Move the get_change code hereJP Rosevear2001-02-091-2/+142
| | | | | | | | | | | | | | | | | 2001-02-08 JP Rosevear <jpr@ximian.com> * pcs/cal-backend-file.c: Move the get_change code here * pcs/cal-backend.c: Remove get_changes related stuff and implement by calling the virtual method instead * pcs/cal-backend.h: New virtual method. * pcs/cal-backend-file.c (compute_alarm_range): Use icaldurationtype_as_int (replace _as_timet) (add_alarm_occurrences_cb): ditto svn path=/trunk/; revision=8123
* libical import cleanupJP Rosevear2001-01-241-2/+2
| | | | | | | | 2001-01-23 JP Rosevear <jpr@ximian.com> * libical import cleanup svn path=/trunk/; revision=7753
* Ximianified email addresses and copyrights.Federico Mena Quintero2001-01-171-63/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-17 Federico Mena Quintero <federico@ximian.com> * */*: Ximianified email addresses and copyrights. * idl/evolution-calendar.idl (CalFactory::open): Renamed from ::load(), and added an only_if_exists argument. (CalFactory::create): Removed method. (Listener::OpenStatus): Removed the IN_USE error and replaced it with a NOT_FOUND one; renamed the enum from LoadStatus. (Listener::notifyCalOpened): Renamed from notifyCalLoaded(). * pcs/cal-backend.h (CalBackend): Removed the uri field. (CalBackendOpenStatus): Renamed from CalBackendLoadStatus and added a NOT_FOUND value. (CalBackendClass::open): Put in a slot for the open method. * pcs/cal-backend.c (cal_backend_create): Removed function. * pcs/cal-backend-file.c (cal_backend_file_open): Return the appropriate value when only_if_exists is TRUE. (create_cal): We are Ximian now, so set the PRODID property to the appropriate foo. * pcs/cal-factory.c (CalFactory_open): implemented, replacing CalFactory_load() and CalFactory_create(). (CalFactory_open): Moved the queue_load_create_job() stuff to here, since we now only need to contemplate the open case instead of load/create ones. (open_backend): Do everything here; replaces load_backend() and create_backend(). * cal-client/cal-listener.h (CalListenerClass::cal_opened): Renamed from cal_loaded. (CalListenerClass): Replaced the silly signals, which are gratuitous abstraction, by a set of function pointers in the instance structure. * cal-client/cal-listener.c (cal_listener_get_calendar): Removed unused function. (cal_listener_construct): Added the listener notification functions. (cal_listener_new): Ditto. (Listener_notifyCalOpened): Renamed to our new naming convention for servant implementations. (Listener_notifyObjUpdated): Ditto. (Listener_notifyObjRemoved): Ditto. * cal-client/cal-client.h (CalClientOpenStatus): Renamed from CalClientLoadStatus. (CalClientClass::cal_opened): Renamed from ::cal_loaded(). (CalClientLoadState): New enum; basically make LoadState public so that users of this code do not have to maintain their own states. * cal-client/cal-client.c (cal_client_create_calendar): Removed function. (cal_client_open_calendar): Moved the functionality over from load_or_create(); now we do everything here. (*): Use the CalClientLoadState enum values instead of the old LoadState values. (cal_client_get_load_state): Renamed from cal_client_is_loaded(), and return the appropriate value. (CalClientPrivate): Added an uri field. (cal_client_init): Initialize priv->uri. (cal_client_destroy): Free the priv->uri. (cal_opened_cb): Maintain the priv->uri. (cal_client_open_calendar): Fill in the priv->uri. (cal_client_get_uri): New function. * gui/calendar-model.c (calendar_model_set_new_comp_vtype): New function to configure the type of calendar components to create when doing click-to-add. This makes the model usable for something other than task lists. (calendar_model_get_new_comp_vtype): New function. * gui/e-calendar-table.c (e_calendar_table_get_model): New function. (e_calendar_table_destroy): Unref the subset_model. * gui/gnome-cal.h (GnomeCalendarOpenMode): Removed enum. * gui/gnome-cal.c (LoadState): Removed enum; we now use the CalClientLoadState from the client objects. (GnomeCalendarPrivate): Removed the loading_uri and task_pad_loading_uri fields as well as the load_state and task_pad_load_state fields, as we can now query them directly from the CalClient. (open_error): Renamed from load_error(). (create_error): Removed function. (gnome_calendar_open): Do not take in the mode parameter. (cal_opened_cb): Get rid of our beautifully-crafted state machine and replace it with simple code; all the loading smarts are in the Wombat now. (setup_widgets): Set the new component vtype of the table model to CAL_COMPONENT_TODO. * gui/Makefile.am (evolution_calendar_SOURCES): Removed gnome-month-item.[ch] from the list of sources. * gui/calendar-summary.c (CalSummary): Removed unused cal_loaded field. (create_summary_view): Do not check if the file exists; this is the job of the Wombat. (generate_html_summary): Fixed prototype. (alarm_fn): Fixed prototype. (property_dialog): Fixed prototype. Wonder if/how this ever worked. (create_summary_view): Cast the component and view as appropriate. Removed unused html variable. [Iain dude, are you compiling with -Wall?] * gui/e-itip-control.c (cal_opened_cb): Sigh, this function signature was *very* wrong. It was using CalClientGetStatus instead of CalClientOpenStatus. * gui/e-tasks.h (ETasksOpenMode): Removed enum. * gui/e-tasks.c (setup_widgets): Set the new component vtype of the table model to CAL_COMPONENT_TODO. (LoadState): Removed the state machine foo. (e_tasks_open): Removed the mode parameter. (initial_load): Removed function. (create_error): Removed function. (ETasksPrivate): Removed folder_uri field. (cal_opened_cb): Remove the state machine. * gui/component-factory.c: #include "tasks-control.h" * conduits/calendar/calendar-conduit.h (ECalConduitContext): Removed calendar_load_tried field. * conduits/calendar/calendar-conduit.c (start_calendar_server_cb): Sigh, fixed function prototype. * conduits/todo/todo-conduit.h (EToDoConduitContext): Removed calendar_load_tried field. * conduits/todo/todo-conduit.c (start_calendar_server_cb): Fixed function prototype. svn path=/trunk/; revision=7571
* If the component has no alarms, do not try to queue them.Federico Mena Quintero2001-01-031-2/+1
| | | | | | | | | | | | 2001-01-02 Federico Mena Quintero <federico@helixcode.com> * gui/alarm-notify.c (add_component_alarms): If the component has no alarms, do not try to queue them. (remove_client_alarms): New function to remove all the queued alarms for a calendar client. (alarm_notify_remove_client): Remove the client's alarms. svn path=/trunk/; revision=7218
* account for the case where there are no alarms, fixes crashJP Rosevear2000-12-231-2/+6
| | | | | | | | | 2000-12-22 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend-file.c (cal_backend_file_get_alarms_for_object): account for the case where there are no alarms, fixes crash svn path=/trunk/; revision=7134
* Fix confusion in the way the range is expanded.Federico Mena Quintero2000-12-201-12/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-19 Federico Mena Quintero <federico@helixcode.com> * pcs/cal-backend-file.c (compute_alarm_range): Fix confusion in the way the range is expanded. * cal-util/cal-component.c (cal_component_alarms_free): Doh, alarms->alarms is a list, not a generic pointer. Free it properly. (cal_component_free_pilot_id): Removed unused function. (cal_component_free_pilot_status): Likewise. * gui/main.c (init_bonobo): Use VERSION instead of a hardcoded string. Pass argc by value, not by reference. Test the return value of gnome_init_with_popt_table(). * cal-client/cal-client.c (cal_client_free_alarms): Oops, missed implementing this function. * cal-util/timeutil.c (print_time_t): Better printing format. (isodiff_to_secs): Removed unused function. (isodiff_from_secs): Removed unused function. (time_day_end): Removed crufty part. (time_day_begin): Removed crufty part. (time_day_hour): Removed unused function. (format_simple_hour): Removed unused function. (get_time_t_hour): Removed unused function. (time_from_start_duration): Removed unused function. * cal-util/timeutil.h (parse_date): Removed unimplemented, unused function prototype. svn path=/trunk/; revision=7083
* Alarm instance generation support for the Wombat.Federico Mena Quintero2000-12-191-20/+358
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-18 Federico Mena Quintero <federico@helixcode.com> Alarm instance generation support for the Wombat. * idl/evolution-calendar.idl (Cal::CalAlarmInstance): Changed to have an alarm UID, the trigger time, and the actual occurrence time. (Cal::CalComponentAlarms): New structure to hold a pair of a component and its alarms that trigger in a particular range of time. (Cal::getAlarmsInRange): Changed to return a CalComponentAlarmsSeq. * cal-util/cal-component.h (CalAlarmInstance): New C-side structure to match the one on the IDL. (CalComponentAlarms): Ditto. (CalAlarmAction): Renamed from CalComponentAlarmAction. (CalAlarmTriggerType): Renamed from CalComponentAlarmTriggerType. Encoded the START and END parameters for the RELATED parameter in this enum, too. Added a NONE value for invalid or missing trigger specifications. (CalComponentAlarmTriggerRelated): Removed. (CalAlarmTrigger): Renamed from CalComponentAlarmTrigger. Renamed the duration/time fields to rel_duration/abs_time, respectively. * cal-util/cal-component.c (cal_component_alarm_get_trigger): Changed to use the new trigger structure. (cal_component_alarm_set_trigger): Likewise. (cal_component_alarm_free_trigger): Removed function. (cal_component_has_alarms): Count the elements in the alarm_uid_hash instead of trying to fetch the first alarm subcomponent. (cal_component_alarms_free): New function to free a CalComponentAlarms structure. (CalComponentAlarmPrivate): Added an uid property pointer. (scan_alarm_property): Scan for the our extension UID property. (cal_component_alarm_get_uid): New function. * pcs/cal-backend.h (CalBackendClass): Changed the signatures of the ::get_alarms_in_range() and ::get_alarms_for_object() methods. * pcs/cal-backend.c (cal_backend_get_alarms_in_range): Changed signature; use the new method. (cal_backend_get_alarms_for_object): Likewise. * pcs/cal-backend-file.c (compute_alarm_range): New spiffy function to compute a range of time for alarm occurrences. (add_alarm_occurrences_cb): New function to add alarms for a particular occurrence of the component. (generate_absolute_triggers): New function to add the absolute alarm triggers. (generate_alarms_for_comp): New function to generate all the alarm instances for a component. (cal_backend_file_get_alarms_in_range): Implemented. * pcs/cal.c (Cal_get_alarms_in_range): Use the new CalBackend API. (Cal_get_alarms_for_object): Likewise. (build_alarm_instance_seq): Removed old function. * cal-util/cal-util.c (cal_alarm_instance_list_free): Removed function. * cal-client/cal-client.c (build_component_alarms_list): New function to demarshal the component alarms sequence. (build_alarm_instance_list): New function to demarshal the alarm instances sequence. (cal_client_get_alarms_in_range): Updated for the new API. (cal_client_get_alarms_for_object): Updated for the new API. * gui/gnome-cal.c: Temporary #ifdef-ing out of alarm-related stuff to make it build. svn path=/trunk/; revision=7076
* Use the new libical external iterators (icalcomponent_begin_component()Federico Mena Quintero2000-11-251-4/+7
| | | | | | | | | | | | | | | | | | | | | | | 2000-11-24 Federico Mena Quintero <federico@helixcode.com> * pcs/cal-backend-file.c (scan_vcalendar): Use the new libical external iterators (icalcomponent_begin_component() and friends); the internal iterators are deprecated. * cal-util/test-recur.c (generate_occurrences): Likewise. * gui/e-itip-control.c (pstream_load): Likewise. * gui/e-meeting-edit.c (e_meeting_edit): Likewise. * pcs/cal-backend.c (cal_backend_log_entry): Plug leak. (cal_backend_log_sync): Free the entry->uid. * util/icalendar-save.[ch]: * util/icalendar-test.c: * util/icalendar.[ch]: Removed obsolete files. svn path=/trunk/; revision=6660
* Pulling up stuff from the 0.6 branchJP Rosevear2000-10-211-25/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-20 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend.c (cal_backend_destroy): New destroy handler to properly stop the timer, sync the log and unref the URI. (cal_backend_last_client_gone): Just emit the signal, clean up work is done in cal_backend_destroy now. * pcs/cal-backend-file.c (cal_backend_file_load): Unref the uri we are replacing NOT the new uri. 2000-10-20 JP Rosevear <jpr@helixcode.com> * conduits/todo/Makefile.am: Fix build * conduits/calendar/Makefile.am: Fix build 2000-10-20 JP Rosevear <jpr@helixcode.com> * conduits/calendar/calendar-conduit.c (delete_archive_record): Don't throw an error * conduits/todo/todo-conduit.c (delete_archive_record): ditto 2000-10-20 JP Rosevear <jpr@helixcode.com> * conduits/todo/todo-conduit-control-applet.c: Add defines * conduits/todo/todo-conduit-config.h: put #ifdefs around functions can't make this a public interface in the usual way as then the symbols would be exported * conduits/todo/todo-conduit.c: Kill warnings. clahey will be happy! Add some defines to include only the necessary config functions. (conduit_get_gpilot_conduit): Hook up archive signals * conduits/calendar/calendar-conduit.c: Same as above * conduits/calendar/calendar-conduit-control-applet.c: ditto * conduits/calendar/calendar-conduit-config.h: ditto svn path=/trunk/; revision=6086
* Remove pilot cruft. All pilot stuff is in the conduits now and uses theJP Rosevear2000-10-161-78/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-10-16 JP Rosevear <jpr@helixcode.com> * cal-client/cal-client.h: Remove pilot cruft. All pilot stuff is in the conduits now and uses the logging facility. * pcs/cal-backend-file.c: ditto * pcs/cal-backend.h: ditto * pcs/cal-backend.c: ditto * pcs/cal.c: ditto * pcs/cal.h: ditto * idl/evolution-calendar.idl: ditto * cal-util/cal-component.h: ditto * cal-util/cal-component.c: ditto * cal-client/cal-client.c: ditto * conduits/calendar/calendar-conduit.c (local_record_from_comp): Take a stab at storing recurrence stuff on the pilot properly * pcs/cal-backend.c (cal_backend_update_object): Don't log the event until after the update in case its a new item svn path=/trunk/; revision=5940
* New utility function (cal_backend_load): use above (cal_backend_create):JP Rosevear2000-09-201-31/+35
| | | | | | | | | | | | | | | | | | | | | | | 2000-09-19 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend.c (cal_backend_set_uri): New utility function (cal_backend_load): use above (cal_backend_create): use above (cal_backend_log_name): Take a uri instead of a backend param * pcs/cal-backend-file.c: Get rid of useless hash functions (cal_backend_file_load): Check to make sure path exists and is local (cal_backend_file_load): Unref the current uri if there is one (cal_backend_file_create): ditto * pcs/cal-backend.c (cal_backend_last_client_gone): Sync before shooting ourselves in the foot * pcs/cal-backend-file.c (save): Fully implement backing up the calendar before writing out the new entry. svn path=/trunk/; revision=5516
* Add some other cases where a slow sync is in order (pre_sync): Pre loadJP Rosevear2000-09-201-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-19 JP Rosevear <jpr@helixcode.com> * conduits/todo/todo-conduit.c (check_for_slow_setting): Add some other cases where a slow sync is in order (pre_sync): Pre load the uids, the map and the add/mod/del lists (match_record): Use the map hash to match records (iterate): Iterate using the pre-loaded uid list (iterate_specific): Iterate using the add/mod/del lists (purge): Delete all entries in the del list (set_status): Set status by adding to an appropriate list (set_pilot_id): Set pilot_id by updating map hash * conduits/todo/todo-conduit.h: Add lists for added, modified and deleted objects * conduits/todo/todo-conduit.c (map_name): Get the pilot_id->uid map file name (map_sax_start_element): SAX handler to extract a pilot_id->uid mapping (map_sax_parse): Parse the given file and build a pilot_id->uid hash (map_write_foreach): Write out individual mapping elements (map_write): Write out the pilot_id->uid mapping (start_calendar_server_cb): Rename from gnome_calendar_load_cb * conduits/todo/todo-conduit-config.h: Rename pilotID to pilot_id * conduits/todo/e-todo.conduit.in: A little renaming * conduits/todo/Makefile.am: Fix build slightly * pcs/cal.c (build_change_seq): Build a corba sequence out of a list of CalObjChanges (Cal_get_objects_in_range): Implement new corba function * pcs/cal-backend.c (cal_backend_init): Intiliaze to NULL (cal_backend_load): Track the uri so we can write the log file to the same place (cal_backend_log_name): Figure out the log filename/path based on the calendar uri (cal_backend_set_node_timet): Set an xml node property value from a time_t (cal_backend_log_entry): Adds a log entry to list waiting to be written out (cal_backend_log_sync): Syncs the log entries to disk (cal_backend_log_sax_start_element): SAX callback for reading in log entries (cal_backend_log_sax_end_element): ditto (cal_backend_log_sax_parse): Main SAX parser call to parse the log file looking for particular log entries and creating a CalObjChange hash with the last change for each object (cal_backend_get_log_entries): Returns a hash of objects of a given type changed since the given time (cal_backend_update_object): Add appropriate log entries (cal_backend_remove_object): ditto (cal_backend_get_changed_uids): Implement new idl interface call (cal_backend_foreach_changed): Convert CalObjChange hash into a list * pcs/cal-backend-imc.[hc]: Remove crufty files * pcs/cal-backend-file.c (cal_backend_file_get_type_by_uid): New function that returns the CalObjType for a uid. * cal-client/cal-client.h: Update prototypes. * cal-client/cal-client.c (build_change_list): Build a list of CalObjChange items from a corba sequence. (cal_client_get_changed_uids): New accessor method for the similarly named addition to the idl file. * cal-util/cal-util.h: Update prototypes and add CalObjChangeType enum. * cal-util/cal-util.c (cal_obj_change_list_free): New utility method to free a list of CalObjChange objects. * idl/evolution-calendar.idl: Add get_changed_uids method and associated types. svn path=/trunk/; revision=5512
* Only remove the pilot item from the hash if it exists in the first place.JP Rosevear2000-09-131-6/+5
| | | | | | | | | 2000-09-13 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend-file.c (remove_component): Only remove the pilot item from the hash if it exists in the first place. svn path=/trunk/; revision=5399
* Use g_int_* for now (cal_backend_file_create): dittoJP Rosevear2000-09-131-8/+13
| | | | | | | | | | 2000-09-12 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend-file.c (cal_backend_file_load): Use g_int_* for now (cal_backend_file_create): ditto svn path=/trunk/; revision=5385
* Use cal component pilot stuff properly (find_record_in_repository): RemoveJP Rosevear2000-09-101-9/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-09-10 JP Rosevear <jpr@helixcode.com> * conduits/todo/todo-conduit.c (local_record_from_icalobject): Use cal component pilot stuff properly (find_record_in_repository): Remove cruft (ical_from_remote_record): Remove cruft (update_record): Set the vtype immediately after creation. Remove cruft * conduits/todo/todo-conduit.h: Remove iCalObject stuff * conduits/todo/todo-conduit-config.h: Move all the config stuff here, I need to kill the warnings at some point * conduits/todo/todo-conduit-control-applet.c (doRevertSettings): Set all the state variables correctly on a revert (doSaveSettings): Update original state (doHelp): Rename from about_cb (main): Destroy configurations when done * conduits/todo/Makefile.am: Tidy * pcs/cal-backend-file.c (cbf_pilot_hash): Function for hashing pilot ids (cbf_pilot_equal): For hash table of pilot ids (cal_backend_file_destroy): Destroy pilot id hash (add_component): Insert the uid into the pilot hash (remove_component): Remove the uid from the pilot hash (cal_backend_file_load): Create the pilot hash (cal_backend_file_create): ditto (cal_backend_file_get_uid_by_pilot_id): Implement using the pilot hash (cal_backend_file_update_pilot_id): ditto * cal-util/cal-component.h: Update prototypes * cal-util/cal-component.c (cal_component_get_pilot_id): Implement using ical X properties (cal_component_set_pilot_id): ditto (cal_component_get_pilot_status): ditto (cal_component_set_pilot_status): ditto (cal_component_free_pilot_id): Free a pilot id (cal_component_free_pilot_status): Free a pilot status svn path=/trunk/; revision=5298
* Remove the icalcomponent from the toplevel calendar here.Federico Mena Quintero2000-08-291-21/+28
| | | | | | | | | | | | | | 2000-08-28 Federico Mena Quintero <federico@helixcode.com> * pcs/cal-backend-file.c (remove_component): Remove the icalcomponent from the toplevel calendar here. (cal_backend_file_update_object): Do not remove it here. (cal_backend_file_remove_object): Do not remove it here. (add_component): Add the icalcomponent to the toplevel calendar if asked to. (cal_backend_file_update_object): Do not add it here. svn path=/trunk/; revision=5089
* Write out the calendar object (cal_backend_file_update_object): Remove/addJP Rosevear2000-08-281-9/+51
| | | | | | | | | | | | 2000-08-27 JP Rosevear <jpr@helixcode.com> * pcs/cal-backend-file.c (save): Write out the calendar object (cal_backend_file_update_object): Remove/add the icalcomponent from our master icalcomponent (the calendar) (cal_backend_file_remove_object): Remove the icalcomponent from our master icalcomponent svn path=/trunk/; revision=5069
* Added a get_objects_in_range() method. Takes in a time range and the typeFederico Mena Quintero2000-08-091-43/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-08 Federico Mena Quintero <federico@helixcode.com> * idl/evolution-calendar.idl (Cal): Added a get_objects_in_range() method. Takes in a time range and the type of component we are interested in; returns a list of UIDs. The idea is that ocurrences get computed in the client; we can have multiple recurrences in iCalendar and we cannot identify them trivially across the wire. (Cal): Removed the get_events_in_range() method. * pcs/cal-backend.c (cal_backend_free_uid_list): New function. (cal_backend_get_objects_in_range): New function. (cal_backend_get_events_in_range): Removed. * pcs/cal-backend-file.c (cal_backend_file_get_objects_in_range): Implemented new method. (cal_backend_file_get_events_in_range): Removed. * pcs/cal.c (Cal_get_events_in_range): Removed. (uncorba_obj_type): New function. (Cal_get_uids): Use uncorba_obj_type(). (Cal_get_n_objects): Likewise. (Cal_get_objects_in_range): Implemented new method. * cal-client/cal-client.c (cal_client_get_events_in_range): Removed. (cal_client_get_objects_in_range): Implemented. (corba_obj_type): New function. (cal_client_get_n_objects): Use corba_obj_type(). (cal_client_get_uids): Likewise. svn path=/trunk/; revision=4613
* Fixed a g_return_if_fail that had two parameters and thus wouldn't build.Joe Shaw2000-08-031-1/+1
| | | | | | | | | | 2000-08-02 Joe Shaw <joe@helixcode.com> * pcs/cal-backend-file.c (cal_backend_file_update_pilot_id): Fixed a g_return_if_fail that had two parameters and thus wouldn't build. svn path=/trunk/; revision=4502
* Dum dum dum - FedericoFederico Mena Quintero2000-08-031-0/+36
| | | | svn path=/trunk/; revision=4494
* New files for the iCalendar file backend.Federico Mena Quintero2000-08-031-0/+1004
2000-08-02 Federico Mena Quintero <federico@helixcode.com> * pcs/cal-backend-file.[ch]: New files for the iCalendar file backend. * pcs/Makefile.am (libpcs_a_SOURCES): Added cal-backend-file.[ch]. * cal-util/cal-component.c (cal_component_set_icalcomponent): Return an operation success code for if we are passed a component of a type we don't support. svn path=/trunk/; revision=4479