aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/corba-cal.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/corba-cal.c')
-rw-r--r--calendar/corba-cal.c45
1 files changed, 26 insertions, 19 deletions
diff --git a/calendar/corba-cal.c b/calendar/corba-cal.c
index 49978a5bf1..ddeb5ccb45 100644
--- a/calendar/corba-cal.c
+++ b/calendar/corba-cal.c
@@ -198,33 +198,39 @@ cal_repo_get_objects (PortableServer_Servant servant,
CORBA_Environment *ev)
{
GnomeCalendar *gcal = gnomecal_from_servant (servant);
- Calendar *dirty_cal;
- GList *l;
char *str;
CORBA_char *res;
- int items_dbg=0;
- g_message("in cal_repo_get_objects");
-
- dirty_cal = calendar_new ("Temporal");
-
- for (l = gcal->cal->events; l; l = l->next){
- iCalObject *obj = l->data;
+ str = calendar_get_as_vcal_string (gcal->cal);
+ g_message("length of result is %d",strlen(str));
+ res = CORBA_string_dup (str);
+ free(str); /* ...get_as_vcal calls writeMemVObject, which uses realloc to
+ allocate this string */
- obj = ical_object_duplicate (l->data);
+ return res;
+}
- calendar_add_object (dirty_cal, obj);
+static GNOME_Calendar_Repository_String_Sequence*
+cal_repo_get_object_id_list(PortableServer_Servant servant,
+ CORBA_Environment *ev)
+{
+ GnomeCalendar *gcal = gnomecal_from_servant (servant);
+ GList *l;
+ GNOME_Calendar_Repository_String_Sequence *result;
+ int counter;
+
+ result = GNOME_Calendar_Repository_String_Sequence__alloc();
+ result->_length = g_list_length(gcal->cal->events);
+ result->_buffer = CORBA_sequence_CORBA_string_allocbuf(result->_length);
- items_dbg++;
+ counter = 0;
+ for (l = gcal->cal->events ; l; l = l->next){
+ iCalObject *obj = l->data;
+ result->_buffer[counter] = CORBA_string_dup(obj->uid);
+ counter++;
}
- str = calendar_get_as_vcal_string (dirty_cal);
- res = CORBA_string_dup (str);
- /* g_free (str); glib with memcheck enabled says this is already freed */
- calendar_destroy (dirty_cal);
- g_message("added %d items to return value",items_dbg);
-
- return res;
+ return result;
}
static CORBA_char *
@@ -277,6 +283,7 @@ init_calendar_repo_class (void)
calendar_repository_epv.get_objects = cal_repo_get_objects;
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;