From 873dfc7f89dcda2ce62feee64f6e800ba79fd84f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 9 Mar 2000 14:25:56 +0000 Subject: replaced "Calendar *cal" with "CalClient *calc" in the GnomeCalendar * gui/gnome-cal.h: replaced "Calendar *cal" with "CalClient *calc" in the GnomeCalendar struct. * gui/*.c: tracked change from Calendar * to CalClient * gui/main.c: moved alarm_defaults from here to cal-util/calobj.c (calendar_get_events_in_range): pulled this out of calendar.c and fixed it up to use cal-client stuff. i'm not sure where to put it yet. * gui/main.c (calendar_iterate): pulled this one out of calendar.c also svn path=/trunk/; revision=2090 --- calendar/gui/corba-cal.c | 186 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 148 insertions(+), 38 deletions(-) (limited to 'calendar/gui/corba-cal.c') diff --git a/calendar/gui/corba-cal.c b/calendar/gui/corba-cal.c index 759b989893..a547c2dc2b 100644 --- a/calendar/gui/corba-cal.c +++ b/calendar/gui/corba-cal.c @@ -9,7 +9,7 @@ #include #include #include -#include "calendar.h" +/*#include "calendar.h" DELETE */ #include "gnome-cal.h" #include "alarm.h" #include "cal-util/timeutil.h" @@ -19,6 +19,10 @@ #include "corba-cal-factory.h" #include "corba-cal.h" +static iCalObject * +calendar_object_find_by_pilot (GnomeCalendar *cal, int pilot_id); + + typedef struct { POA_GNOME_Calendar_Repository servant; GnomeCalendar *calendar; @@ -50,10 +54,15 @@ cal_repo_get_object (PortableServer_Servant servant, { GnomeCalendar *gcal = gnomecal_from_servant (servant); iCalObject *obj; + char *obj_string; char *buffer; CORBA_char *ret; - obj = calendar_object_find_event (gcal->cal, uid); + /*obj = calendar_object_find_event (gcal->cal, uid); DELETE */ + obj_string = cal_client_get_object (gcal->calc, uid); + obj = string_to_ical_object (obj_string); + free (obj_string); + if (obj == NULL){ GNOME_Calendar_Repository_NotFound *exn; @@ -66,13 +75,16 @@ cal_repo_get_object (PortableServer_Servant servant, return NULL; } - buffer = calendar_string_from_object (obj); + /* buffer = calendar_string_from_object (obj); DELETE */ + buffer = ical_object_to_string (obj); ret = CORBA_string_dup (buffer); free (buffer); return ret; } + + static CORBA_char * cal_repo_get_object_by_pilot_id (PortableServer_Servant servant, CORBA_long pilot_id, @@ -83,7 +95,7 @@ cal_repo_get_object_by_pilot_id (PortableServer_Servant servant, char *buffer; CORBA_char *ret; - obj = calendar_object_find_by_pilot (gcal->cal, pilot_id); + obj = calendar_object_find_by_pilot (gcal, pilot_id); if (obj == NULL){ GNOME_Calendar_Repository_NotFound *exn; @@ -94,7 +106,8 @@ cal_repo_get_object_by_pilot_id (PortableServer_Servant servant, return NULL; } - buffer = calendar_string_from_object (obj); + /* buffer = calendar_string_from_object (obj); DELETE */ + buffer = ical_object_to_string (obj); ret = CORBA_string_dup (buffer); free (buffer); @@ -102,6 +115,40 @@ cal_repo_get_object_by_pilot_id (PortableServer_Servant servant, } +/* where should this go? FIX ME */ +static iCalObject * +calendar_object_find_by_pilot (GnomeCalendar *cal, int pilot_id) +{ + GList *l, *uids; + + g_return_val_if_fail (cal != NULL, NULL); + + uids = cal_client_get_uids (cal->calc, + CALOBJ_TYPE_EVENT | + CALOBJ_TYPE_TODO | + CALOBJ_TYPE_JOURNAL | + CALOBJ_TYPE_OTHER | + CALOBJ_TYPE_ANY); + for (l = uids; l; l = l->next){ + char *obj_string = cal_client_get_object (cal->calc, l->data); + iCalObject *obj = string_to_ical_object (obj_string); + + if (obj->pilot_id == pilot_id) + return obj; + } + + /* DELETE + for (l = cal->todo; l; l = l->next){ + iCalObject *obj = l->data; + + if (obj->pilot_id == pilot_id) + return obj; + } + */ + + return NULL; +} + static CORBA_char * cal_repo_get_id_from_pilot_id (PortableServer_Servant servant, CORBA_long pilot_id, @@ -110,7 +157,7 @@ cal_repo_get_id_from_pilot_id (PortableServer_Servant servant, GnomeCalendar *gcal = gnomecal_from_servant (servant); iCalObject *obj; - obj = calendar_object_find_by_pilot (gcal->cal, pilot_id); + obj = calendar_object_find_by_pilot (gcal, pilot_id); if (obj == NULL){ GNOME_Calendar_Repository_NotFound *exn; @@ -131,15 +178,21 @@ cal_repo_delete_object (PortableServer_Servant servant, { GnomeCalendar *gcal = gnomecal_from_servant (servant); iCalObject *obj; + char *obj_string; + + /* obj = calendar_object_find_event (gcal->cal, uid); */ + obj_string = cal_client_get_object (gcal->calc, uid); + obj = string_to_ical_object (obj_string); + free (obj_string); - obj = calendar_object_find_event (gcal->cal, uid); if (obj == NULL){ GNOME_Calendar_Repository_NotFound *exn; exn = GNOME_Calendar_Repository_NotFound__alloc(); CORBA_exception_set (ev, CORBA_USER_EXCEPTION, - ex_GNOME_Calendar_Repository_NotFound, exn); + ex_GNOME_Calendar_Repository_NotFound, + exn); return; } @@ -153,17 +206,29 @@ cal_repo_update_object (PortableServer_Servant servant, CORBA_Environment *ev) { GnomeCalendar *gcal = gnomecal_from_servant (servant); - iCalObject *obj; + /* iCalObject *obj; char *obj_string; */ iCalObject *new_object; + char *new_object_string; new_object = ical_object_new_from_string (vcalendar_object); - - obj = calendar_object_find_event (gcal->cal, uid); + +#if 0 /* it looks like this is taken care of in cal_client_update_object? */ + /* DELETE */ + /* obj = calendar_object_find_event (gcal->cal, uid); DELETE */ + obj_string = cal_client_get_object (gcal->calc, uid); + obj = string_to_ical_object (obj_string); + free (obj_string); + if (obj != NULL){ - calendar_remove_object (gcal->cal, obj); + /* calendar_remove_object (gcal->cal, obj); DELETE */ + cal_client_remove_object (gcal->calc, uid); } +#endif /* 0 */ - calendar_add_object (gcal->cal, new_object); + /* calendar_add_object (gcal->cal, new_object); DELETE */ + new_object_string = ical_object_to_string (new_object); + cal_client_update_object (gcal->calc, uid, new_object_string); + free (new_object_string); } static void @@ -175,8 +240,13 @@ cal_repo_update_pilot_id (PortableServer_Servant servant, { GnomeCalendar *gcal = gnomecal_from_servant (servant); iCalObject *obj; + char *obj_string; - obj = calendar_object_find_event (gcal->cal, uid); + /* obj = calendar_object_find_event (gcal->cal, uid); DELETE */ + obj_string = cal_client_get_object (gcal->calc, uid); + obj = string_to_ical_object (obj_string); + free (obj_string); + if (obj == NULL){ GNOME_Calendar_Repository_NotFound *exn; @@ -193,6 +263,13 @@ cal_repo_update_pilot_id (PortableServer_Servant servant, obj->pilot_status = pilot_status; } + +static void list_free_string (gpointer data, gpointer user_data) +{ + free (data); +} + + static CORBA_long cal_repo_get_number_of_objects (PortableServer_Servant servant, GNOME_Calendar_Repository_RecordStatus record_status, @@ -200,11 +277,17 @@ cal_repo_get_number_of_objects (PortableServer_Servant servant, { GnomeCalendar *gcal = gnomecal_from_servant (servant); CORBA_long res; - GList *l; iCalPilotState real_record_status; + GList *l, *uids; if (record_status == GNOME_Calendar_Repository_ANY) { - return g_list_length(gcal->cal->events); + /* return g_list_length(gcal->cal->events); DELETE */ + GList *uids = cal_client_get_uids (gcal->calc, + CALOBJ_TYPE_EVENT); + res = g_list_length (uids); + g_list_foreach (uids, list_free_string, NULL); + g_list_free (uids); + return res; } switch (record_status) { @@ -221,13 +304,17 @@ cal_repo_get_number_of_objects (PortableServer_Servant servant, res = 0; - for (l = gcal->cal->events; l; l = l->next){ - iCalObject *obj = l->data; + uids = cal_client_get_uids (gcal->calc, CALOBJ_TYPE_EVENT); + for (l = uids; l; l = l->next){ + char *obj_string = cal_client_get_object (gcal->calc, l->data); + iCalObject *obj = string_to_ical_object (obj_string); if (obj->pilot_status == real_record_status) res ++; + g_free (l->data); } - + g_list_free (uids); + return res; } @@ -236,20 +323,24 @@ cal_repo_get_object_id_list(PortableServer_Servant servant, CORBA_Environment *ev) { GnomeCalendar *gcal = gnomecal_from_servant (servant); - GList *l; + GList *l, *uids; GNOME_Calendar_Repository_String_Sequence *result; int counter; + + uids = cal_client_get_uids (gcal->calc, CALOBJ_TYPE_EVENT); result = GNOME_Calendar_Repository_String_Sequence__alloc(); - result->_length = g_list_length(gcal->cal->events); - result->_buffer = CORBA_sequence_CORBA_string_allocbuf(result->_length); + result->_length = g_list_length (uids); + result->_buffer = + CORBA_sequence_CORBA_string_allocbuf(result->_length); counter = 0; - for (l = gcal->cal->events ; l; l = l->next){ - iCalObject *obj = l->data; - result->_buffer[counter] = CORBA_string_dup(obj->uid); + for (l = uids; l; l = l->next){ + result->_buffer[counter] = CORBA_string_dup(l->data); counter++; + g_free (l->data); } + g_list_free (uids); return result; } @@ -258,28 +349,46 @@ static CORBA_char * cal_repo_get_updated_objects (PortableServer_Servant servant, CORBA_Environment *ev) { + /* FIX ME -- this might be wrong */ GnomeCalendar *gcal = gnomecal_from_servant (servant); - Calendar *dirty_cal; - GList *l; + /* Calendar *dirty_cal; DELETE */ + VObject *vcalobj, *vobj; + GList *l, *uids; CORBA_char *res; char *str; - dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); + /* dirty_cal = calendar_new ("Temporal",CALENDAR_INIT_NIL); DELETE */ + vcalobj = newVObject (VCCalProp); - for (l = gcal->cal->events; l; l = l->next){ - iCalObject *obj = l->data; + uids = cal_client_get_uids (gcal->calc, CALOBJ_TYPE_EVENT); + for (l = uids; l; l = l->next){ + char *obj_string = cal_client_get_object (gcal->calc, l->data); + iCalObject *obj = string_to_ical_object (obj_string); if (obj->pilot_status != ICAL_PILOT_SYNC_MOD) continue; - obj = ical_object_duplicate (l->data); - - calendar_add_object (dirty_cal, obj); + /* calendar_add_object (dirty_cal, obj); DELETE */ + vobj = ical_object_to_vobject (obj); + addVObjectProp (vcalobj, vobj); + g_free (l->data); } + g_list_free (uids); + +# if 0 + /* DELETE */ str = calendar_get_as_vcal_string (dirty_cal); res = CORBA_string_dup (str); free (str); /* calendar_get_as_vcal_string() uses writeMemVObject(), which uses realloc() */ calendar_destroy (dirty_cal); +# endif /* 0 */ + + str = writeMemVObject (NULL, NULL, vcalobj); + res = CORBA_string_dup (str); + free (str); /* calendar_get_as_vcal_string() uses writeMemVObject(), + which uses realloc() */ + cleanVObject (vcalobj); + cleanStrTbl (); return res; } @@ -288,9 +397,10 @@ static void cal_repo_done (PortableServer_Servant servant, CORBA_Environment *ev) { - GnomeCalendar *gcal = gnomecal_from_servant (servant); + /* GnomeCalendar *gcal = gnomecal_from_servant (servant); */ - calendar_save (gcal->cal, NULL); + /* calendar_save (gcal->cal, NULL); DELETE */ + /* FIX ME -- i dont know what to do here */ } static void @@ -305,7 +415,6 @@ init_calendar_repo_class (void) calendar_repository_epv.get_updated_objects = cal_repo_get_updated_objects; calendar_repository_epv.update_pilot_id = cal_repo_update_pilot_id; calendar_repository_epv.get_object_id_list = cal_repo_get_object_id_list; - calendar_repository_epv.done = cal_repo_done; calendar_repository_vepv.GNOME_Calendar_Repository_epv = @@ -337,7 +446,8 @@ gnome_calendar_create_corba_server (GnomeCalendar *calendar) POA_GNOME_Calendar_Repository__init ((PortableServer_Servant) calendar_servant, &ev); CORBA_free ( PortableServer_POA_activate_object (poa, calendar_servant, &ev)); - calendar->cal->corba_server = PortableServer_POA_servant_to_reference ( - poa, calendar_servant, &ev); + calendar->calc->corba_server = + PortableServer_POA_servant_to_reference (poa, calendar_servant, &ev); + CORBA_exception_free (&ev); } -- cgit v1.2.3