2000-08-09 Christopher James Lahey <clahey@helixcode.com>
* cal-client/cal-client.c, gui/e-calendar-table.c, pcs/cal.c:
Fixed some warnings.
svn path=/trunk/; revision=4637
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
2000-08-07 Federico Mena Quintero <federico@helixcode.com>
* cal-util/cal-component.c (cal_component_get_as_string): Doh,
libical owns the string's memory, so do not free it.
* cal-client/client-test.c (create_client): Connect to the destroy
signal of the client here.
* cal-client/test.ics: New test file, modified from Eric Busboom's
test file from RFC 2445.
2000-08-05 Federico Mena Quintero <federico@helixcode.com>
* cal-client/client-test.c (dump_component): This was gone for
some reason.
(main): Load a new test file.
2000-08-04 Federico Mena Quintero <federico@helixcode.com>
* cal-util/cal-component.c (cal_component_commit_sequence): New
function to commit changes to the SEQUENCE property.
(cal_component_get_as_string): Ensure that the sequence has been
committed.
* cal-client/cal-client.c (cal_client_get_object): Use
CalComponent instead of the old iCalObject.
(cal_client_update_object): Use iCalObject. Commit the SEQUENCE
property before stringifying the object and piping it over to the
Wombat.
svn path=/trunk/; revision=4585
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
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
2000-07-31 Federico Mena Quintero <federico@helixcode.com>
* cal-util/cal-recur.c (*): Use CalComponent and the new property
types instead of the old iCalObject stuff.
(cal_recur_generate_instances): Renamed from
cal_object_generate_events(). Ensure that the component has the
DTSTART property.
(generate_instances_for_year): Renamed from
cal_object_generate_events_for_year().
(cal_obj_expand_recurrence): Made static.
(cal_recur_from_icalrecurrencetype): New function. We should
really convert this whole file to use struct icalrecurrencetype
instead.
(cal_recur_free): New function.
* cal-util/cal-recur.h (CalRecurType): Renamed from CalObjRecurType.
(CalRecurrence): Renamed from CalObjRecurrence.
* cal-util/timeutil.c (time_from_icaltimetype): New function.
* cal-util/Makefile.am: Commented out the test-recur program.
svn path=/trunk/; revision=4464
2000-07-25 Federico Mena Quintero <federico@helixcode.com>
* cal-util/cal-component.c (cal_component_free_period_list): New function.
(scan_property): Handle the RDATE property.
(scan_period): Likewise.
(free_icalcomponent): Likewise.
(get_period_list): Likewise.
(set_period_list): Likewise.
(cal_component_get_rdate_list): Likewise.
(cal_component_set_rdate_list): Likewise.
(scan_text): Simplify a bit since we only handle the ALTREP
parameter; there is no need to iterate over all parameters.
(scan_datetime): Simplify; just handle the TZID parameter.
(scan_summary): Simplify; just handle the ALTREP parameter.
(cal_component_get_as_string): New function.
* idl/evolution-calendar.idl (CalObjType): Removed the TYPE_OTHER;
now we only expose the types of objects we know about.
* cal-util/cal-util.h (CalObjType): Likewise.
* cal-client/cal-client.c (cal_client_get_n_objects): Likewise.
(cal_client_get_uids): Likewise.
* conduits/calendar/calendar-conduit.c (get_calendar_objects): Likewise.
(check_for_slow_setting): Likewise.
* pcs/cal-backend-imc.c (count_objects): Likewise.
(build_uids_list): Likewise.
* pcs/cal.c (Cal_get_uids): Likewise.
(Cal_get_n_objects): Likewise.
svn path=/trunk/; revision=4336
2000-07-11 Federico Mena Quintero <federico@helixcode.com>
* pcs/cal-factory.c (queue_load_create_job): Removed unneeded
check for the URI.
(load_fn): Be more paranoid about the URI and notify the listener
if we got passed a bad URI. Simplify the termination code a bit.
(create_fn): Likewise.
(queue_load_create_job): Be more paranoid about the URI.
svn path=/trunk/; revision=4089
2000-07-10 Federico Mena Quintero <federico@helixcode.com>
* e-shell-view.c (unrealize): As a quasi-hack, do a gdk_flush()
when the shell view is unrealized so that the DeleteEvent gets
sent to the remote plugs as soon as possible before we start
making other CORBA calls. The problem is that our CORBA pipe is
synchronous while our X pipe is asynch. We have to ensure
ordering for certain operations. This is NOT the correct and
complete fix, which should go in Bonobo.
svn path=/trunk/; revision=4030
* pcs/cal.c (Cal_get_uid_by_pilot_id):
(Cal_update_pilot_id):
* pcs/cal-backend-imc.c (cal_backend_imc_update_pilot_id):
(cal_backend_imc_get_uid_by_pilot_id):
* pcs/cal-backend.c (cal_backend_get_uid_by_pilot_id):
(cal_backend_update_pilot_id): server code to service these:
* gui/calendar-pilot-sync.c: updated to make use of cal-client.
also uses dirty bits on both sides to aid in syncing.
* cal-client/cal-client.c (cal_client_get_uid_by_pilot_id): new
function -- ask the cal server to return uid given an object's
pilot id.
(cal_client_update_pilot_id): new function -- inform the
cal server of an objects pilot id and pilot dirty-flag.
svn path=/trunk/; revision=3789
* cal-util/icalendar.c, icalendar-save.c: fixed a bunch of problems
* cal-util/calobj.c (ical_object_find_in_string): use libical
instead of libversit
(ical_object_to_string): same
(dump_icalobject): prints the contents of an icalobject for debugging
* gui/Makefile.am (LINK_FLAGS): link libical.a instead of libical.la
so we don't have to modify the build system of the released libical
* cal-client/Makefile.am (client_test_LDADD): same
* cal-util/Makefile.am (icalendar_test_LDADD): same
svn path=/trunk/; revision=3446
2000-06-06 Federico Mena Quintero <federico@helixcode.com>
* cal-util/calobj.c (ical_object_destroy): Removed from the public
header; made static. Now everyone should use refcounting.
* pcs/cal-backend-imc.c (free_ical_object): Use
ical_object_unref().
(remove_object): Likewise.
svn path=/trunk/; revision=3439
2000-05-11 Federico Mena Quintero <federico@helixcode.com>
* gui/gnome-cal.c (add_alarms_for_object): New function to add
today's alarms for a single object.
(gnome_calendar_object_updated_cb): Update the object's alarms.
* idl/evolution-calendar.idl (Cal): Added a
get_alarms_for_object() method.
* pcs/cal.c (Cal_get_alarms_for_object): Implemented method.
* pcs/cal-backend.c (cal_backend_get_alarms_for_object): New
function.
* pcs/cal-backend-imc.c (cal_backend_imc_get_alarms_for_object):
Implemented.
* cal-client/cal-client.c (cal_client_get_alarms_for_object): New
function.
svn path=/trunk/; revision=3003
* pcs/icalendar-save.c (timet_to_icaltime): remove unused timezone
variable to make this compile on BSD systems (where timezone is
the name of a function)
svn path=/trunk/; revision=2996
2000-05-11 Federico Mena Quintero <federico@helixcode.com>
* gui/gnome-cal.c (gnome_calendar_update_all): Removed unused
arguments. Load the initial alarms here.
(load_alarms): New function to load a day's worth of alarms.
(gnome_calendar_class_init): Eeeek! This was taking in an
incorrect argument type.
(gnome_calendar_init): Now the calendar keeps a hash table of
UIDs->queued alarms. Create the hash table here.
(gnome_calendar_destroy): Destroy the alarms hash table.
(gnome_calendar_object_updated_cb): Remove the alarms for the
object and regenerate them.
(gnome_calendar_object_removed_cb): Remove the alarms for the
object.
* gui/alarm.c (alarm_add): Do not take in a CalendarAlarm, just
the trigger time, the callback and the closure data. Return an
opaque identifier for the alarm so that it can be removed by the
client code if needed. Use the queue_alarm() helper function.
(queue_alarm): Helper function to actually queue the alarm and set
up the itimer. Deal with a nonzero return value from
setitimer().
(alarm_remove): New function to remove an alarm based on its ID.
(pop_alarm): New helper function; pops the first alarm of the
queue and resets the timer as appropriate.
(alarm_ready): Simplified a lot by using pop_alarm().
* idl/evolution-calendar.idl (Cal): Added get_alarms_in_range().
* pcs/cal.c (build_instance_seq): New function to build a CORBA
sequence from the internal list of instances.
(Cal_get_events_in_range): Use build_instance_seq().
(Cal_get_alarms_in_range): Implemented new method.
* pcs/cal-backend.c (cal_backend_get_alarms_in_range): New
function with the get_alarms_in_range() engine.
* pcs/cal-backend-imc.c (cal_backend_imc_get_alarms_in_range):
Implemented the get_alarms_in_range() method.
* cal-client/cal-client.c (cal_client_get_alarms_in_range): New
client-side function for getting the alarms.
(build_instance_list): New helper function to build the
CalObjInstance list from the CORBA sequence.
(cal_client_get_events_in_range): Use build_instance_list().
* gui/calendar-commands.h: #include <cal-util/calobj.h>. #include
"gnome-cal.h".
* gui/e-week-view.c: #include "calendar-commands.h" instead of
main.h; the latter is an obsolete file and will be killed.
* gui/evolution-calendar-control.c (main): Call init_bonobo()
before anything else. We need the GTK+ object system initialized.
* gui/Makefile.am (evolution_calendar_SOURCES): Do not use main.h.
* cal-util/cal-util.c (cal_alarm_instance_list_free): New function.
svn path=/trunk/; revision=2987
2000-05-09 Christopher James Lahey <clahey@helixcode.com>
* pcs/cal-backend-imc.c: Set the format when creating a new calendar.
svn path=/trunk/; revision=2961
2000-05-09 Christopher James Lahey <clahey@helixcode.com>
* pcs/cal-factory.c: Removed double free of method_string in
uri->method_string.
svn path=/trunk/; revision=2942
2000-05-08 Federico Mena Quintero <federico@helixcode.com>
* pcs/cal-backend.h (CalBackendClass): CalBackendClass now is just
an interface for calendar backends; this is an abstract class.
Put in the vtable for the backend methods.
* pcs/cal-backend.c (cal_backend_new): Removed function, since
CalBackend is not just an abstract class.
Removed implementation-specific functions and made public
functions call the virtual methods instead.
* pcs/cal-backend-imc.[ch]: New files with the CalBackendIMC
implementation; this implements a backend for iCalendar and
vCalendar files. Moved the implementation-specific stuff from
cal-backend.[ch] to here.
* pcs/cal-backend-imc.c (CalendarFormat): Moved enumeration to
here. Added a CAL_UNKNOWN value for when the backend is not
loaded yet.
(cal_backend_imc_init): Initialize priv->format as CAL_UNKNOWN.
(save_to_vcal): Use the same VCProdIdProp value as in
cal-util/calobj.c. Use "1.0" as the VCVersionProp as per the
vCalendar spec.
(ensure_uid): Return nothing, since the result value need not be
used anymore.
(add_object): Since we mark the calendar as dirty anyways, we do
not need to check the result value of ensure_uid() anymore.
(remove_object): Asssert that we know how to handle the object's
type. We do this in add_object() anyways.
* pcs/Makefile.am (libpcs_a_SOURCES): Added cal-backend-imc.[ch].
* gui/gnome-cal.c: Replaced debugging printf()s with g_message()
so that we can see the line number where they occur.
* gui/gnome-cal.c (gnome_calendar_load_cb): Sort of handle the
LOAD_METHOD_NOT_SUPPORTED result code, and added a default for the
switch.
* cal-client/cal-listener.h (CalListenerLoadStatus): Removed
enumeration; it is stupid to translate all values for the
CalClient when it is going to translate them again.
(CalListenerClass::cal_loaded): This signal now passes the
LoadStatus directly from the CORBA side.
* cal-client/cal-listener.c (Listener_cal_loaded): Do not
translate the status value.
* cal-client/cal-client.h (CalClientLoadStatus): Added the
CAL_CLIENT_LOAD_METHOD_NOT_SUPPORTED error code.
* cal-client/cal-client.c (cal_loaded_cb): Translate the CORBA
version of the LoadStatus result code.
* pcs/cal-factory.c (CalFactoryPrivate): New methods field for the
hash table from method strings to the GtkTypes for backend class
types.
(cal_factory_init): Create the priv->methods hash table.
(cal_factory_destroy): Free the priv->methods hash table.
(cal_factory_register_method): New function to register a backend
class for a particular URI method.
(launch_backend_for_uri): New function to launch a backend for a
particular URI's method.
(load_backend): Use launch_backend_for_uri(). Move the error
notification code from load_fn() to here.
(create_backend): Use launch_backend_for_uri(). Move the error
notification code form create_fn() to here; it is #ifdefed out
since currently cal_backend_create() does not have any error
reporting capabilities.
* idl/evolution-calendar.idl (Listener::LoadStatus): Added a
PROTOCOL_NOT_SUPPORTED error code.
* pcs/cal-factory.c (cal_factory_load cal_factory_create): Removed
functions, since they were supposed to be internal only.
(CalFactory_load): Call queue_load_create_job() directly.
(CalFactory_create): Likewise.
svn path=/trunk/; revision=2921
2000-05-04 Damon Chaplin <damon@helixcode.com>
* gui/e-day-view.c (e_day_view_foreach_event_with_uid): for the long
events pass E_DAY_VIEW_LONG_EVENT as the day. Fixes SEGV.
* gui/calendar-commands.c: when we switch views, grab the focus.
* gui/gnome-cal.c (gnome_calendar_tag_calendar):
(gnome_calendar_mark_gtk_calendar_day): changed this so it uses
cal_client_get_events_in_range(), and doesn't load any objects.
Also just return if it isn't visible.
* gui/calendar-commands.c (calendar_get_events_in_range): call
g_list_sort() to sort the list rather than g_list_insert_sorted() for
each element. It is much more efficient.
Also changed it so that the co->ev_start/end fields are copied from
the CalObjInstance rather than the parameters to the function
(that is right, isn't it?)
Also freed the list elements, and finally the list.
(calendar_iterate): changed this to use cal_client_get_events_in_range
since that is more efficient than getting all the uids and then loading
and parsing all the events.
* pcs/cal-backend.c (save): output the '... saved' message before
freeing the string!
* gui/gncal-todo.c (gncal_todo_update):
* gui/e-week-view.c (e_week_view_update_event):
* gui/e-day-view.c (e_day_view_update_event):
* gui/calendar-commands.c (calendar_get_events_in_range):
(calendar_iterate): free obj_string after it is parsed.
svn path=/trunk/; revision=2802
* pcs/icalendar-save.c (icalcomponent_create_from_ical_object): set
attendee and contact address correctly.
* pcs/cal-backend.c (icalendar_calendar_load): init priv->object_hash
when loading.
(cal_get_type_from_filename): if file extension is .ical, consider
the file an ical file.
svn path=/trunk/; revision=2702
2000-04-26 Christopher James Lahey <clahey@helixcode.com>
* cal-util/.cvsignore: Replaced libcal-util.la with *.la
* pcs/.cvsignore: Added *.la and *.lo.
svn path=/trunk/; revision=2628
2000-04-25 Federico Mena Quintero <federico@helixcode.com>
* pcs/cal-factory.c (backend_last_client_gone_cb): Renamed from
backend_destroy_cb. Now we use it for the "last_client_gone"
signal from the backend. Also, unref the backend to destroy it.
(add_backend): Connect to the "last_client_gone" signal of the
backend.
(cal_factory_get_n_backends): New function to query the number of
running backends.
* pcs/cal-backend.c (cal_backend_class_init): Register the new
"last_client_gone" signal. It is emitted when the last Cal client
goes away. It is used to notify the factory when a backend may be
safely destroyed.
(cal_destroy_cb): Emit the "last_client_gone" signal when the last
client disconnects from the backend.
svn path=/trunk/; revision=2619
* pcs/icalendar.c (parse_person): allow for null CN
(parse_person): allow for null sent_by
* pcs/Makefile.am: build icalendar-test
* pcs/icalendar-test.c: a test which loads an ical file and
converts it to our internal format, and then saves it back out.
svn path=/trunk/; revision=2588
* pcs/icalendar-save.c: start on code to do the opposite of
icalendar.c (convert from iCalObjects to libical's icalcomponents).
svn path=/trunk/; revision=2550
* gui/gncal-todo.c (gncal_todo_update): fixed code to populate
the todo clist
* cal-client/cal-client.c (cal_client_get_uids): don't check
type again CALOBJ_TYPE_ANY since it will always match.
(cal_client_get_uids): same (re: CALOBJ_TYPE_ANY)
* pcs/cal-backend.c (build_uids_list): same (re: CALOBJ_TYPE_ANY)
* pcs/cal.c (Cal_get_uids): same (re: CALOBJ_TYPE_ANY)
svn path=/trunk/; revision=2509
* pcs/cal-backend.c (remove_object): don't call save from here
because in all cases the caller of remove_object calls save
svn path=/trunk/; revision=2507
* gui/calendar-commands.c (calendar_set_uri): calls gnome_calendar_open
instead of checking on disk and calling load or create.
* gui/gnome-cal.c (gnome_calendar_open): collapsed
gnome_calendar_load and gnome_calendar_create into this function.
added new type GnomeCalendarOpenMode which has the value
CALENDAR_OPEN or CALENDAR_OPEN_OR_CREATE.
svn path=/trunk/; revision=2506
2000-04-16 Federico Mena Quintero <federico@helixcode.com>
* pcs/cal-factory.h (CalFactoryClass): We have a new
"last_calendar_gone" signal that Wombat can use to terminate
itself properly.
* pcs/cal-factory.c (cal_factory_class_init): Register the
"last_calendar_gone" signal.
(backend_destroy_cb): Emit the "last_calendar_gone" signal instead
of killing the factory.
* pcs/Makefile.am: Added $(CORBA_GENERATED) to BUILT_SOURCES.
(INCLUDES): Make the log domain be "wombat-pcs".
svn path=/trunk/; revision=2475
* pcs/cal-backend.c (add_object): removed implicit save, since
we don't want to save as we load from disk.
(cal_backend_update_object): added a call to save, since it
isn't done by add_object now.
svn path=/trunk/; revision=2471
2000-04-16 Federico Mena Quintero <federico@helixcode.com>
* cal-util/Makefile.am: Renamed library from libcalutil to
libcal-util, to be consistent with libcal-client. Install header
files in $(includedir)/evolution/cal-util.
(INCLUDES): Add "cal-util" log domain for glib.
(libcal_clientincludedir): The header files are now installed in
$(includedir)/evolution/cal-client.
* cal-util/cal-util.h: Fix includes.
* cal-client/client-test.c: Fix includes.
* pcs/Makefile.am: Create libpcs.a, not a shared library, because
it is for internal use by Wombat only. The header files should
not be installed, either. Removed all the old Tlacuache stuff.
* gui/Makefile.am (EXTRA_DIST): We no longer distribute
gncal.desktop.
(evolution_calendar_INCLUDES): Add "calendar-gui" for the glib log
domain.
* gui/*.[ch]: Fix cal-util and cal-client includes.
* pcs/Makefile.am (INCLUDES): Added "pcs" log domain for glib.
* pcs/*.[ch]: Fix cal-util includes.
svn path=/trunk/; revision=2461
* pcs/icalendar.c (icaltime_to_timet): use HAVE_TIMEZONE to switch
between linux's timezone variable and *bsd's method of getting the
gmt offset.
svn path=/trunk/; revision=2399