aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-client/cal-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/cal-client/cal-client.c')
-rw-r--r--calendar/cal-client/cal-client.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c
index 1eca55a2d3..99dd96710b 100644
--- a/calendar/cal-client/cal-client.c
+++ b/calendar/cal-client/cal-client.c
@@ -25,6 +25,7 @@
#include <gtk/gtksignal.h>
#include <liboaf/liboaf.h>
+#include "cal-client-types.h"
#include "cal-client.h"
#include "cal-listener.h"
@@ -733,44 +734,44 @@ cal_client_get_uids (CalClient *client, CalObjType type)
return uids;
}
-/* Builds a GList of CalObjChange structures from the CORBA sequence */
+/* Builds a GList of CalClientChange structures from the CORBA sequence */
static GList *
build_change_list (GNOME_Evolution_Calendar_CalObjChangeSeq *seq)
{
- GList *list;
+ GList *list = NULL;
+ icalcomponent *icalcomp;
int i;
/* Create the list in reverse order */
- list = NULL;
for (i = 0; i < seq->_length; i++) {
GNOME_Evolution_Calendar_CalObjChange *corba_coc;
- CalObjChange *coc;
+ CalClientChange *ccc;
corba_coc = &seq->_buffer[i];
- coc = g_new (CalObjChange, 1);
+ ccc = g_new (CalClientChange, 1);
+
+ icalcomp = icalparser_parse_string (corba_coc->calobj);
+ if (!icalcomp)
+ continue;
- coc->uid = g_strdup (corba_coc->uid);
- coc->type = corba_coc->type;
+ ccc->comp = cal_component_new ();
+ if (!cal_component_set_icalcomponent (ccc->comp, icalcomp)) {
+ icalcomponent_free (icalcomp);
+ gtk_object_unref (GTK_OBJECT (ccc->comp));
+ continue;
+ }
+ ccc->type = corba_coc->type;
- list = g_list_prepend (list, coc);
+ list = g_list_prepend (list, ccc);
}
list = g_list_reverse (list);
+
return list;
}
-/**
- * cal_client_get_changed_uids:
- * @client: A calendar client.
- * @type: Bitmask with types of objects to return.
- *
- * Queries a calendar for a list of unique identifiers corresponding to calendar
- * objects whose type matches one of the types specified in the @type flags.
- *
- * Return value: A list of strings that are the sought UIDs.
- **/
GList *
-cal_client_get_changed_uids (CalClient *client, CalObjType type, time_t since)
+cal_client_get_changes (CalClient *client, CalObjType type, const char *change_id)
{
CalClientPrivate *priv;
CORBA_Environment ev;
@@ -787,9 +788,9 @@ cal_client_get_changed_uids (CalClient *client, CalObjType type, time_t since)
t = corba_obj_type (type);
CORBA_exception_init (&ev);
- seq = GNOME_Evolution_Calendar_Cal_getChangedUIds (priv->cal, t, since, &ev);
+ seq = GNOME_Evolution_Calendar_Cal_getChanges (priv->cal, t, change_id, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_changed_uids(): could not get the list of changes");
+ g_message ("cal_client_get_changes(): could not get the list of changes");
CORBA_exception_free (&ev);
return NULL;
}