aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/cal-factory.c
Commit message (Collapse)AuthorAgeFilesLines
* New function. We need this from code that dynamically updates from aFederico Mena Quintero2000-08-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-28 Federico Mena Quintero <federico@helixcode.com> * cal-client/cal-client.c (cal_client_is_loaded): New function. We need this from code that dynamically updates from a client and could not have connected to the "cal_loaded" signal right after the client was created. * gui/calendar-model.c (load_objects): Do not try to load the objects if the client has not been loaded yet. (cal_loaded_cb): Check the status value. * gui/calendar-model.h (CalendarModel): Declare the private structure here so that gdb will give me love. * pcs/cal-factory.h (CalFactory): Likewise. * pcs/cal.h (Cal): Likewise. * cal-client/cal-listener.h (CalListener): Likewise. * cal-client/cal-client.h (CalClient): Likewise. * pcs/cal-backend.h (CalBackend): This no longer has a private structure, so remove it. * cal-util/Makefile.am (libcal_util_la_SOURCES): Removed the vCalendar and old iCalendar cruft. (libcal_utilinclude_HEADERS): Likewise. Removed the obsolete iCalendar test program. svn path=/trunk/; revision=5091
* Big sync. Disable calendar compilation for a few hours - FedericoFederico Mena Quintero2000-08-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Removed unneeded check for the URI. (load_fn): Be more paranoid about theFederico Mena Quintero2000-07-121-14/+40
| | | | | | | | | | | | | 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
* As a quasi-hack, do a gdk_flush() when the shell view is unrealized soFederico Mena Quintero2000-07-101-0/+2
| | | | | | | | | | | | | | 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
* Removed double free of method_string in uri->method_string.Christopher James Lahey2000-05-091-1/+3
| | | | | | | | | 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
* CalBackendClass now is just an interface for calendar backends; this is anFederico Mena Quintero2000-05-091-162/+260
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Stylistic fix - FedericoFederico Mena Quintero2000-05-011-3/+1
| | | | svn path=/trunk/; revision=2707
* Renamed from backend_destroy_cb. Now we use it for the "last_client_gone"Federico Mena Quintero2000-04-261-4/+36
| | | | | | | | | | | | | | | | | | | | | 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
* We have a new "last_calendar_gone" signal that Wombat can use to terminateFederico Mena Quintero2000-04-181-2/+20
| | | | | | | | | | | | | | | | | | 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
* Implemented.Federico Mena Quintero2000-02-121-4/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-02-11 Federico Mena Quintero <federico@helixcode.com> * cal-client.c (cal_client_update_object): Implemented. * cal.c (cal_notify_update): New function to notify the listener about an updated object. (Cal_update_object): Implemented. (Cal_get_uids): set_release() the sequence to TRUE. (Cal_get_events_in_range): Likewise. * cal-backend.c (remove_object): New function to remove objects from a calendar backend. (cal_backend_update_object): New public function to update an object and notify clients about it. * evolution-calendar.idl (Cal): Added update_object() and delete_object() methods. (Listener): Removed the obj_changed method and renamed obj_added to obj_updated. We now only have updated and removed notifiers. * cal-listener.[ch]: Removed the "changed" notification code. Changed the "added" notification code to the "updated" notification. * cal-client.c: Likewise. * tlacuache.c (create_cal_factory): Connect to "destroy" on the factory and exit the main loop when the factory is destroyed. * cal-factory.c (backend_destroy_cb): New callback used when a backend is destroyed. Removes the backend from the factory's hash table and unrefs the factory if all backends go away. (add_calendar_client): Free the environment. * cal.c (cal_new): Use bonobo_object_unref() if we fail to initialize. * cal-listener.c (cal_listener_new): Likewise. * layout.c (layout_events): Plug li.partition memory leak. svn path=/trunk/; revision=1742
* Connect to the Cal's destroy signal. (cal_backend_remove_cal): KilledFederico Mena Quintero2000-02-111-18/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-02-10 Federico Mena Quintero <federico@helixcode.com> * cal-backend.c (cal_backend_add_cal): Connect to the Cal's destroy signal. (cal_backend_remove_cal): Killed function now that removal of Cal objects is done in their destroy callback. (cal_destroy_cb): New callback to remove a Cal from the backend's list of clients. Also, the backend destroys itself when there are no more clients connected to it. (save): New placeholder function to save a backend. (destroy): New function to destroy a backend's data. (cal_backend_destroy): Save the calendar and destroy it. * cal.c (cal_destroy): Reset the priv->backend to NULL. * cal-factory.c (add_calendar_client): There is no need to call cal_backend_remove_cal(); we can now just destroy the Cal object. (create_fn): Make sure we always unref the URI. (load_fn): Move the URI unref to the end of the function for safety. * cal-factory.c (add_calendar_client): Unref the Cal only if notification of the listener was unsuccessful. Otherwise, the calendar user agent (Listener side) keeps the reference. * tl-test.c (list_uids): Free the calobj. * cal-client.c (cal_loaded_cb): Use bonobo_object_unref() to get rid of the listener. (load_or_create): Likewise. (destroy_factory): New function to get rid of the factory. (destroy_listener): New function to get rid of the listener. (destroy_cal): New function to get rid of the calendar client interface object. (cal_client_destroy): Free all resources. (cal_client_get_object): CORBA_free() the calobj string. Boy, I love memprof. * cal-listener.c (cal_listener_destroy): Reset the priv->cal to CORBA_OBJECT_NIL. * cal-backend.c (cal_backend_remove_cal): Do not unref the Cal, since the calendar user agent owns it. (cal_backend_add_cal): Do not ref the Cal, since the calendar user agent owns it. * cal-factory.c (add_calendar_client): Use bonobo_object_unref() to get rid of the calendar client interface object. * calobj.c (ical_object_create_from_vobject): Duplicate the default "PUBLIC" string. 2000-02-09 Federico Mena Quintero <federico@helixcode.com> * cal-factory.c (cal_factory_load): Added documentation comment. (load_fn): Do not print a message if the backend could not be loaded due to a non-fatal error. (queue_load_create_job): Moved the stuff from cal_factory_load() to here. Now this function serves to queue load or create requests. (cal_factory_load): Use queue_load_create_job(). (cal_factory_create): Implemented; use queue_load_create_job(). (create_fn): New job handler for creating new calendars. (create_backend): New function to create a new backend with a new calendar. (add_backend): New helper function to add backends to the factory's hash table. (load_backend): Use add_backend() instead of adding the backend by ourselves. * cal-client.c (load_or_create): Moved the functionality from cal_client_load_calendar() to here, and added an option to create a new calendar instead of loading an existing one. (cal_client_load_calendar): Use load_or_create(). (cal_client_create_calendar): Implemented. * cal-backend.c (cal_backend_create): Implemented. * evolution-calendar.idl (LoadStatus): Added an IN_USE error for create requests. * cal-listener.h (CalListenerLoadStatus): Added CAL_LISTENER_LOAD_IN_USE. * cal-listener.c (Listener_cal_loaded): Convert the IN_USE error. * cal-client.h (CalClientLoadStatus): Added CAL_CLIENT_LOAD_IN_USE. * cal-client.c (cal_loaded_cb): Handle CAL_LISTENER_LOAD_IN_USE. * tl-test.c: New test program for the calendar client side; it also exercises the server side by sending commands to it. * Makefile.am: Added the tl-test program. * tlacuache.gnorba: Updated. * tlacuache.c (create_cal_factory): Use the right GOAD id. * cal-client.c (cal_client_construct): Use the right GOAD id. svn path=/trunk/; revision=1732
* Added the get_object() method.Federico Mena Quintero2000-02-021-2/+2
| | | | | | | | | | | | | | | | | 2000-02-03 Federico Mena Quintero <federico@helixcode.com> * evolution-calendar.idl (Cal): Added the get_object() method. * cal-client.c (cal_client_get_object): New function to get a calendar object by its UID. * cal.c (Cal_get_object): Implemented. * cal-backend.c (cal_backend_get_object): New unfinished backend function. We need some reorganizing of how the calendar objects are stored. svn path=/trunk/; revision=1663
* Changed the namespace from GNOME::Calendar to Evolution::Calendar.Federico Mena Quintero2000-01-291-37/+37
| | | | | | | | | | | | | | | | | 2000-01-30 Federico Mena Quintero <federico@helixcode.com> * evolution-calendar.idl: Changed the namespace from GNOME::Calendar to Evolution::Calendar. (Listener::LoadStatus): Fixed SUCESSS -> SUCCESS typo. And I never noticed it in the implementation. Ain't M-/ grand? * Makefile.am: Changed ocurrences of gnome-calendar.idl to evolution-calendar.idl. * *.[ch]: Changed GNOME_Calendar_foo identifiers to Evolution_Calendar_foo. svn path=/trunk/; revision=1652
* Make Evolution compile with the latest Bonobo changes.Arturo Espinosa2000-01-261-13/+13
| | | | | | | | Make Evolution compile with the latest Bonobo changes. Miguel. svn path=/trunk/; revision=1636
* Check that the listener is not nil and emit and exception if it is.Federico Mena Quintero2000-01-251-6/+35
| | | | | | | | | | | | | | | | | 2000-01-25 Federico Mena Quintero <federico@helixcode.com> * cal-factory.c (CalFactory_load): Check that the listener is not nil and emit and exception if it is. * gnome-calendar.idl (CalFactory::load CalFactory::create): Now these raise the NilListener exception. * tlacuache.c (calendar_notify): Error stub for alarms. (alarm_defaults): Stub array. (debug_alarms): Stub variable. (main): Initialize gnome-vfs. svn path=/trunk/; revision=1627
* Added the gnome-pilot and capplet checks; they will likely be reworked forFederico Mena Quintero2000-01-251-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-01-24 Federico Mena Quintero <federico@helixcode.com> * configure.in: Added the gnome-pilot and capplet checks; they will likely be reworked for the Evolution framework, but for now the calendar/ directory needs them. * configure.in: Added checks for gnome-vfs. 2000-01-24 Federico Mena Quintero <federico@helixcode.com> * tlacuache.c: New main module for the Tlacuache personal calendar server. * tlacuache.gnorba: New gnorba file for Tlacuache, the GNOME personal calendar server. * Makefile.am: Added the stuff necessary to build Tlacuache. * cal.c (Cal_get_uri): Convert the URI to a string before returning it. * cal-factory.c (CalFactory_create): Doh, this function is void. * job.c (job_add): Use g_idle_add(), not gtk_idle_add(). svn path=/trunk/; revision=1623
* New function to remove a calendar client interface object from a backend.Federico Mena Quintero2000-01-241-38/+112
| | | | | | | | | | | | | | | | | | | | | 2000-01-24 Federico Mena Quintero <federico@helixcode.com> * cal-backend.c (cal_backend_remove_cal): New function to remove a calendar client interface object from a backend. (cal_backend_load): Convert the URI to string and use Parse_MIME_FromFileName(). The conversion is not very smart, though. * cal-factory.c (load_backend): Moved most of the error handling upstream to load_fn(). (load_fn): Handle failure in case the backend could not be loaded. (cal_factory_destroy): Free the backends and the backend hash table. (add_calendar_client): Implemented. We create a Cal client interface object and attach it to the backend, and we notify the listener. svn path=/trunk/; revision=1618
* Take in a GnomeVFSURI, not a string.Federico Mena Quintero2000-01-221-6/+39
| | | | | | | | | | | | | | | | | | | | | | | | 2000-01-22 Federico Mena Quintero <federico@helixcode.com> * cal-backend.c (cal_backend_load): Take in a GnomeVFSURI, not a string. * cal-listener.c (Listener_cal_loaded): Pass the load status to the signal. (cal_listener_destroy): Better error checking. (cal_listener_new): Better error checking. * cal-listener.h (CalListenerLoadStatus): New enum for the load status of a calendar. (CalListenerClass): Added the status argument to the cal_loaded signal. * gnome-calendar.idl (cal_loaded): Added a load status code. * cal-backend.h (CalBackendLoadStatus): Renamed from CalBackendLoadResult. svn path=/trunk/; revision=1607
* Moved the calendar backend here. This is the actual calendar-handlingFederico Mena Quintero2000-01-191-21/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-01-18 Federico Mena Quintero <federico@helixcode.com> * cal-backend.c cal-backend.h: Moved the calendar backend here. This is the actual calendar-handling object. (load_from_vobject): Moved over from calendar.c. Modified to use a CalBackend instead of the old Calendar structure. (add_object): Likewise. * cal.c: Now the Cal object is just a calendar client interface object; we use it as a "viewport" onto a CalBackend. This also lets us do correct resource management. * cal-common.h: New file with common forward declarations; we can't have circular dependencies between headers. 2000-01-18 Federico Mena Quintero <federico@helixcode.com> * cal-factory.c (cal_factory_load): Queue a load job. (load_fn): Load job handler. Lookup the calendar by URI, load it if it is not loaded, or just report it to the new listener if it is. * job.c job.h: New files with a simple job queue manager. * gnome-calendar.idl (Listener::cal_loaded): Do not return the whole calendar object string. The client will be able to query the calendar for the events it needs. * cal-listener.c (Listener_cal_loaded): Ref the calendar GNOME object. We unref it when the listener is destroyed. 2000-01-17 Federico Mena Quintero <federico@helixcode.com> The files from the gncal directory of the gnome-pim module on CVS were moved here, to evolution/calendar, in preparation for the Evolution work. The calendar is being split into a model/view architecture. The model is a personal calendar server (PAS): it provides storage, notification, and event generation; the views/controllers are the calendar user agents and things like Pilot synchronizers. svn path=/trunk/; revision=1591
* Sync, take two - FedericoArturo Espinosa2000-01-181-0/+1
| | | | svn path=/trunk/; revision=1588
* Sync - FedericoArturo Espinosa2000-01-181-5/+111
| | | | svn path=/trunk/; revision=1585
* New IDL for the personal calendar server.Federico Mena Quintero2000-01-121-0/+272
2000-01-11 Federico Mena Quintero <federico@helixcode.com> * gnome-calendar.idl: New IDL for the personal calendar server. * cal.h cal.c: New files with the calendar object. * cal-listener.h cal-listener.c: New files with the calendar listener object. * cal-factory.h cal-factory.c: New files with the calendar factory object. svn path=/trunk/; revision=1555