#include "e-cal-glue.h"
gboolean
e_cal_glue_ecal_get_changes (ECal* ecal,
const char* change_id,
GSList** newitems,
GSList** updated,
GSList** removed,
GError** error)
{
GList* changes = NULL;
GList* l;
ECalChange* ccc;
const char* uid = NULL;
GSList *added = NULL, *modified = NULL, *deleted = NULL;
if (!ecal)
return FALSE;
if (!e_cal_get_changes (ecal, change_id, &changes, error))
return FALSE;
if (!changes)
return FALSE;
for (l = changes; l; l = l->next) {
ccc = l->data;
switch (ccc->type) {
case E_CAL_CHANGE_ADDED:
added = g_slist_prepend (added, e_cal_component_clone (ccc->comp));
break;
case E_CAL_CHANGE_MODIFIED:
modified = g_slist_prepend (modified, e_cal_component_clone (ccc->comp));
break;
case E_CAL_CHANGE_DELETED:
e_cal_component_get_uid (ccc->comp, &uid);
deleted = g_slist_prepend (deleted, g_strdup (uid));
break;
}
}
e_cal_free_change_list (changes);
if (added)
*newitems = g_slist_reverse (added);
if (modified)
*updated = g_slist_reverse (modified);
if (deleted)
*removed = g_slist_reverse (deleted);
return TRUE;
}
syntax highlighted by Code2HTML, v. 0.9.1