This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Tasks in Tomboy

New Tasks Design (5 Dec 2007)

Features to implement for Tomboy 0.8.0 (before GNOME 2.20 UI Change/String Announce Period, July 9, 2007)

Schedule

1. Iteration 0: May 29 - June 1

2. Iteration 1: June 2 - June 8

3. Iteration 2: July 6 - July 13

4. July 15 - July 21

5. July 22 - 27

6. July 30

Architecture/Design

1. How does a user create a new task?

Does one of the following:

Note: After pressing <Enter> on a line that's a task, the next line will also be created as a task. Pressing <Enter> or <Backspace> on a blank task line will remove the blank task.

2. Where are tasks stored?

Eventually, it might be nice to just consume tasks directly from some other system (such as Evolution). But, rather than require all Tomboy users to be forced into an external dependency for tasks, we'll store tasks in files.

When a new task is created, a task file will be created here:

    ~/.tomboy/Tasks/{GUID}.task

For example, if a user types the following line and presses <Enter> . . .

    todo: Write a letter to mom

. . . the "todo:" will be converted to a checkbox in the Note, and a new file will be created with a unique ID of, say, "8be2bffc-dd5e-4c9b-bc77-85e199ea9289". So the following file will exist:

    ~/.tomboy/Tasks/8be2bffc-dd5e-4c9b-bc77-85e199ea9289.task

The note will now be serialized with the following line for the task:

    <task url="task://tomboy/8be2bffc-dd5e-4c9b-bc77-85e199ea9289" completed="false">Write a letter to mom</task>

Other details about the note are stored inside the 8be2bffc-dd5e-4c9b-bc77-85e199ea9289.task file.

3. Scaling the ~/.tomboy/Tasks/ directory

Q. How well will Tomboy behave after running with years of tasks? Won't the ~/.tomboy/Tasks/ directory fill up with too many tasks?

One thing we could do to address this problem would be to move completed tasks that are stale (older than 30 days) into a ~/.tomboy/Tasks/Archive directory. We'll have to add something into the UI that would let users view/search/etc stale tasks, but the main core of Tomboy shouldn't have to always load/parse them. Instead, it just deals with the tasks in ~/.tomboy/Tasks/*.task.

4. *.task File Format

Dates should use the following format string: yyyy-MM-ddTHH:mm:ss.fffffffzzz. Example: 2007-03-26T14:13:28.8596090-06:00

4.1. Required elements:

4.2. Optional elements:

4.3. Sample File

<?xml version="1.0" encoding="utf-8"?>
<task version="0.1">
  <summary>Write letter to mom</summary>
  <create-date>2007-03-14T15:25:50.5256930-06:00</create-date>
  <last-change-date>2007-03-26T14:13:28.8596090-06:00</last-change-date>
  <priority>normal</priority>
  <text xml:space="preserve"><details>I started writing the letter but then realized I don't have mom's address since she just moved.

I'm on the phone with mom.  Here's her new address:

1234 Cherry Tree Lane
Funville, CA  99999
  </details></text>
</task>

5. Task (class)

5.1. Methods:

5.2. Properties:

6. TaskManager (class)

Just as NoteManager deals with managing and providing access to all the Notes in Tomboy, TaskManager will manage and provide access to Tasks.

6.1. Methods:

6.2. Properties:

6.3. Events:

Possible Future Features (to be worked on after Tomboy 0.8.0 & GNOME 2.20 releases)

Comments


2024-10-23 10:58