diff options
Diffstat (limited to 'calendar/conduits/todo')
-rw-r--r-- | calendar/conduits/todo/todo-conduit.c | 505 | ||||
-rw-r--r-- | calendar/conduits/todo/todo-conduit.h | 6 |
2 files changed, 304 insertions, 207 deletions
diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c index 387a79936d..2a3c643a3d 100644 --- a/calendar/conduits/todo/todo-conduit.c +++ b/calendar/conduits/todo/todo-conduit.c @@ -9,7 +9,7 @@ #include <errno.h> #include <cal-client/cal-client.h> -#include <cal-util/calobj.h> +// #include <cal-util/calobj.h> #include <cal-util/timeutil.h> #include <pi-source.h> #include <pi-socket.h> @@ -21,6 +21,7 @@ #include <gpilotd/gnome-pilot-conduit.h> #include <gpilotd/gnome-pilot-conduit-standard-abs.h> #include <todo-conduit.h> +#include <libical/src/libical/icaltypes.h> #include <bonobo.h> @@ -28,7 +29,7 @@ GnomePilotConduit * conduit_get_gpilot_conduit (guint32); void conduit_destroy_gpilot_conduit (GnomePilotConduit*); -void local_record_from_icalobject (GCalLocalRecord *local, iCalObject *obj); +void local_record_from_icalobject (GCalLocalRecord *local, CalComponent *obj); #define CONDUIT_VERSION "0.8.11" #ifdef G_LOG_DOMAIN @@ -61,28 +62,42 @@ void local_record_from_icalobject (GCalLocalRecord *local, iCalObject *obj); /* debug spew DELETE ME */ -static char *print_ical (iCalObject *obj) +static char *print_ical (CalComponent *obj + /*iCalObject *obj*/) { static char buff[ 4096 ]; + int indefinite; + CalComponentDateTime dtend; + int priority; + struct icaltimetype *complete; + CalComponentText summary; + GSList *comments; + CalComponentText *first_comment = NULL; + if (obj == NULL) { sprintf (buff, "[NULL]"); return buff; } - if (obj->summary) { - sprintf (buff, "[%d %ld %d %ld '%s' '%s']", - /* indefinite */ (obj->dtend == 0), - /* due */ obj->dtend, - /* priority */ obj->priority, - /* complete */ (unsigned long int) obj->completed, /* obj->percent ? */ - /* description */ obj->summary, - /* note */ /* obj->desc ? obj->desc : "" */ obj->comment ? obj->comment : "" - ); - return buff; - } - - sprintf (buff, "[???]"); + indefinite = 0; /* FIX ME how do i get this */ + cal_component_get_dtend (obj, &dtend); + priority = 1; /* FIX ME how do i get this */ + cal_component_get_completed (obj, &complete); + + cal_component_get_summary (obj, &summary); + cal_component_get_comment_list (obj, &comments); + if (comments) + first_comment = (CalComponentText *) comments->data; + + sprintf (buff, "[%d %d-%d-%d %d %d-%d-%d '%s' '%s']", + indefinite, + dtend.value->year, dtend.value->month, dtend.value->day, + priority, + complete->year, complete->month, complete->day, + summary.value, /* description */ + first_comment ? first_comment->value : "" /* note */ + ); return buff; } @@ -187,16 +202,16 @@ gnome_calendar_load_cb (GtkWidget *cal_client, { CalClient *client = CAL_CLIENT (cal_client); - printf (" entering gnome_calendar_load_cb, tried=%d\n", + LOG (" todo-conduit entering gnome_calendar_load_cb, tried=%d\n", ctxt->calendar_load_tried); if (status == CAL_CLIENT_LOAD_SUCCESS) { ctxt->calendar_load_success = TRUE; - printf (" success\n"); + LOG (" success\n"); gtk_main_quit (); /* end the sub event loop */ } else { if (ctxt->calendar_load_tried) { - printf (" load and create of calendar failed\n"); + LOG (" load and create of calendar failed\n"); gtk_main_quit (); /* end the sub event loop */ return; } @@ -227,7 +242,7 @@ start_calendar_server (GnomePilotConduitStandardAbs *conduit, gtk_signal_connect (GTK_OBJECT (ctxt->client), "cal_loaded", gnome_calendar_load_cb, ctxt); - printf (" calling cal_client_load_calendar\n"); + LOG (" calling cal_client_load_calendar\n"); cal_client_load_calendar (ctxt->client, ctxt->calendar_file); /* run a sub event loop to turn cal-client's async load @@ -261,7 +276,7 @@ get_calendar_objects(GnomePilotConduitStandardAbs *conduit, uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_TODO); - // printf ("got %d todo entries from cal server\n", g_list_length (uids)); + // LOG ("got %d todo entries from cal server\n", g_list_length (uids)); if (status != NULL) (*status) = TRUE; @@ -284,7 +299,8 @@ local_record_from_ical_uid (GCalLocalRecord *local, char *uid, GCalConduitContext *ctxt) { - iCalObject *obj; + //iCalObject *obj; + CalComponent *obj; CalClientGetStatus status; g_assert(local!=NULL); @@ -292,7 +308,7 @@ local_record_from_ical_uid (GCalLocalRecord *local, status = cal_client_get_object (ctxt->client, uid, &obj); if (status == CAL_CLIENT_GET_SUCCESS) - local_record_from_icalobject(local,obj); + local_record_from_icalobject (local, obj); else INFO ("Object did not exist"); } @@ -320,48 +336,45 @@ static char *gnome_pilot_status_to_string (gint status) void local_record_from_icalobject(GCalLocalRecord *local, - iCalObject *obj) + CalComponent *obj) { + //iCalPilotState pilot_status; + unsigned long int pilot_status; + g_return_if_fail(local!=NULL); g_return_if_fail(obj!=NULL); local->ical = obj; local->todo = NULL; /* ??? */ - local->local.ID = local->ical->pilot_id; -/* - LOG ("local->Id = %ld [%s], status = %d", - local->local.ID,obj->summary,local->ical->pilot_status); -*/ - switch(local->ical->pilot_status) { + cal_component_get_pilot_id (obj, &local->local.ID); + cal_component_get_pilot_status (obj, &pilot_status); + + switch (pilot_status) { case ICAL_PILOT_SYNC_NONE: - local->local.attr = GnomePilotRecordNothing; + local->local.attr = GnomePilotRecordNothing; break; case ICAL_PILOT_SYNC_MOD: - local->local.attr = GnomePilotRecordModified; + local->local.attr = GnomePilotRecordModified; break; case ICAL_PILOT_SYNC_DEL: local->local.attr = GnomePilotRecordDeleted; break; default: - g_warning ("unhandled pilot status: %d\n", local->ical->pilot_status); + g_warning ("unhandled pilot status: %ld\n", pilot_status); } /* Records without a pilot_id are new */ - if(local->local.ID == 0) - local->local.attr = GnomePilotRecordNew; - - local->local.secret = 0; - if(obj->class!=NULL) - if(strcmp(obj->class,"PRIVATE")==0) - local->local.secret = 1; - - local->local.archived = 0; + if(local->local.ID == 0) + local->local.attr = GnomePilotRecordNew; /* - printf ("local_record_from_icalobject: %s %s\n", - print_ical (obj), - gnome_pilot_status_to_string (local->local.attr)); + local->local.secret = 0; + if (obj->class!=NULL) + if (strcmp(obj->class,"PRIVATE")==0) + local->local.secret = 1; */ + + local->local.archived = 0; } @@ -377,12 +390,14 @@ find_record_in_repository(GnomePilotConduitStandardAbs *conduit, char *uid = NULL; GCalLocalRecord *loc; CalClientGetStatus status; - iCalObject *obj; + //iCalObject *obj; + CalComponent *obj; g_return_val_if_fail(conduit!=NULL,NULL); g_return_val_if_fail(remote!=NULL,NULL); - printf ("find_record_in_repository: remote=%s... ", print_remote (remote)); + LOG ("find_record_in_repository: remote=%s... ", + print_remote (remote)); // LOG ("requesting %ld", remote->ID); @@ -391,8 +406,7 @@ find_record_in_repository(GnomePilotConduitStandardAbs *conduit, if (status == CAL_CLIENT_GET_SUCCESS) { status = cal_client_get_object (ctxt->client, uid, &obj); if (status == CAL_CLIENT_GET_SUCCESS) { - printf ("found %s\n", print_ical (obj)); - // LOG ("Found"); + LOG ("found %s\n", print_ical (obj)); loc = g_new0(GCalLocalRecord,1); /* memory allocated in new_from_string is freed in free_match */ local_record_from_icalobject (loc, obj); @@ -401,7 +415,7 @@ find_record_in_repository(GnomePilotConduitStandardAbs *conduit, } // INFO ("Object did not exist"); - printf ("not found\n"); + LOG ("not found\n"); return NULL; } @@ -411,15 +425,16 @@ find_record_in_repository(GnomePilotConduitStandardAbs *conduit, */ static void update_calendar_entry_in_repository(GnomePilotConduitStandardAbs *conduit, - iCalObject *obj, + CalComponent *obj, GCalConduitContext *ctxt) { gboolean success; - g_return_if_fail(conduit!=NULL); - g_return_if_fail(obj!=NULL); + g_return_if_fail (conduit!=NULL); + g_return_if_fail (obj!=NULL); - printf (" update_calendar_entry_in_repository saving %s to desktop\n", + LOG (" update_calendar_entry_in_repository " + "saving %s to desktop\n", print_ical (obj)); success = cal_client_update_object (ctxt->client, obj); @@ -430,83 +445,106 @@ update_calendar_entry_in_repository(GnomePilotConduitStandardAbs *conduit, } -static iCalObject * -ical_from_remote_record(GnomePilotConduitStandardAbs *conduit, - PilotRecord *remote, - iCalObject *in_obj) +static CalComponent * +ical_from_remote_record (GnomePilotConduitStandardAbs *conduit, + PilotRecord *remote, + CalComponent *in_obj) { - iCalObject *obj; + CalComponent *obj; struct ToDo todo; - time_t now; + struct icaltimetype now = icaltimetype_from_timet (time (NULL), FALSE); - now = time (NULL); + CalComponentText summary = {NULL, NULL}; + CalComponentText comment = {NULL, NULL}; + GSList *comment_list; g_return_val_if_fail(remote!=NULL,NULL); memset (&todo, 0, sizeof (struct ToDo)); unpack_ToDo (&todo, remote->record, remote->length); - printf (" ical_from_remote_record: merging remote %s into local %s\n", + LOG (" ical_from_remote_record: " + "merging remote %s into local %s\n", print_remote (remote), print_ical (in_obj)); - if (in_obj == NULL) - obj = ical_new (todo.note ? todo.note : "", - g_get_user_name (), - todo.description ? todo.description : ""); - else + if (in_obj == NULL) { + obj = cal_component_new (); + } else { obj = in_obj; - - if (todo.note) { - /* FIX ME which one ? */ - /* - g_free (obj->desc); - obj->desc = g_strdup (todo.note); - */ - - g_free (obj->comment); - obj->comment = g_strdup (todo.note); - } - if (todo.description) { - g_free (obj->summary); - obj->summary = g_strdup (todo.description); } - obj->type = ICAL_TODO; - obj->new = TRUE; - obj->created = now; - obj->last_mod = now; - obj->priority = 0; - obj->transp = 0; - obj->related = NULL; - obj->pilot_id = remote->ID; - obj->pilot_status = ICAL_PILOT_SYNC_NONE; + summary.value = todo.description; + cal_component_set_summary (obj, &summary); + + comment.value = todo.note; + comment_list = g_slist_append (NULL, &comment); + cal_component_set_comment_list (obj, comment_list); + g_slist_free (comment_list); + + cal_component_set_new_vtype (obj, CAL_COMPONENT_TODO); + // obj->new = TRUE; + // obj->created = now; + cal_component_set_created (obj, &now); + // obj->last_mod = now; + cal_component_set_last_modified (obj, &now); + /* obj->priority = 0; */ + // obj->transp = 0; + cal_component_set_transparency (obj, + /*CalComponentTransparency transp*/ + CAL_COMPONENT_TRANSP_NONE); + /* obj->related = NULL; */ + + // cal_component_set_pilot_status (obj, ICAL_PILOT_SYNC_NONE); /* * Begin and end */ - - obj->dtend = mktime (& todo.due); + // obj->dtend = mktime (& todo.due); + { + /* do i need to malloc these? FIX ME */ + struct icaltimetype dtend_ictt; + CalComponentDateTime dtend; + + dtend_ictt = icaltimetype_from_timet (mktime (& todo.due), FALSE); + dtend.value = &dtend_ictt; + dtend.tzid = NULL; + cal_component_set_dtend (obj, &dtend); + } + + + /* if (todo.complete) { - obj->completed = now-5; /* FIX ME */ + obj->completed = now-5; obj->percent = 100; } + */ + { + cal_component_set_completed (obj, &now); + } /* - printf ("[%s] from pilot, complete=%d/%ld\n", + LOG ("[%s] from pilot, complete=%d/%ld\n", todo.description, todo.complete, obj->completed); */ - obj->priority = todo.priority; - g_free (obj->class); - + //obj->priority = todo.priority; FIX ME + + /* g_free (obj->class); */ + + /* if (remote->attr & dlpRecAttrSecret) obj->class = g_strdup ("PRIVATE"); else obj->class = g_strdup ("PUBLIC"); + */ + if (remote->attr & dlpRecAttrSecret) + cal_component_set_classification (obj, CAL_COMPONENT_CLASS_PRIVATE); + else + cal_component_set_classification (obj, CAL_COMPONENT_CLASS_PUBLIC); free_ToDo(&todo); @@ -530,63 +568,89 @@ update_record (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, GCalConduitContext *ctxt) { - iCalObject *obj; + //iCalObject *obj; + CalComponent *obj; struct ToDo todo; CalClientGetStatus status; char *uid; + CalComponentText summary = {NULL, NULL}; + CalComponentText comment = {NULL, NULL}; + GSList *comment_list; + g_return_val_if_fail(remote!=NULL,-1); memset (&todo, 0, sizeof (struct ToDo)); unpack_ToDo (&todo, remote->record, remote->length); - // LOG ("requesting %ld [%s]", remote->ID, todo.description); - printf (" cal_client_get_uid_by_pilot_id... "); + LOG (" cal_client_get_uid_by_pilot_id... "); - status = cal_client_get_uid_by_pilot_id (ctxt->client, remote->ID, &uid); + status = cal_client_get_uid_by_pilot_id (ctxt->client, + remote->ID, &uid); if (status == CAL_CLIENT_GET_SUCCESS) { - printf (" succeeded with '%s'\n", uid); - printf (" cal_client_get_object... "); + LOG (" succeeded with '%s'\n", uid); + LOG (" cal_client_get_object... "); status = cal_client_get_object (ctxt->client, uid, &obj); } if (status != CAL_CLIENT_GET_SUCCESS) { - time_t now = time (NULL); - - printf ("failed, making a new one.\n"); - - obj = ical_new (todo.note ? todo.note : "", - g_get_user_name (), - todo.description ? todo.description : ""); - - obj->type = ICAL_TODO; - obj->new = TRUE; - obj->created = now; - obj->last_mod = now; - obj->priority = 0; - obj->transp = 0; - obj->related = NULL; - obj->pilot_id = remote->ID; - obj->pilot_status = ICAL_PILOT_SYNC_NONE; + struct icaltimetype now = icaltimetype_from_timet (time (NULL), FALSE); + + LOG ("failed, making a new one.\n"); + + obj = cal_component_new (); + + summary.value = todo.description; + cal_component_set_summary (obj, &summary); + + comment.value = todo.note; + comment_list = g_slist_append (NULL, &comment); + cal_component_set_comment_list (obj, comment_list); + g_slist_free (comment_list); + + // obj->type = ICAL_TODO; + cal_component_set_new_vtype (obj, CAL_COMPONENT_TODO); + // obj->new = TRUE; + // obj->created = now; + cal_component_set_created (obj, &now); + // obj->last_mod = now; + cal_component_set_last_modified (obj, &now); + // obj->priority = 0; + // obj->transp = 0; + cal_component_set_transparency (obj, + /*CalComponentTransparency transp*/ + CAL_COMPONENT_TRANSP_NONE); + // obj->related = NULL; + //obj->pilot_id = remote->ID; + //obj->pilot_status = ICAL_PILOT_SYNC_NONE; + cal_component_set_pilot_id (obj, remote->ID); + cal_component_set_pilot_status (obj, ICAL_PILOT_SYNC_NONE); } else { - iCalObject *new_obj; + CalComponent *new_obj; - printf ("succeeded %s\n", print_ical (obj)); + LOG ("succeeded %s\n", print_ical (obj)); new_obj = ical_from_remote_record (conduit, remote, obj); obj = new_obj; } /* update record on server */ - - update_calendar_entry_in_repository (conduit, obj, ctxt); - cal_client_update_pilot_id (ctxt->client, obj->uid, obj->pilot_id, - ICAL_PILOT_SYNC_NONE); + { + const char *uid; + unsigned long pilot_id; + + cal_component_get_uid (obj, &uid); + cal_component_get_pilot_id (obj, &pilot_id); + + update_calendar_entry_in_repository (conduit, obj, ctxt); + cal_client_update_pilot_id (ctxt->client, (char *) uid, pilot_id, + ICAL_PILOT_SYNC_NONE); + } /* * Shutdown */ - ical_object_unref (obj); + //ical_object_unref (obj); free_ToDo(&todo); return 0; @@ -602,15 +666,14 @@ check_for_slow_setting (GnomePilotConduit *c, GCalConduitContext *ctxt) entry_number = g_list_length (uids); - // LOG (_("Calendar holds %ld todo entries"), entry_number); /* If the local base is empty, do a slow sync */ if (entry_number == 0) { GnomePilotConduitStandard *conduit; - printf (" doing slow sync\n"); + LOG (" doing slow sync\n"); conduit = GNOME_PILOT_CONDUIT_STANDARD (c); gnome_pilot_conduit_standard_set_slow (conduit); } else { - printf (" doing fast sync\n"); + LOG (" doing fast sync\n"); } } @@ -634,8 +697,9 @@ pre_sync (GnomePilotConduit *c, conduit = GNOME_PILOT_CONDUIT_STANDARD_ABS(c); - printf ("---------------------------------------------------------------------\n"); - printf ("pre_sync: GnomeCal Conduit v.%s", CONDUIT_VERSION); + LOG ("---------------------------------------------------------\n"); + LOG ("pre_sync: ToDo Conduit v.%s", CONDUIT_VERSION); + g_message ("ToDo Conduit v.%s", CONDUIT_VERSION); ctxt->client = NULL; @@ -698,7 +762,8 @@ match_record (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, GCalConduitContext *ctxt) { - printf ("match_record: looking for local copy of %s\n", print_remote (remote)); + LOG ("match_record: looking for local copy of %s\n", + print_remote (remote)); g_return_val_if_fail (local != NULL, -1); g_return_val_if_fail (remote != NULL, -1); @@ -706,9 +771,9 @@ match_record (GnomePilotConduitStandardAbs *conduit, *local = find_record_in_repository(conduit,remote,ctxt); if (*local == NULL) - printf (" match_record: not found.\n"); + LOG (" match_record: not found.\n"); else - printf (" match_record: found, %s\n", print_local (*local)); + LOG (" match_record: found, %s\n", print_local (*local)); if (*local==NULL) return -1; return 0; @@ -724,15 +789,14 @@ free_match (GnomePilotConduitStandardAbs *conduit, GCalLocalRecord **local, GCalConduitContext *ctxt) { - // LOG ("entering free_match"); - printf ("free_match: %s\n", print_local (*local)); + LOG ("free_match: %s\n", print_local (*local)); - g_return_val_if_fail(local!=NULL,-1); - g_return_val_if_fail(*local!=NULL,-1); + g_return_val_if_fail (local!=NULL, -1); + g_return_val_if_fail (*local!=NULL, -1); + + // ical_object_unref (GCAL_LOCALRECORD(*local)->ical); + g_free (*local); - ical_object_unref (GCAL_LOCALRECORD(*local)->ical); - g_free(*local); - *local = NULL; return 0; } @@ -745,8 +809,7 @@ archive_local (GnomePilotConduitStandardAbs *conduit, GCalLocalRecord *local, GCalConduitContext *ctxt) { - // LOG ("entering archive_local"); - printf ("archive_local: doing nothing with %s\n", print_local (local)); + LOG ("archive_local: doing nothing with %s\n", print_local (local)); g_return_val_if_fail(local!=NULL,-1); @@ -762,8 +825,8 @@ archive_remote (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, GCalConduitContext *ctxt) { - // LOG ("entering archive_remote"); - printf ("archive_remote: doing nothing with %s\n", print_local (local)); + LOG ("archive_remote: doing nothing with %s\n", + print_local (local)); //g_return_val_if_fail(remote!=NULL,-1); //g_return_val_if_fail(local!=NULL,-1); @@ -779,14 +842,7 @@ store_remote (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, GCalConduitContext *ctxt) { - struct ToDo todo; /* for debugging */ - memset (&todo, 0, sizeof (struct ToDo)); /* for debugging */ - unpack_ToDo (&todo, remote->record, remote->length); /* for debugging */ - - - // LOG ("entering store_remote"); - - printf ("store_remote: copying pilot record %s to desktop\n", + LOG ("store_remote: copying pilot record %s to desktop\n", print_remote (remote)); g_return_val_if_fail(remote!=NULL,-1); @@ -800,7 +856,7 @@ clear_status_archive_local (GnomePilotConduitStandardAbs *conduit, GCalLocalRecord *local, GCalConduitContext *ctxt) { - printf ("clear_status_archive_local: doing nothing\n"); + LOG ("clear_status_archive_local: doing nothing\n"); g_return_val_if_fail(local!=NULL,-1); @@ -834,7 +890,7 @@ iterate (GnomePilotConduitStandardAbs *conduit, (*local) = NULL; } } else { - /* printf ("continuing iteration\n"); */ + /* LOG ("continuing iteration\n"); */ hest++; if(g_slist_next(iterator)==NULL) { GSList *l; @@ -874,29 +930,34 @@ iterate_specific (GnomePilotConduitStandardAbs *conduit, { gchar *tmp; switch (flag) { - case GnomePilotRecordNothing: tmp = g_strdup("RecordNothing"); break; - case GnomePilotRecordModified: tmp = g_strdup("RecordModified"); break; - case GnomePilotRecordDeleted: tmp = g_strdup("RecordDeleted"); break; - case GnomePilotRecordNew: tmp = g_strdup("RecordNew"); break; + case GnomePilotRecordNothing: + tmp = g_strdup("RecordNothing"); break; + case GnomePilotRecordModified: + tmp = g_strdup("RecordModified"); break; + case GnomePilotRecordDeleted: + tmp = g_strdup("RecordDeleted"); break; + case GnomePilotRecordNew: + tmp = g_strdup("RecordNew"); break; default: tmp = g_strdup_printf("0x%x",flag); break; } - printf ("\niterate_specific: (flag = %s)... ", tmp); + LOG ("\niterate_specific: (flag = %s)... ", tmp); g_free(tmp); } g_return_val_if_fail(local!=NULL,-1); /* iterate until a record meets the criteria */ - while(gnome_pilot_conduit_standard_abs_iterate(conduit,(LocalRecord**)local)) { + while (gnome_pilot_conduit_standard_abs_iterate (conduit, + (LocalRecord**)local)) { if((*local)==NULL) break; if(archived && ((*local)->local.archived==archived)) break; if(((*local)->local.attr == flag)) break; } if ((*local)) { - printf (" found %s\n", print_local (*local)); + LOG (" found %s\n", print_local (*local)); } else { - printf (" no more found.\n"); + LOG (" no more found.\n"); } return (*local)==NULL?0:1; @@ -906,7 +967,7 @@ static gint purge (GnomePilotConduitStandardAbs *conduit, GCalConduitContext *ctxt) { - printf ("purge: doing nothing\n"); + LOG ("purge: doing nothing\n"); /* HEST, gem posterne her */ @@ -922,14 +983,12 @@ set_status (GnomePilotConduitStandardAbs *conduit, { gboolean success; iCalPilotState new_state; - // LOG ("entering set_status(status=%d)",status); - printf ("set_status: %s status is now '%s'\n", + LOG ("set_status: %s status is now '%s'\n", print_local (local), gnome_pilot_status_to_string (status)); g_return_val_if_fail(local!=NULL,-1); - g_assert(local->ical!=NULL); local->local.attr = status; @@ -947,12 +1006,19 @@ set_status (GnomePilotConduitStandardAbs *conduit, } if (status == GnomePilotRecordDeleted) { - success = cal_client_remove_object (ctxt->client, local->ical->uid); + const char *uid; + cal_component_get_uid (local->ical, &uid); + success = cal_client_remove_object (ctxt->client, uid); } else { + const char *uid; + unsigned long pilot_id; + + cal_component_get_uid (local->ical, &uid); + cal_component_get_pilot_id (local->ical, &pilot_id); + success = cal_client_update_object (ctxt->client, local->ical); - cal_client_update_pilot_id (ctxt->client, local->ical->uid, - local->local.ID, - new_state); + cal_client_update_pilot_id (ctxt->client, (char *) uid, + pilot_id, new_state); } if (! success) { @@ -968,9 +1034,7 @@ set_archived (GnomePilotConduitStandardAbs *conduit, gint archived, GCalConduitContext *ctxt) { - // LOG ("entering set_archived"); - - printf ("set_archived: %s archived flag is now '%d'\n", + LOG ("set_archived: %s archived flag is now '%d'\n", print_local (local), archived); g_return_val_if_fail(local!=NULL,-1); @@ -990,22 +1054,25 @@ set_pilot_id (GnomePilotConduitStandardAbs *conduit, guint32 ID, GCalConduitContext *ctxt) { - // LOG ("entering set_pilot_id(id=%d)",ID); + const char *uid; + unsigned long int pilot_status; - printf ("set_pilot_id: %s pilot ID is now '%d'\n", + LOG ("set_pilot_id: %s pilot ID is now '%d'\n", print_local (local), ID); - g_return_val_if_fail(local!=NULL,-1); g_assert(local->ical!=NULL); local->local.ID = ID; - local->ical->pilot_id = ID; + cal_component_set_pilot_id (local->ical, ID); + + cal_component_get_uid (local->ical, &uid); + cal_component_get_pilot_status (local->ical, &pilot_status); cal_client_update_pilot_id (ctxt->client, - local->ical->uid, + (char *) uid, local->local.ID, - local->ical->pilot_status); + pilot_status); return 0; } @@ -1017,8 +1084,13 @@ transmit (GnomePilotConduitStandardAbs *conduit, GCalConduitContext *ctxt) { PilotRecord *p; + /* priority; FIX ME */ + struct icaltimetype *completed; + CalComponentText summary; + GSList *comment_list = NULL; + CalComponentText *comment; - printf ("transmit: encoding local %s\n", print_local (local)); + LOG ("transmit: encoding local %s\n", print_local (local)); g_return_val_if_fail(local!=NULL,-1); g_return_val_if_fail(remote!=NULL,-1); @@ -1033,23 +1105,46 @@ transmit (GnomePilotConduitStandardAbs *conduit, local->todo = g_new0(struct ToDo,1); - local->todo->indefinite = (local->ical->dtend == 0); - local->todo->due = *localtime (&local->ical->dtend); - local->todo->priority = local->ical->priority; + { + CalComponentDateTime dtend; + time_t dtend_time_t; + + cal_component_get_dtend (local->ical, &dtend); + dtend_time_t = time_from_icaltimetype (*dtend.value); + + local->todo->due = *localtime (&dtend_time_t); + local->todo->indefinite = (dtend.value->year == 0); + } - if (local->ical->completed > 0) + //local->todo->priority = local->ical->priority; + local->todo->priority = 1; /* FIX ME */ + + cal_component_get_completed (local->ical, &completed); + if (completed->year > 0) local->todo->complete = 1; /* FIX ME */ /* STOP: don't replace these with g_strdup, since free_ToDo uses free to deallocte */ + + cal_component_get_summary (local->ical, &summary); local->todo->description = - local->ical->summary==NULL?NULL:strdup(local->ical->summary); - local->todo->note = - local->ical->comment==NULL?NULL:strdup(local->ical->comment); - //local->ical->desc==NULL?NULL:strdup(local->ical->desc); + //local->ical->summary == NULL ? NULL : strdup (summary.value); + strdup ((char *) summary.value); + + + cal_component_get_comment_list (local->ical, &comment_list); + if (comment_list) { + comment = (CalComponentText *) comment_list->data; + if (comment && comment->value) + local->todo->note = strdup (comment->value); + else + local->todo->note = NULL; + } else { + local->todo->note = NULL; + } /* - printf ("transmitting todo to pilot [%s] complete=%d/%ld\n", + LOG ("transmitting todo to pilot [%s] complete=%d/%ld\n", local->ical->summary==NULL?"NULL":local->ical->summary, local->todo->complete, local->ical->completed); */ @@ -1069,19 +1164,19 @@ free_transmit (GnomePilotConduitStandardAbs *conduit, PilotRecord **remote, GCalConduitContext *ctxt) { - // LOG ("entering free_transmit"); - printf ("free_transmit: freeing %s\n", + LOG ("free_transmit: freeing %s\n", print_local (local)); g_return_val_if_fail(local!=NULL,-1); g_return_val_if_fail(remote!=NULL,-1); - // free_ToDo(local->todo); + /* free_ToDo(local->todo); */ /* FIX ME is this needed? */ g_free((*remote)->record); *remote = NULL; return 0; } + static gint compare (GnomePilotConduitStandardAbs *conduit, GCalLocalRecord *local, @@ -1093,10 +1188,9 @@ compare (GnomePilotConduitStandardAbs *conduit, int err; int retval; - printf ("compare: local=%s remote=%s...\n", + LOG ("compare: local=%s remote=%s...\n", print_local (local), print_remote (remote)); - g_return_val_if_fail (local!=NULL,-1); g_return_val_if_fail (remote!=NULL,-1); @@ -1105,22 +1199,23 @@ compare (GnomePilotConduitStandardAbs *conduit, retval = 0; if (remote->length == remoteOfLocal->length) { - if (memcmp(remoteOfLocal->record,remote->record,remote->length)!=0) { - printf (" compare failed on contents\n"); + if (memcmp (remoteOfLocal->record, + remote->record, remote->length)!=0) { + LOG (" compare failed on contents\n"); retval = 1; } } else { - printf(" compare failed on length\n"); + LOG(" compare failed on length\n"); retval = 1; } if (retval == 0) { - printf (" match.\n"); + LOG (" match.\n"); } else { /* debug spew */ - printf (" local:%s\n", print_remote (remoteOfLocal)); - printf (" remote:%s\n", print_remote (remote)); + LOG (" local:%s\n", print_remote (remoteOfLocal)); + LOG (" remote:%s\n", print_remote (remote)); } free_transmit(conduit,local,&remoteOfLocal,ctxt); @@ -1134,7 +1229,7 @@ compare_backup (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, GCalConduitContext *ctxt) { - printf ("compare_backup: doing nothing\n"); + LOG ("compare_backup: doing nothing\n"); g_return_val_if_fail(local!=NULL,-1); g_return_val_if_fail(remote!=NULL,-1); @@ -1153,7 +1248,7 @@ delete_all (GnomePilotConduitStandardAbs *conduit, events = get_calendar_objects(conduit,&error,ctxt); - printf ("delete_all: deleting all objects from desktop\n"); + LOG ("delete_all: deleting all objects from desktop\n"); if (error == FALSE) return -1; for (it=events; it; it = g_slist_next (it)) { @@ -1187,7 +1282,7 @@ conduit_get_gpilot_conduit (guint32 pilotId) GCalConduitCfg *cfg; GCalConduitContext *ctxt; - printf ("in todo's conduit_get_gpilot_conduit\n"); + LOG ("in todo's conduit_get_gpilot_conduit\n"); /* we need to find wombat with oaf, so make sure oaf is initialized here. once the desktop is converted diff --git a/calendar/conduits/todo/todo-conduit.h b/calendar/conduits/todo/todo-conduit.h index 7ffc1bd5d3..f01b52173d 100644 --- a/calendar/conduits/todo/todo-conduit.h +++ b/calendar/conduits/todo/todo-conduit.h @@ -34,8 +34,10 @@ struct _GCalLocalRecord { */ LocalRecord local; /* The corresponding iCal object, as found by GnomeCal. */ - iCalObject *ical; - /* pilot-link todo structure, used for implementing Transmit. */ + //iCalObject *ical; + CalComponent *ical; + + /* pilot-link todo structure, used for implementing Transmit. */ struct ToDo *todo; }; #define GCAL_LOCALRECORD(s) ((GCalLocalRecord*)(s)) |