diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/ChangeLog | 16 | ||||
-rw-r--r-- | calendar/conduits/todo/todo-conduit.c | 165 | ||||
-rw-r--r-- | calendar/pcs/cal-backend-file.c | 21 |
3 files changed, 135 insertions, 67 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index e2fd1e037d..c825ccc5d7 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,19 @@ +2000-09-12 JP Rosevear <jpr@helixcode.com> + + * pcs/cal-backend-file.c (cal_backend_file_load): Use g_int_* + for now + (cal_backend_file_create): ditto + + * conduits/todo/todo-conduit.c (local_record_from_compobject): Make + this actually fill in the todo record. + (find_record_in_repository): Add debug stuff + (iterate_specific): Use the already exisiting utility function + + * pcs/cal-backend-file.c (cal_backend_file_update_pilot_id): correct + the status and id types. g_strdup the uid since this is not a + constified return + (cal_backend_file_get_uid_by_pilot_id): correct the id type + 2000-09-12 Ettore Perazzoli <ettore@helixcode.com> * gui/Makefile.am: Remove `ui.xml' stuff. diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c index 7c492dafe7..4ff862ceb6 100644 --- a/calendar/conduits/todo/todo-conduit.c +++ b/calendar/conduits/todo/todo-conduit.c @@ -240,7 +240,7 @@ local_record_from_comp_uid (EToDoLocalRecord *local, -static char *gnome_pilot_status_to_string (gint status) +static const char *gnome_pilot_status_to_string (gint status) { switch(status) { case GnomePilotRecordPending: return "GnomePilotRecordPending"; @@ -262,19 +262,68 @@ void local_record_from_compobject(EToDoLocalRecord *local, CalComponent *comp) { + int *priority; + struct icaltimetype *completed; + CalComponentText summary; + GSList *d_list = NULL; + CalComponentText *description; + CalComponentDateTime due; + time_t due_time; + CalComponentClassification classif; unsigned long *pilot_id; unsigned long *pilot_status; - CalComponentClassification classif; - - g_return_if_fail (local!=NULL); - g_return_if_fail (comp!=NULL); + + LOG ("local_record_from_compobject\n"); + + g_return_if_fail (local != NULL); + g_return_if_fail (comp != NULL); local->comp = comp; - local->todo = NULL; /* ??? */ + + local->todo = g_new0 (struct ToDo,1); + + /* STOP: don't replace these with g_strdup, since free_ToDo + uses free to deallocate */ + cal_component_get_summary (comp, &summary); + if (summary.value) + local->todo->description = strdup ((char *) summary.value); + + cal_component_get_description_list (comp, &d_list); + if (d_list) { + description = (CalComponentText *) d_list->data; + if (description && description->value) + local->todo->note = strdup (description->value); + else + local->todo->note = NULL; + } else { + local->todo->note = NULL; + } + + cal_component_get_due (comp, &due); + if (due.value) { + due_time = icaltime_as_timet (*due.value); + + local->todo->due = *localtime (&due_time); + local->todo->indefinite = 0; + } else { + local->todo->indefinite = 1; + } + + cal_component_get_completed (comp, &completed); + if (completed) { + local->todo->complete = 1; + cal_component_free_icaltimetype (completed); + } + + cal_component_get_priority (comp, &priority); + if (priority) { + local->todo->priority = *priority; + cal_component_free_priority (priority); + } + cal_component_get_pilot_id (comp, &pilot_id); cal_component_get_pilot_status (comp, &pilot_status); - /* Records without a pilot_id are new */ if (!pilot_id) { local->local.attr = GnomePilotRecordNew; @@ -327,10 +376,10 @@ find_record_in_repository(GnomePilotConduitStandardAbs *conduit, local_record_from_compobject (loc, obj); return loc; } + LOG ("Pilot ID found, but comp for uid %s was not\n", uid); } INFO ("Object did not exist"); - LOG ("not found\n"); return NULL; } @@ -612,14 +661,17 @@ match_record (GnomePilotConduitStandardAbs *conduit, g_return_val_if_fail (local != NULL, -1); g_return_val_if_fail (remote != NULL, -1); - *local = find_record_in_repository(conduit,remote,ctxt); + *local = find_record_in_repository (conduit, remote, ctxt); if (*local == NULL) LOG (" match_record: not found.\n"); else - LOG (" match_record: found, %s\n", print_local (*local)); + LOG (" match_record: found, %s\n", + print_local (*local)); - if (*local==NULL) return -1; + if (*local == NULL) + return -1; + return 0; } @@ -638,7 +690,6 @@ free_match (GnomePilotConduitStandardAbs *conduit, g_return_val_if_fail (local != NULL, -1); g_return_val_if_fail (*local != NULL, -1); - gtk_object_unref (GTK_OBJECT ((*local)->comp)); g_free (*local); *local = NULL; @@ -686,13 +737,14 @@ store_remote (GnomePilotConduitStandardAbs *conduit, PilotRecord *remote, EToDoConduitContext *ctxt) { + g_return_val_if_fail (remote != NULL, -1); + LOG ("store_remote: copying pilot record %s to desktop\n", print_remote (remote)); - g_return_val_if_fail(remote!=NULL,-1); remote->attr = GnomePilotRecordNothing; - return update_record(conduit,remote,ctxt); + return update_record (conduit, remote, ctxt); } static gint @@ -715,46 +767,50 @@ iterate (GnomePilotConduitStandardAbs *conduit, static GSList *events,*iterator; static int hest; - g_return_val_if_fail(local!=NULL,-1); + g_return_val_if_fail (local != NULL, -1); - if(*local==NULL) { - /* LOG ("beginning iteration"); */ + if (*local == NULL) { + LOG ("beginning iteration"); - events = get_calendar_objects(conduit,NULL,ctxt); + events = get_calendar_objects (conduit, NULL, ctxt); hest = 0; - if(events!=NULL) { - /* LOG ("iterating over %d records", g_slist_length (events)); */ - *local = g_new0(EToDoLocalRecord,1); + if (events != NULL) { + LOG ("iterating over %d records", g_slist_length (events)); + *local = g_new0 (EToDoLocalRecord, 1); - local_record_from_comp_uid(*local,(gchar*)events->data,ctxt); + local_record_from_comp_uid (*local, + (gchar*)events->data, + ctxt); iterator = events; } else { - /* LOG ("no events"); */ + LOG ("no events"); (*local) = NULL; } } else { - /* LOG ("continuing iteration\n"); */ + LOG ("continuing iteration\n"); hest++; - if(g_slist_next(iterator)==NULL) { + if (g_slist_next (iterator) == NULL) { GSList *l; - /* LOG ("ending"); */ + LOG ("ending"); /** free stuff allocated for iteration */ g_free((*local)); - /* LOG ("iterated over %d records", hest) */; - for(l=events;l;l=l->next) - g_free(l->data); + LOG ("iterated over %d records", hest); + for (l=events; l; l = l->next) + g_free (l->data); - g_slist_free(events); + g_slist_free (events); /* ends iteration */ (*local) = NULL; return 0; } else { - iterator = g_slist_next(iterator); - local_record_from_comp_uid(*local,(gchar*)(iterator->data),ctxt); + iterator = g_slist_next (iterator); + local_record_from_comp_uid(*local, + (gchar*)(iterator->data), + ctxt); } } return 1; @@ -772,39 +828,29 @@ iterate_specific (GnomePilotConduitStandardAbs *conduit, /* debugging */ { - 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; - default: tmp = g_strdup_printf("0x%x",flag); break; - } + const char *tmp = gnome_pilot_status_to_string (flag); LOG ("\niterate_specific: (flag = %s)... ", tmp); - g_free(tmp); } - g_return_val_if_fail(local!=NULL,-1); + 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)) { - if((*local)==NULL) break; - if(archived && ((*local)->local.archived==archived)) break; - if(((*local)->local.attr == flag)) break; + (LocalRecord**)local)) { + if ((*local) == NULL) + break; + if (archived && ((*local)->local.archived == archived)) + break; + if (((*local)->local.attr == flag)) + break; } - if ((*local)) { + if ((*local)) LOG (" found %s\n", print_local (*local)); - } else { + else LOG (" no more found.\n"); - } - return (*local)==NULL?0:1; + return (*local) == NULL ? 0 : 1; } static gint @@ -827,12 +873,13 @@ set_status (GnomePilotConduitStandardAbs *conduit, { gboolean success; - LOG ("set_status: %s status is now '%s'\n", - print_local (local), - gnome_pilot_status_to_string (status)); + LOG ("set_status: %s status is now '%s' for %s\n", + print_local (local), + gnome_pilot_status_to_string (status), + cal_component_get_as_string (local->comp)); - g_return_val_if_fail(local!=NULL,-1); - g_assert(local->comp!=NULL); + g_return_val_if_fail (local != NULL, -1); + g_assert (local->comp != NULL); local->local.attr = status; if (status == GnomePilotRecordDeleted) { diff --git a/calendar/pcs/cal-backend-file.c b/calendar/pcs/cal-backend-file.c index 5b03150001..078415fa02 100644 --- a/calendar/pcs/cal-backend-file.c +++ b/calendar/pcs/cal-backend-file.c @@ -312,6 +312,7 @@ lookup_component (CalBackendFile *cbfile, const char *uid) CalComponent *comp; priv = cbfile->priv; + comp = g_hash_table_lookup (priv->comp_uid_hash, uid); return comp; @@ -472,6 +473,7 @@ add_component (CalBackendFile *cbfile, CalComponent *comp, gboolean add_to_tople CalBackendFilePrivate *priv; GList **list; const char *uid; + gchar *key; unsigned long *pilot_id; priv = cbfile->priv; @@ -499,13 +501,14 @@ add_component (CalBackendFile *cbfile, CalComponent *comp, gboolean add_to_tople */ check_dup_uid (cbfile, comp); cal_component_get_uid (comp, &uid); - g_hash_table_insert (priv->comp_uid_hash, (char *) uid, comp); + key = g_strdup (uid); + g_hash_table_insert (priv->comp_uid_hash, key, comp); /* Update the pilot list, if there is a pilot id */ cal_component_get_pilot_id (comp, &pilot_id); if (pilot_id) g_hash_table_insert (priv->comp_pilot_hash, - pilot_id, (char *)uid); + pilot_id, (char *)key); *list = g_list_prepend (*list, comp); @@ -679,7 +682,8 @@ cal_backend_file_load (CalBackend *backend, GnomeVFSURI *uri) priv->icalcomp = icalcomp; priv->comp_uid_hash = g_hash_table_new (g_str_hash, g_str_equal); - priv->comp_pilot_hash = g_hash_table_new (cbf_pilot_hash, cbf_pilot_equal); +/* priv->comp_pilot_hash = g_hash_table_new (cbf_pilot_hash, cbf_pilot_equal); */ + priv->comp_pilot_hash = g_hash_table_new (g_int_hash, g_int_equal); scan_vcalendar (cbfile); /* Clean up */ @@ -725,7 +729,8 @@ cal_backend_file_create (CalBackend *backend, GnomeVFSURI *uri) g_assert (priv->comp_uid_hash == NULL); priv->comp_uid_hash = g_hash_table_new (g_str_hash, g_str_equal); - priv->comp_pilot_hash = g_hash_table_new (cbf_pilot_hash, cbf_pilot_equal); +/* priv->comp_pilot_hash = g_hash_table_new (cbf_pilot_hash, cbf_pilot_equal); */ + priv->comp_pilot_hash = g_hash_table_new (g_int_hash, g_int_equal); /* Done */ @@ -1109,7 +1114,7 @@ cal_backend_file_remove_object (CalBackend *backend, const char *uid) /* Get_uid_by_pilot_id handler for the file backend */ static char * -cal_backend_file_get_uid_by_pilot_id (CalBackend *backend, unsigned long int pilot_id) +cal_backend_file_get_uid_by_pilot_id (CalBackend *backend, unsigned long pilot_id) { CalBackendFile *cbfile; CalBackendFilePrivate *priv; @@ -1120,15 +1125,15 @@ cal_backend_file_get_uid_by_pilot_id (CalBackend *backend, unsigned long int pil uid = g_hash_table_lookup (priv->comp_pilot_hash, &pilot_id); - return uid; + return g_strdup (uid); } /* Update_pilot_id handler for the file backend */ static void cal_backend_file_update_pilot_id (CalBackend *backend, const char *uid, - unsigned long int pilot_id, - unsigned long int pilot_status) + unsigned long pilot_id, + unsigned long pilot_status) { CalBackendFile *cbfile; CalBackendFilePrivate *priv; |