aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/conduits
diff options
context:
space:
mode:
authorJP Rosevear <jpr@helixcode.com>2000-12-07 04:28:10 +0800
committerJP Rosevear <jpr@src.gnome.org>2000-12-07 04:28:10 +0800
commitca1c3593bf873dcd03a8974c0785b1f6ffdbd140 (patch)
tree8570e5bd560558f7441c3fb9a789c57067ee7358 /calendar/conduits
parent8fc0d9aacb574d9bb0392bd94abd2e99ff7eae4a (diff)
downloadgsoc2013-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.c85
-rw-r--r--calendar/conduits/todo/todo-conduit.c83
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");