diff options
Diffstat (limited to 'calendar/pcs')
-rw-r--r-- | calendar/pcs/cal-backend-file.c | 94 | ||||
-rw-r--r-- | calendar/pcs/cal-backend-util.c | 1 | ||||
-rw-r--r-- | calendar/pcs/cal.c | 183 |
3 files changed, 141 insertions, 137 deletions
diff --git a/calendar/pcs/cal-backend-file.c b/calendar/pcs/cal-backend-file.c index 3f457a0a57..595626f043 100644 --- a/calendar/pcs/cal-backend-file.c +++ b/calendar/pcs/cal-backend-file.c @@ -21,6 +21,7 @@ */ #include <config.h> +#include <string.h> #include <bonobo/bonobo-exception.h> #include <bonobo/bonobo-moniker-util.h> #include <libgnomevfs/gnome-vfs.h> @@ -73,7 +74,7 @@ struct _CalBackendFilePrivate { GHashTable *removed_categories; /* Config database handle for free/busy organizer information */ - Bonobo_ConfigDatabase db; + EConfigListener *config_listener; /* Idle handler for saving the calendar when it is dirty */ guint idle_id; @@ -87,6 +88,7 @@ struct _CalBackendFilePrivate { static void cal_backend_file_class_init (CalBackendFileClass *class); static void cal_backend_file_init (CalBackendFile *cbfile, CalBackendFileClass *class); +static void cal_backend_file_dispose (GObject *object); static void cal_backend_file_finalize (GObject *object); static const char *cal_backend_file_get_uri (CalBackend *backend); @@ -136,6 +138,7 @@ static gboolean cal_backend_file_set_default_timezone (CalBackend *backend, const char *tzid); static void notify_categories_changed (CalBackendFile *cbfile); +static void notify_error (CalBackendFile *cbfile, const char *message); static CalBackendClass *parent_class; @@ -185,6 +188,7 @@ cal_backend_file_class_init (CalBackendFileClass *class) parent_class = (CalBackendClass *) g_type_class_peek_parent (class); + object_class->dispose = cal_backend_file_dispose; object_class->finalize = cal_backend_file_finalize; backend_class->get_uri = cal_backend_file_get_uri; @@ -214,24 +218,6 @@ cal_backend_file_class_init (CalBackendFileClass *class) backend_class->set_default_timezone = cal_backend_file_set_default_timezone; } -static Bonobo_ConfigDatabase -load_db (void) -{ - Bonobo_ConfigDatabase db = CORBA_OBJECT_NIL; - CORBA_Environment ev; - - CORBA_exception_init (&ev); - - db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev); - - if (BONOBO_EX (&ev)) - db = CORBA_OBJECT_NIL; - - CORBA_exception_free (&ev); - - return db; -} - static void cal_added_cb (CalBackend *backend, gpointer user_data) { @@ -260,7 +246,7 @@ cal_backend_file_init (CalBackendFile *cbfile, CalBackendFileClass *class) /* The timezone defaults to UTC. */ priv->default_zone = icaltimezone_get_utc_timezone (); - priv->db = load_db (); + priv->config_listener = e_config_listener_new (); g_signal_connect (G_OBJECT (cbfile), "cal_added", G_CALLBACK (cal_added_cb), NULL); @@ -358,23 +344,16 @@ free_category_cb (gpointer key, gpointer value, gpointer data) g_free (c); } -/* Finalize handler for the file backend */ +/* Dispose handler for the file backend */ static void -cal_backend_file_finalize (GObject *object) +cal_backend_file_dispose (GObject *object) { CalBackendFile *cbfile; CalBackendFilePrivate *priv; - GList *clients; - - g_return_if_fail (object != NULL); - g_return_if_fail (IS_CAL_BACKEND_FILE (object)); cbfile = CAL_BACKEND_FILE (object); priv = cbfile->priv; - clients = CAL_BACKEND (cbfile)->clients; - g_assert (clients == NULL); - /* Save if necessary */ if (priv->idle_id != 0) { @@ -383,13 +362,6 @@ cal_backend_file_finalize (GObject *object) priv->idle_id = 0; } - /* Clean up */ - - if (priv->uri) { - g_free (priv->uri); - priv->uri = NULL; - } - if (priv->comp_uid_hash) { g_hash_table_foreach (priv->comp_uid_hash, free_cal_component, NULL); @@ -404,6 +376,44 @@ cal_backend_file_finalize (GObject *object) priv->todos = NULL; priv->journals = NULL; + if (priv->icalcomp) { + icalcomponent_free (priv->icalcomp); + priv->icalcomp = NULL; + } + + if (priv->config_listener) { + g_object_unref (priv->config_listener); + priv->config_listener = NULL; + } + + if (G_OBJECT_CLASS (parent_class)->dispose) + (* G_OBJECT_CLASS (parent_class)->dispose) (object); +} + +/* Finalize handler for the file backend */ +static void +cal_backend_file_finalize (GObject *object) +{ + CalBackendFile *cbfile; + CalBackendFilePrivate *priv; + GList *clients; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_CAL_BACKEND_FILE (object)); + + cbfile = CAL_BACKEND_FILE (object); + priv = cbfile->priv; + + clients = CAL_BACKEND (cbfile)->clients; + g_assert (clients == NULL); + + /* Clean up */ + + if (priv->uri) { + g_free (priv->uri); + priv->uri = NULL; + } + g_hash_table_foreach (priv->categories, free_category_cb, NULL); g_hash_table_destroy (priv->categories); priv->categories = NULL; @@ -412,14 +422,6 @@ cal_backend_file_finalize (GObject *object) g_hash_table_destroy (priv->removed_categories); priv->removed_categories = NULL; - if (priv->icalcomp) { - icalcomponent_free (priv->icalcomp); - priv->icalcomp = NULL; - } - - bonobo_object_release_unref (priv->db, NULL); - priv->db = CORBA_OBJECT_NIL; - g_free (priv); cbfile->priv = NULL; @@ -1406,7 +1408,7 @@ cal_backend_file_get_free_busy (CalBackend *backend, GList *users, time_t start, g_return_val_if_fail (start <= end, NULL); if (users == NULL) { - if (cal_backend_mail_account_get_default (priv->db, &address, &name)) { + if (cal_backend_mail_account_get_default (priv->config_listener, &address, &name)) { vfb = create_user_free_busy (cbfile, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); obj_list = g_list_append (obj_list, g_strdup (calobj)); @@ -1417,7 +1419,7 @@ cal_backend_file_get_free_busy (CalBackend *backend, GList *users, time_t start, } else { for (l = users; l != NULL; l = l->next ) { address = l->data; - if (cal_backend_mail_account_is_valid (priv->db, address, &name)) { + if (cal_backend_mail_account_is_valid (priv->config_listener, address, &name)) { vfb = create_user_free_busy (cbfile, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); obj_list = g_list_append (obj_list, g_strdup (calobj)); diff --git a/calendar/pcs/cal-backend-util.c b/calendar/pcs/cal-backend-util.c index a63a2b319c..a5b6d1adc8 100644 --- a/calendar/pcs/cal-backend-util.c +++ b/calendar/pcs/cal-backend-util.c @@ -20,6 +20,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ +#include <string.h> #include "cal-backend-util.h" void diff --git a/calendar/pcs/cal.c b/calendar/pcs/cal.c index 20ec86eb28..0d089b5096 100644 --- a/calendar/pcs/cal.c +++ b/calendar/pcs/cal.c @@ -64,10 +64,10 @@ impl_Cal_get_uri (PortableServer_Servant servant, return str_uri_copy; } -/* Cal::is_read_only method */ +/* Cal::isReadOnly method */ static CORBA_boolean -impl_Cal_is_read_only (PortableServer_Servant servant, - CORBA_Environment *ev) +impl_Cal_isReadOnly (PortableServer_Servant servant, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -78,10 +78,10 @@ impl_Cal_is_read_only (PortableServer_Servant servant, return cal_backend_is_read_only (priv->backend); } -/* Cal::get_email_address method */ +/* Cal::getEmailAddress method */ static CORBA_char * -impl_Cal_get_email_address (PortableServer_Servant servant, - CORBA_Environment *ev) +impl_Cal_getEmailAddress (PortableServer_Servant servant, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -113,10 +113,11 @@ uncorba_obj_type (GNOME_Evolution_Calendar_CalObjType type) | ((type & GNOME_Evolution_Calendar_TYPE_JOURNAL) ? CALOBJ_TYPE_JOURNAL : 0)); } +/* Cal::setMode method */ static void -impl_Cal_set_mode (PortableServer_Servant servant, - GNOME_Evolution_Calendar_CalMode mode, - CORBA_Environment *ev) +impl_Cal_setMode (PortableServer_Servant servant, + GNOME_Evolution_Calendar_CalMode mode, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -127,11 +128,11 @@ impl_Cal_set_mode (PortableServer_Servant servant, cal_backend_set_mode (priv->backend, mode); } -/* Cal::get_n_objects method */ +/* Cal::countObjects method */ static CORBA_long -impl_Cal_get_n_objects (PortableServer_Servant servant, - GNOME_Evolution_Calendar_CalObjType type, - CORBA_Environment *ev) +impl_Cal_countObjects (PortableServer_Servant servant, + GNOME_Evolution_Calendar_CalObjType type, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -146,11 +147,11 @@ impl_Cal_get_n_objects (PortableServer_Servant servant, return n; } -/* Cal::get_object method */ +/* Cal::getObject method */ static GNOME_Evolution_Calendar_CalObj -impl_Cal_get_object (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalObjUID uid, - CORBA_Environment *ev) +impl_Cal_getObject (PortableServer_Servant servant, + const CORBA_char *uid, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -200,11 +201,11 @@ build_uid_seq (GList *uids) return seq; } -/* Cal::get_uids method */ +/* Cal::getUIDs method */ static GNOME_Evolution_Calendar_CalObjUIDSeq * -impl_Cal_get_uids (PortableServer_Servant servant, - GNOME_Evolution_Calendar_CalObjType type, - CORBA_Environment *ev) +impl_Cal_getUIDs (PortableServer_Servant servant, + GNOME_Evolution_Calendar_CalObjType type, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -225,12 +226,12 @@ impl_Cal_get_uids (PortableServer_Servant servant, return seq; } -/* Cal::get_changes method */ +/* Cal::getChanges method */ static GNOME_Evolution_Calendar_CalObjChangeSeq * -impl_Cal_get_changes (PortableServer_Servant servant, - GNOME_Evolution_Calendar_CalObjType type, - const CORBA_char *change_id, - CORBA_Environment *ev) +impl_Cal_getChanges (PortableServer_Servant servant, + GNOME_Evolution_Calendar_CalObjType type, + const CORBA_char *change_id, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -244,13 +245,13 @@ impl_Cal_get_changes (PortableServer_Servant servant, return cal_backend_get_changes (priv->backend, t, change_id); } -/* Cal::get_objects_in_range method */ +/* Cal::getObjectsInRange method */ static GNOME_Evolution_Calendar_CalObjUIDSeq * -impl_Cal_get_objects_in_range (PortableServer_Servant servant, - GNOME_Evolution_Calendar_CalObjType type, - GNOME_Evolution_Calendar_Time_t start, - GNOME_Evolution_Calendar_Time_t end, - CORBA_Environment *ev) +impl_Cal_getObjectsInRange (PortableServer_Servant servant, + GNOME_Evolution_Calendar_CalObjType type, + GNOME_Evolution_Calendar_Time_t start, + GNOME_Evolution_Calendar_Time_t end, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -305,13 +306,13 @@ build_fb_seq (GList *obj_list) return seq; } -/* Cal::get_free_busy method */ +/* Cal::getFreeBusy method */ static GNOME_Evolution_Calendar_CalObjSeq * -impl_Cal_get_free_busy (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_UserList *user_list, - const GNOME_Evolution_Calendar_Time_t start, - const GNOME_Evolution_Calendar_Time_t end, - CORBA_Environment *ev) +impl_Cal_getFreeBusy (PortableServer_Servant servant, + const GNOME_Evolution_Calendar_UserList *user_list, + const GNOME_Evolution_Calendar_Time_t start, + const GNOME_Evolution_Calendar_Time_t end, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -350,12 +351,12 @@ impl_Cal_get_free_busy (PortableServer_Servant servant, return seq; } -/* Cal::get_alarms_in_range method */ +/* Cal::getAlarmsInRange method */ static GNOME_Evolution_Calendar_CalComponentAlarmsSeq * -impl_Cal_get_alarms_in_range (PortableServer_Servant servant, - GNOME_Evolution_Calendar_Time_t start, - GNOME_Evolution_Calendar_Time_t end, - CORBA_Environment *ev) +impl_Cal_getAlarmsInRange (PortableServer_Servant servant, + GNOME_Evolution_Calendar_Time_t start, + GNOME_Evolution_Calendar_Time_t end, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -383,13 +384,13 @@ impl_Cal_get_alarms_in_range (PortableServer_Servant servant, return seq; } -/* Cal::get_alarms_for_object method */ +/* Cal::getAlarmsForObject method */ static GNOME_Evolution_Calendar_CalComponentAlarms * -impl_Cal_get_alarms_for_object (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalObjUID uid, - GNOME_Evolution_Calendar_Time_t start, - GNOME_Evolution_Calendar_Time_t end, - CORBA_Environment * ev) +impl_Cal_getAlarmsForObject (PortableServer_Servant servant, + const CORBA_char *uid, + GNOME_Evolution_Calendar_Time_t start, + GNOME_Evolution_Calendar_Time_t end, + CORBA_Environment * ev) { Cal *cal; CalPrivate *priv; @@ -423,11 +424,11 @@ impl_Cal_get_alarms_for_object (PortableServer_Servant servant, } } -/* Cal::update_objects method */ +/* Cal::updateObjects method */ static void -impl_Cal_update_objects (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalObj calobj, - CORBA_Environment *ev) +impl_Cal_updateObjects (PortableServer_Servant servant, + const CORBA_char *calobj, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -452,11 +453,11 @@ impl_Cal_update_objects (PortableServer_Servant servant, } } -/* Cal::remove_object method */ +/* Cal::removeObject method */ static void -impl_Cal_remove_object (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalObjUID uid, - CORBA_Environment *ev) +impl_Cal_removeObject (PortableServer_Servant servant, + const CORBA_char *uid, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -481,12 +482,12 @@ impl_Cal_remove_object (PortableServer_Servant servant, } } -/* Cal::send_object method */ +/* Cal::sendObject method */ static GNOME_Evolution_Calendar_CalObj -impl_Cal_send_object (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalObj calobj, - GNOME_Evolution_Calendar_UserList **user_list, - CORBA_Environment *ev) +impl_Cal_sendObject (PortableServer_Servant servant, + const CORBA_char *calobj, + GNOME_Evolution_Calendar_UserList **user_list, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -530,10 +531,10 @@ impl_Cal_send_object (PortableServer_Servant servant, /* Cal::getQuery implementation */ static GNOME_Evolution_Calendar_Query -impl_Cal_get_query (PortableServer_Servant servant, - const CORBA_char *sexp, - GNOME_Evolution_Calendar_QueryListener ql, - CORBA_Environment *ev) +impl_Cal_getQuery (PortableServer_Servant servant, + const CORBA_char *sexp, + GNOME_Evolution_Calendar_QueryListener ql, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -565,11 +566,11 @@ impl_Cal_get_query (PortableServer_Servant servant, return query_copy; } -/* Cal::set_default_timezone method */ +/* Cal::setDefaultTimezone method */ static void -impl_Cal_set_default_timezone (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalTimezoneObjUID tzid, - CORBA_Environment *ev) +impl_Cal_setDefaultTimezone (PortableServer_Servant servant, + const CORBA_char *tzid, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -585,11 +586,11 @@ impl_Cal_set_default_timezone (PortableServer_Servant servant, } } -/* Cal::get_timezone_object method */ +/* Cal::getTimezoneObject method */ static GNOME_Evolution_Calendar_CalObj -impl_Cal_get_timezone_object (PortableServer_Servant servant, - const GNOME_Evolution_Calendar_CalTimezoneObjUID tzid, - CORBA_Environment *ev) +impl_Cal_getTimezoneObject (PortableServer_Servant servant, + const CORBA_char *tzid, + CORBA_Environment *ev) { Cal *cal; CalPrivate *priv; @@ -746,23 +747,23 @@ cal_class_init (CalClass *klass) /* Epv methods */ epv->_get_uri = impl_Cal_get_uri; - epv->isReadOnly = impl_Cal_is_read_only; - epv->getEmailAddress = impl_Cal_get_email_address; - epv->setMode = impl_Cal_set_mode; - epv->countObjects = impl_Cal_get_n_objects; - epv->getObject = impl_Cal_get_object; - epv->setDefaultTimezone = impl_Cal_set_default_timezone; - epv->getTimezoneObject = impl_Cal_get_timezone_object; - epv->getUIDs = impl_Cal_get_uids; - epv->getChanges = impl_Cal_get_changes; - epv->getObjectsInRange = impl_Cal_get_objects_in_range; - epv->getFreeBusy = impl_Cal_get_free_busy; - epv->getAlarmsInRange = impl_Cal_get_alarms_in_range; - epv->getAlarmsForObject = impl_Cal_get_alarms_for_object; - epv->updateObjects = impl_Cal_update_objects; - epv->removeObject = impl_Cal_remove_object; - epv->sendObject = impl_Cal_send_object; - epv->getQuery = impl_Cal_get_query; + epv->isReadOnly = impl_Cal_isReadOnly; + epv->getEmailAddress = impl_Cal_getEmailAddress; + epv->setMode = impl_Cal_setMode; + epv->countObjects = impl_Cal_countObjects; + epv->getObject = impl_Cal_getObject; + epv->setDefaultTimezone = impl_Cal_setDefaultTimezone; + epv->getTimezoneObject = impl_Cal_getTimezoneObject; + epv->getUIDs = impl_Cal_getUIDs; + epv->getChanges = impl_Cal_getChanges; + epv->getObjectsInRange = impl_Cal_getObjectsInRange; + epv->getFreeBusy = impl_Cal_getFreeBusy; + epv->getAlarmsInRange = impl_Cal_getAlarmsInRange; + epv->getAlarmsForObject = impl_Cal_getAlarmsForObject; + epv->updateObjects = impl_Cal_updateObjects; + epv->removeObject = impl_Cal_removeObject; + epv->sendObject = impl_Cal_sendObject; + epv->getQuery = impl_Cal_getQuery; } |