aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify/alarm-queue.c
Commit message (Collapse)AuthorAgeFilesLines
* Fixes crash in #19159Rodrigo Moya2002-10-071-7/+13
| | | | | | | | | | | | | | 2002-10-07 Rodrigo Moya <rodrigo@ximian.com> Fixes crash in #19159 * gui/alarm-notify/alarm-queue.c (lookup_queued_alarm): don't crash if we don't find the queued alarm in the internal list. (alarm_trigger_cb, create_snooze, display_notification, audio_notification, procedure_notification, remove_queued_alarm): check return value from lookup_queued_alarm. svn path=/trunk/; revision=18331
* Fixes the crash in #19159Rodrigo Moya2002-08-051-0/+2
| | | | | | | | | | | 2002-08-04 Rodrigo Moya <rodrigo@ximian.com> Fixes the crash in #19159 * gui/alarm-notify/alarm-queue.c (create_snooze): check for NULL pointers before using them. svn path=/trunk/; revision=17697
* if there's an exception, continue with the next item.Rodrigo Moya2002-07-191-1/+0
| | | | | | | | | 2002-07-18 Rodrigo Moya <rodrigo@ximian.com> * importers/icalendar-importer.c (get_uri_from_folder_path): if there's an exception, continue with the next item. svn path=/trunk/; revision=17507
* add protosJP Rosevear2002-01-141-17/+54
| | | | | | | | | | | | | | | | | 2002-01-13 JP Rosevear <jpr@ximian.com> * gui/alarm-notify/save.h: add protos * gui/alarm-notify/save.c (save_blessed_program): records a program as blessed (is_blessed_program): checks to see if a program is blessed * gui/alarm-notify/alarm-queue.c (procedure_notification_dialog): popup a dialog notifying the user that is a program and let them not see the dialog about this program again (procedure_notification): use above svn path=/trunk/; revision=15313
* Fixing the license text.Ettore Perazzoli2001-10-281-4/+3
| | | | svn path=/trunk/; revision=14214
* Fixes bug #5282.Federico Mena Quintero2001-10-251-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-24 Federico Mena Quintero <federico@ximian.com> Fixes bug #5282. * cal-util/timeutil.c (icaltimetype_to_tm_with_zone): New function to avoid copying the same code all over the place. (icaltimetype_to_tm): Also set the tm.tm_wday. * gui/alarm-notify/alarm-queue.c (queue_midnight_refresh): Use time_day_end_with_zone(). (load_alarms_for_today): Likewise. And oops, we were only computing the times and not loading the alarms. (obj_updated_cb): Likewise. (load_alarms): Removed assertion that is no longer valid because we may load the alarms for a client in two stages. * gui/dialogs/alarm-page.c (get_alarm_string): Convert absolute trigger times to the local timezone. * gui/alarm-notify/alarm-notify-dialog.c (write_html_heading): Convert the times to the local timezone. (alarm_notify_dialog): Likewise, for the window title. (alarm_notify_dialog): Set the window layer to WIN_LAYER_ONTOP. * gui/e-cell-date-edit-text.c (ecd_get_text): Use icaltimetype_to_tm_with_zone(). * gui/alarm-notify/save.c (get_config_db): Made public. (discard_config_db): Made public. * gui/alarm-notify/config-data.[ch]: New files with functions to fetch the calendar configuration data used by the alarm daemon. svn path=/trunk/; revision=13986
* Do not assert if we fail to load the URI list. This would of course haveFederico Mena Quintero2001-10-201-1/+6
| | | | | | | | | | | | | | | | | 2001-10-19 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-notify.c (add_uri_to_load): Do not assert if we fail to load the URI list. This would of course have been a bonobo-conf activation problem. (remove_uri_to_load): Likewise. * gui/alarm-notify/notify-main.c (load_calendars): Likewise. * gui/alarm-notify/alarm-queue.c (load_missed_alarms): Make the time range half-open so that we do not display the last alarm twice. svn path=/trunk/; revision=13797
* Adds session management for the alarm daemon. Also makes it store a listFederico Mena Quintero2001-10-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-18 Federico Mena Quintero <federico@ximian.com> Adds session management for the alarm daemon. Also makes it store a list of calendars to be monitored. Those calendars will all be loaded when the alarm daemon starts up. * idl/evolution-calendar.idl (AlarmNotify): Removed the ::die() method. The alarm daemon now handles termination via the session manager's commands. * gui/alarm-notify/notify-main.c (set_session_parameters): New function, sets some parameters so that the session manager can restart the daemon via the evolution-alarm-client program. Also, sets up the "die" signal so that the daemon can terminate when the session ends. (load_calendars): New function to load the calendars on startup. (main): Set the session parameters. Load the calendars on startup. * gui/alarm-notify/alarm-notify.c (alarm_notify_add_calendar): New function, moved over from the impl_ function. Added a load_afterwards argument to indicate whether the calendar should just be loaded or if it should also be added to the list of calendars to load on startup. (AlarmNotify_addCalendar): Use alarm_notify_add_calendar(). (AlarmNotify_removeCalendar): Remove the calendar from the list of calendars to load on startup. * gui/alarm-notify/save.c (save_calendars_to_load): New function, saves a sequence of the URIs to load. (get_calendars_to_load): New function, loads a sequence of calendars to load. * gui/alarm-notify/alarm.h: Removed stale prototype for alarm_init(). * gui/component-factory.c (remove_folder): Ask the alarm daemon to stop monitoring alarms for the folder that is being deleted. svn path=/trunk/; revision=13763
* Fixes bug #884.Federico Mena Quintero2001-10-101-14/+51
| | | | | | | | | | | | | | | | | | | | | | 2001-10-09 Federico Mena Quintero <federico@ximian.com> Fixes bug #884. * gui/alarm-notify/save.[ch]: New files with functions to save/load the last notification time. * gui/alarm-notify/alarm-queue.c (alarm_trigger_cb): Save the last notification time. (alarm_queue_init): Load the last notification time when the daemon is inited. (alarm_queue_add_client): Load the alarms that we missed while the alarm daemon was not running. (cal_opened_cb): Likewise. * gui/alarm-notify/Makefile.am (evolution_alarm_notify_SOURCES): Added save.[ch] to the list of sources. svn path=/trunk/; revision=13538
* Display a notification message always, in addition to playing the sound.Federico Mena Quintero2001-09-201-26/+50
| | | | | | | | | | | | | | | | | | | | | | | | 2001-09-19 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-queue.c (audio_notification): Display a notification message always, in addition to playing the sound. (procedure_notification): Present a confirmation dialog before actually running the alarm's program. (procedure_notification): Use gnome_execute_shell() instead of gnome_execute_async() so that we handle multiple arguments properly. Plus, it is most likely what the user expects. (mail_notification): Display a message about unsupported email reminders instead of blindly dropping the alarm. * gui/dialogs/alarm-options.glade: Added an explanatory message about mail alarms not being supported. * gui/dialogs/alarm-page.glade: Removed the "Send an email" option. * gui/dialogs/alarm-page.c (action_map): Removed CAL_ALARM_EMAIL. svn path=/trunk/; revision=13004
* Added an use_description argument so that other alarms can fall back toFederico Mena Quintero2001-09-121-17/+141
| | | | | | | | | | | | | | | | | | | | 2001-09-11 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-queue.c (display_notification): Added an use_description argument so that other alarms can fall back to this type. (audio_notification): Implemented. (remove_comp): Call remove_queued_alarm() here; there is no longer a destroy notification function for alarms so must we do this manually. (alarm_trigger_cb): Do not pass the alarm to the notification functions so that we can free it ourselves before all the alarms in the component get freed. (display_notification): Get the alarm here instead of getting it as an argument. (procedure_notification): Implemented. svn path=/trunk/; revision=12772
* Handle the new icalattach type instead of struct icalattachtype.Federico Mena Quintero2001-09-111-406/+0
| | | | | | | | | | | | | | | 2001-09-10 Federico Mena Quintero <federico@ximian.com> * cal-util/cal-component.c (cal_component_alarm_get_attach): Handle the new icalattach type instead of struct icalattachtype. (cal_component_alarm_set_attach): Likewise. * gui/dialogs/alarm-options.c (alarm_to_aalarm_widgets): Likewise. (alarm_to_palarm_widgets): Likewise. (aalarm_widgets_to_alarm): Likewise. (palarm_widgets_to_alarm): Likewise. svn path=/trunk/; revision=12749
* Implemented.Federico Mena Quintero2001-09-051-1/+51
| | | | | | | | | | | | | | | | | | | | 2001-09-04 Federico Mena Quintero <federico@ximian.com> * gui/component-factory.c (sc_user_create_new_item_cb): Implemented. * gui/main.c (component_editor_factory_init): New function to create the factory for the comp_editor_factory. * gui/comp-editor-factory.c: Finished implementation. * gui/alarm-notify/alarm-queue.c (edit_component): Implemented the Edit command. * gui/Makefile.am (evolution_calendar_SOURCES): Added comp-editor-factory.[ch] to the list of sources. svn path=/trunk/; revision=12619
* Added a snooze flag to differentiate snoozed alarms from real occurrences.Federico Mena Quintero2001-08-231-68/+143
| | | | | | | | | | | | | | | 2001-08-22 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-queue.c (QueuedAlarm): Added a snooze flag to differentiate snoozed alarms from real occurrences. (add_component_alarms): Do not specify a destroy function for the alarm trigger. We handle this in the callbacks now. (alarm_trigger_cb): Just remove the alarms for the unimplemented notification types. (create_snooze): Implemented snooze. (notify_dialog_cb): Snooze as appropriate. svn path=/trunk/; revision=12412
* Handle the different alarm actions. (display_notification): Do the alarmFederico Mena Quintero2001-07-111-24/+101
| | | | | | | | | | | | | | | 2001-07-10 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-queue.c (alarm_trigger_cb): Handle the different alarm actions. (display_notification): Do the alarm notification dialog here. * gui/alarm-notify/alarm-notify-dialog.c (make_heading): Take in a CalComponentVType, not a whole component. (alarm_notify_dialog): Take in a CalComponentVType and the final message instead of generating it ourselves. svn path=/trunk/; revision=10978
* Renamed the occur field to occur_start; added an occur_end field. This wayFederico Mena Quintero2001-06-271-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Converted to use BonoboXObject.Federico Mena Quintero2001-06-251-2/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-06-24 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-notify.c: Converted to use BonoboXObject. * gui/gnome-cal.c (gnome_calendar_open): Ask the alarm notification service to add the calendar and tasks URIs. (add_alarms): New function. * gui/alarm-notify/notify-main.c (main): Doh, fixed typo in the OAFIID. (main): Initialize and shut down gnome-vfs. * gui/Makefile.am (IDLS): Added evolution-calendar.idl, sigh. (evolution_calendar_SOURCES): Added the files generated from the IDL. * gui/alarm-notify/alarm-queue.c (alarm_trigger_cb): New function used when an alarm is triggered. * gui/dialogs/Makefile.am: Removed the alarm-notify-dialog files; they are now in gui/alarm-notify. * gui/alarm-notify/Makefile.am: Added the alarm-notify-dialog files. * pcs/cal.c (cal_forget_password): This was incorrectly named cal_client_forget_password(); renamed it. * gui/main.c (main): Initialize and shut down gnome-vfs. svn path=/trunk/; revision=10453
* 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
* Switched to using our own refcounted structure for loaded clients.Federico Mena Quintero2001-02-241-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-02-23 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-notify.c (AlarmNotify_addCalendar): Switched to using our own refcounted structure for loaded clients. (AlarmNotify_removeCalendar): Ditto. Also, do the full destruction of the client. (alarm_notify_destroy): Destroy each element in the hash table. * cal-client/cal-client.c (cal_client_construct): Test for exceptions from OAF when activating the Wombat calendar factory. * gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in: New .oaf.in file. * gui/alarm-notify/Makefile.am (oaf_in_files): Updated. * gui/GNOME_Evolution_Calendar.oaf.in: Put all the servers here instead of in a million files. * gui/GNOME_Evolution_Calendar_Control.oaf.in: Removed file. * gui/GNOME_Evolution_Calendar_gnomecal.oaf.in: Removed *REALLY* obsolete file. * gui/Makefile.am (oaf_in_files): Updated. svn path=/trunk/; revision=8375
* Ximianified email addresses and copyrights.Federico Mena Quintero2001-01-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* New interface for the alarm notification system.Federico Mena Quintero2001-01-101-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-09 Federico Mena Quintero <federico@helixcode.com> * idl/evolution-calendar.idl (AlarmNotify): New interface for the alarm notification system. * gui/alarm-notify: New directory for the alarm notification daemon and its auxiliary stuff. * gui/alarm-notify/alarm.[ch]: Moved over from gui/alarm.[ch]. * gui/alarm-notify/alarm-queue.[ch]: Moved over from gui/alarm-notify.[ch]. Renamed functions from alarm_notify_*() to alarm_queue_*(). * gui/alarm-notify/alarm-notify.[ch]: Implementation of the GNOME::Evolution::Calendar::AlarmNotify interface. * gui/Makefile.am (evolution_calendar_LDADD): Removed the LINK_FLAGS variable and reordered the libraries to remove some duplicated ones. (SUBDIRS): Added the alarm-notify directory. svn path=/trunk/; revision=7338
* If the component has no alarms, do not try to queue them.Federico Mena Quintero2001-01-031-1/+47
| | | | | | | | | | | | 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
* Unconditionally remove the client from the alarm notification system.Federico Mena Quintero2001-01-031-0/+406
| | | | | | | | | | | | | | | | | | | | | | | | 2001-01-01 Federico Mena Quintero <federico@helixcode.com> * gui/gnome-cal.c (gnome_calendar_destroy): Unconditionally remove the client from the alarm notification system. Removed all the obsolete alarm code. * gui/event-editor.c: Removed some crufty externs left over from Gnomecal. * gui/calendar-commands.c: #include "goto.h" Removed crufty variables left over from Gnomecal. (new_calendar): Do not take a full_name parameter. (init_username): Removed function. (init_calendar): Wheeeeeeee! Removed crufty function. (quit_cmd): Removed function. * gui/print.c (WEEK_STARTS_ON_MONDAY): Made it unconditionally FALSE because we do not use the configuration setting anyways. Sigh, all the printing code needs to be revamped. svn path=/trunk/; revision=7209
* Alarm trigger queueing for the GUI part.Federico Mena Quintero2000-12-231-0/+511
2000-12-21 Federico Mena Quintero <federico@helixcode.com> Alarm trigger queueing for the GUI part. * gui/alarm-notify.[ch]: New files with the high-level alarm notification system; mostly moved over from gnome-cal.c. The low-level timer stuff is still in alarm.[ch]. * gui/alarm-notify.c (alarm_notify_init): New function to initialize the alarm notification system. (alarm_notify_done): New function to shut down the alarm notification system. (alarm_notify_add_client): New function to start monitoring a calendar client for alarm notification. (alarm_notify_remove_client): New function to stop monitoring a client. * gui/alarm.h (AlarmDestroyNotify): Also pass in the alarm ID so the callback may know which ID is being destroyed. * gui/alarm.c (clear_itimer): New function. (pop_alarm): Use clear_itimer(). (alarm_done): New function to shut down the timer system. (alarm_add): Add some preconditions. Do not call the destroy notification function if we could not create the alarm. (alarm_ready): Pass the alarm ID to the destroy notify function. (alarm_remove): Likewise. Also, add some preconditions. * gui/gnome-cal.c: Removed the alarm notification functions from here since they are now in alarm-notify.c. (gnome_calendar_construct): Register the client with alarm_notify_add_client(). (gnome_calendar_destroy): Use alarm_notify_remove_client() to unregister the client. (obj_updated_cb): Do not do any alarm-related stuff. (obj_removed_cb): Likewise. * gui/main.c (main): Shut down the alarm timer system. (main): Initialize and shut down the alarm notification system. * gui/Makefile.am (evolution_calendar_SOURCES): Added alarm-notify.[ch] to the list of sources. * gui/calendar-model.c (calendar_model_set_cal_client): Only connect to the "cal_loaded" signal if the client is not already loaded. * gui/e-day-view.c (e_day_view_set_cal_client): Likewise. * gui/e-week-view.c (e_week_view_set_cal_client): Likewise. * gui/e-itip-control.c (update_calendar): Connect to "cal_loaded" before issuing the load request. svn path=/trunk/; revision=7130