diff options
author | JP Rosevear <jpr@helixcode.com> | 2000-12-07 04:28:10 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2000-12-07 04:28:10 +0800 |
commit | ca1c3593bf873dcd03a8974c0785b1f6ffdbd140 (patch) | |
tree | 8570e5bd560558f7441c3fb9a789c57067ee7358 /calendar/conduits | |
parent | 8fc0d9aacb574d9bb0392bd94abd2e99ff7eae4a (diff) | |
download | gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar.gz gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar.bz2 gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar.lz gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar.xz gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.tar.zst gsoc2013-evolution-ca1c3593bf873dcd03a8974c0785b1f6ffdbd140.zip |
Update so as not to conflict with calendar (next_changed_item): update to
2000-12-06 JP Rosevear <jpr@helixcode.com>
* 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
Diffstat (limited to 'calendar/conduits')
-rw-r--r-- | calendar/conduits/calendar/calendar-conduit.c | 85 | ||||
-rw-r--r-- | calendar/conduits/todo/todo-conduit.c | 83 |
2 files changed, 84 insertions, 84 deletions
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c index af514c9ada..2ded9bec6d 100644 --- a/calendar/conduits/calendar/calendar-conduit.c +++ b/calendar/conduits/calendar/calendar-conduit.c @@ -33,6 +33,7 @@ #include <liboaf/liboaf.h> #include <bonobo.h> #include <gnome-xml/parser.h> +#include <cal-client/cal-client-types.h> #include <cal-client/cal-client.h> #include <cal-util/timeutil.h> #include <pi-source.h> @@ -203,7 +204,7 @@ map_name (ECalConduitContext *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-calendar-%d.xml", g_get_home_dir (), ctxt->cfg->pilot_id); return filename; } @@ -276,13 +277,16 @@ nth_weekday (int pos, icalrecurrencetype_weekday weekday) static GList * next_changed_item (ECalConduitContext *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; } @@ -292,27 +296,28 @@ next_changed_item (ECalConduitContext *ctxt, GList *changes) static void compute_status (ECalConduitContext *ctxt, ECalLocalRecord *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 CALOBJ_REMOVED: + case CAL_CLIENT_CHANGE_MODIFIED: + local->local.attr = GnomePilotRecordModified; + break; + + case CAL_CLIENT_CHANGE_DELETED: local->local.attr = GnomePilotRecordDeleted; break; } @@ -695,7 +700,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); @@ -712,36 +717,36 @@ pre_sync (GnomePilotConduit *conduit, return -1; } - /* Get the local database */ - ctxt->uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_EVENT); - /* Load the uid <--> pilot id mapping */ 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_EVENT); + /* Find the added, modified and deleted items */ + change_id = g_strdup_printf ("pilot-sync-evolution-calendar-%d", ctxt->cfg->pilot_id); + ctxt->changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_EVENT, 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_EVENT, - 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)) { - - g_hash_table_insert (ctxt->changed_hash, coc->uid, coc); + CalClientChange *ccc = l->data; + const char *uid; + + cal_component_get_uid (ccc->comp, &uid); + if (!e_pilot_map_uid_is_archived (ctxt->map, uid)) { - switch (coc->type) { - case CALOBJ_UPDATED: - if (e_pilot_map_lookup_pid (ctxt->map, coc->uid) > 0) - mod_records++; - else - add_records++; + g_hash_table_insert (ctxt->changed_hash, g_strdup (uid), ccc); + + switch (ccc->type) { + case CAL_CLIENT_CHANGE_ADDED: + add_records++; + break; + case CAL_CLIENT_CHANGE_MODIFIED: + mod_records++; break; - - case CALOBJ_REMOVED: + case CAL_CLIENT_CHANGE_DELETED: del_records++; break; } @@ -893,14 +898,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 (ECalLocalRecord, 1); - local_record_from_uid (*local, coc->uid, ctxt); + local_record_from_comp (*local, ccc->comp, ctxt); } else { LOG ("no events"); @@ -910,12 +913,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 (ECalLocalRecord, 1); - local_record_from_uid (*local, coc->uid, ctxt); + local_record_from_comp (*local, ccc->comp, ctxt); } else { LOG ("for_each_modified ending"); 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 <liboaf/liboaf.h> #include <bonobo.h> #include <gnome-xml/parser.h> +#include <cal-client/cal-client-types.h> #include <cal-client/cal-client.h> #include <cal-util/timeutil.h> #include <pi-source.h> @@ -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"); |