wiki:ToDoListBlueprint

Current features:

Adding todo lists, adding bugs to todo lists.

Planned:

Add Context Menu Item to view/edit todo list configuration.

Configuration options per todo list:

Add Sync Services - External Calendar Client, Web Services (Remember the Milk, Google Calendar etc.) - Store username and password for these services. Associate E-mail Address with todo list. Export options: Location of todo if exported as .ics, Prompt for recipients if multiple users are to be added to the todo (this could do with Address Book integration).

Server Configuration:

Add custom WebDAV servers for inclusion in todo configuration. Setup default config. Unique names for each server.

Export Configuration:

Export opens a new dialog that the user can select services from (one at a time). For instance a user might have a todo associated with Google Calendar, Remember the Milk and External Clients. The user would select one of these to export to and if the recipient box is checked then open a new window that lets them add the recipient details (Potential for Address Book integration).

Time Scale:

1 -2 weeks? - Could potentially take the remainder of my GSoC time.

Current State as of 22 August

Working features:

  • Syncing to Remember the Milk works as expected and the requests are timed correctly.
  • Todo Lists themselves work as expected and contain a QDateEdit/Checkbox for dates/completed status respectively.
  • Framework is mostly in place for new services to be added.

Known Bugs:

  • If a user updates an item twice then only the last change will be noticed and uploaded. This needs to be fixed.
  • QProgressDialog doesn't work as there is a lot of logic that needs to be tidied before it can be put in place correctly.
  • There appears to be a chance of failure due to bugs being deleted from a tracker once Entomologist syncs. This needs to be corrected by either storing the full bug details or automatically removing bugs that have been deleted for the user.

Future Enhancements:

  • A new scheme for storing task details needs to be implement if multi-service sync is ever going to work. I propose 2 new Database Tables that store the Internal Service ID, The ID assigned by the service for the task/list and a pointer to the original internal id for the task/list. This could then be queried on sync for the correct ID for a given task/list. This would reduce the dependence on checking names and replace it with a truly unique identify.
  • Google tasks/generic WebDAV - Any other misc. service that appears popular enough to integrate.
  • Refactor code to reduce some of the duplication/wasteful searching that currently exists - I would not even consider merging the code as is because of the less than stellar quality in places.