aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/conduits
diff options
context:
space:
mode:
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");