From ca1c3593bf873dcd03a8974c0785b1f6ffdbd140 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Wed, 6 Dec 2000 20:28:10 +0000 Subject: Update so as not to conflict with calendar (next_changed_item): update to 2000-12-06 JP Rosevear * conduits/calendar/calendar-conduit.c (map_name): Update so as not to conflict with calendar (next_changed_item): update to use CalClientChange instead of CalObjChange (compute_status): ditto (pre_sync): ditto (for_each_modified): since we now have the cal component we can call local_record_from_comp directly * conduits/todo/todo-conduit.c: same as above * pcs/cal-backend.c: Remove much logging cruft (cal_backend_compute_changes): Calculate the changes based on the hashed database (cal_backend_get_changes): call cal_backend_compute_changes (cal_backend_compute_changes_foreach_key): hash callback for calculating deletions * pcs/cal-backend.h: update protype, remove logging cruft from object * pcs/cal.c (build_change_seq): dup the calobj rather than the uid now (Cal_get_changes): rename from Cal_get_changed_uids (cal_get_epv): reflect name change in epv * cal-util/cal-util.c (cal_obj_change_list_free): update assertion * cal-util/cal-util.h: CalObjChange now returns the entire ical component, update the change types. This should all go away shortly * idl/evolution-calendar.idl: getChangedUIds -> getChanges. CalObjChange now contains the calobj rather than the uid, update the change types * cal-client/cal-client.c (cal_client_get_changes): rename from cal_client_get_changed_uids to make idl and addressbook * cal-client/cal-client.h: Update prototype * cal-client/cal-client.c (build_change_list): Build a list of CalClientChange instead of CalObjChange * cal-client/cal-client-types.c (cal_client_change_list_free): Free a glist of CalClientChanges * cal-client/cal-client-types.h: New file. Declarations for CalClientChange. * cal-client/Makefile.am: Build new files svn path=/trunk/; revision=6822 --- calendar/conduits/todo/todo-conduit.c | 83 +++++++++++++++++------------------ 1 file changed, 41 insertions(+), 42 deletions(-) (limited to 'calendar/conduits/todo') diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c index 9eb0dfef61..15cb4286bb 100644 --- a/calendar/conduits/todo/todo-conduit.c +++ b/calendar/conduits/todo/todo-conduit.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -207,7 +208,7 @@ map_name (EToDoConduitContext *ctxt) { char *filename; - filename = g_strdup_printf ("%s/evolution/local/Calendar/pilot-map-%d.xml", g_get_home_dir (), ctxt->cfg->pilot_id); + filename = g_strdup_printf ("%s/evolution/local/Calendar/pilot-map-todo-%d.xml", g_get_home_dir (), ctxt->cfg->pilot_id); return filename; } @@ -215,13 +216,16 @@ map_name (EToDoConduitContext *ctxt) static GList * next_changed_item (EToDoConduitContext *ctxt, GList *changes) { - CalObjChange *coc; + CalClientChange *ccc; GList *l; for (l = changes; l != NULL; l = l->next) { - coc = l->data; + const char *uid; + + ccc = l->data; - if (g_hash_table_lookup (ctxt->changed_hash, coc->uid)) + cal_component_get_uid (ccc->comp, &uid); + if (g_hash_table_lookup (ctxt->changed_hash, uid)) return l; } @@ -231,27 +235,26 @@ next_changed_item (EToDoConduitContext *ctxt, GList *changes) static void compute_status (EToDoConduitContext *ctxt, EToDoLocalRecord *local, const char *uid) { - CalObjChange *coc; + CalClientChange *ccc; local->local.archived = FALSE; local->local.secret = FALSE; - coc = g_hash_table_lookup (ctxt->changed_hash, uid); + ccc = g_hash_table_lookup (ctxt->changed_hash, uid); - if (coc == NULL) { + if (ccc == NULL) { local->local.attr = GnomePilotRecordNothing; return; } - switch (coc->type) { - case CALOBJ_UPDATED: - if (e_pilot_map_lookup_pid (ctxt->map, coc->uid) > 0) - local->local.attr = GnomePilotRecordModified; - else - local->local.attr = GnomePilotRecordNew; + switch (ccc->type) { + case CAL_CLIENT_CHANGE_ADDED: + local->local.attr = GnomePilotRecordNew; + break; + case CAL_CLIENT_CHANGE_MODIFIED: + local->local.attr = GnomePilotRecordModified; break; - - case CALOBJ_REMOVED: + case CAL_CLIENT_CHANGE_DELETED: local->local.attr = GnomePilotRecordDeleted; break; } @@ -505,7 +508,7 @@ pre_sync (GnomePilotConduit *conduit, GList *l; int len; unsigned char *buf; - char *filename; + char *filename, *change_id; gint num_records, add_records = 0, mod_records = 0, del_records = 0; abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit); @@ -522,36 +525,36 @@ pre_sync (GnomePilotConduit *conduit, return -1; } - /* Get the local database */ - ctxt->uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_TODO); - /* Load the uid <--> pilot id map */ filename = map_name (ctxt); e_pilot_map_read (filename, &ctxt->map); g_free (filename); + /* Get the local database */ + ctxt->uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_TODO); + /* Count and hash the changes */ + change_id = g_strdup_printf ("pilot-sync-evolution-todo-%d", ctxt->cfg->pilot_id); + ctxt->changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_TODO, change_id); ctxt->changed_hash = g_hash_table_new (g_str_hash, g_str_equal); - ctxt->changed = cal_client_get_changed_uids (ctxt->client, - CALOBJ_TYPE_TODO, - ctxt->map->since + 1); for (l = ctxt->changed; l != NULL; l = l->next) { - CalObjChange *coc = l->data; - - if (!e_pilot_map_uid_is_archived (ctxt->map, coc->uid)) { + CalClientChange *ccc = l->data; + const char *uid; + + cal_component_get_uid (ccc->comp, &uid); + if (!e_pilot_map_uid_is_archived (ctxt->map, uid)) { - g_hash_table_insert (ctxt->changed_hash, coc->uid, coc); + g_hash_table_insert (ctxt->changed_hash, g_strdup (uid), ccc); - switch (coc->type) { - case CALOBJ_UPDATED: - if (e_pilot_map_lookup_pid (ctxt->map, coc->uid) > 0) - mod_records++; - else - add_records++; + switch (ccc->type) { + case CAL_CLIENT_CHANGE_ADDED: + add_records++; break; - - case CALOBJ_REMOVED: + case CAL_CLIENT_CHANGE_MODIFIED: + mod_records++; + break; + case CAL_CLIENT_CHANGE_DELETED: del_records++; break; } @@ -704,14 +707,12 @@ for_each_modified (GnomePilotConduitSyncAbs *conduit, iterator = next_changed_item (ctxt, iterator); if (iterator != NULL) { - CalObjChange *coc = NULL; - - coc = iterator->data; + CalClientChange *ccc = iterator->data; LOG ("iterating over %d records", g_hash_table_size (ctxt->changed_hash)); *local = g_new0 (EToDoLocalRecord, 1); - local_record_from_uid (*local, coc->uid, ctxt); + local_record_from_comp (*local, ccc->comp, ctxt); } else { LOG ("no events"); @@ -721,12 +722,10 @@ for_each_modified (GnomePilotConduitSyncAbs *conduit, count++; iterator = g_list_next (iterator); if (iterator && (iterator = next_changed_item (ctxt, iterator))) { - CalObjChange *coc = NULL; - - coc = iterator->data; + CalClientChange *ccc = iterator->data; *local = g_new0 (EToDoLocalRecord, 1); - local_record_from_uid (*local, coc->uid, ctxt); + local_record_from_comp (*local, ccc->comp, ctxt); } else { LOG ("for_each_modified ending"); -- cgit