Merge branch '1.9.3' of tasktools.org:task into 1.9.3

This commit is contained in:
Paul Beckingham
2010-10-23 15:03:16 -04:00
4 changed files with 21 additions and 6 deletions

View File

@@ -30,6 +30,7 @@ The following submitted code, packages or analysis, and deserve special thanks:
Kevin Owens Kevin Owens
Mick Koch Mick Koch
Kathryn Andersen Kathryn Andersen
Alexander Schremmer
Thanks to the following, who submitted detailed bug reports and excellent Thanks to the following, who submitted detailed bug reports and excellent
suggestions: suggestions:
@@ -59,6 +60,5 @@ suggestions:
Seneca Cunningham Seneca Cunningham
Dirk Deimeke Dirk Deimeke
Michelle Crane Michelle Crane
Alexander Schremmer
Elizabeth Maxson Elizabeth Maxson

View File

@@ -8,8 +8,9 @@
as relative to the current date/time. as relative to the current date/time.
+ Added feature #189, that records the start and stop times as an + Added feature #189, that records the start and stop times as an
annotation for a task. annotation for a task.
+ Added features #244, #272, #274 and #275, which support import and + Added features #244, #272, #273, #274, #275 and #279, which support
export of YAML 1.1. YAML is now the default export format for task. import and export of YAML 1.1. YAML is now the default export format
for task.
+ Added feature #391, now the 'task color legend' command will show + Added feature #391, now the 'task color legend' command will show
samples of all the defined colors and color rules from your .taskrc samples of all the defined colors and color rules from your .taskrc
and theme. and theme.

View File

@@ -647,7 +647,7 @@ void Task::validate () const
if (has ("wait")) if (has ("wait"))
{ {
Date wait (::atoi (get ("wait").c_str ())); Date wait (::atoi (get ("wait").c_str ()));
if (wait > due) if (wait < due)
throw std::string ("A 'wait' date must be after a 'due' date."); throw std::string ("A 'wait' date must be after a 'due' date.");
} }

View File

@@ -95,18 +95,32 @@ void handleRecurrence ()
{ {
if (mask.length () <= i) if (mask.length () <= i)
{ {
mask += '-';
changed = true; changed = true;
Task rec (*t); // Clone the parent. Task rec (*t); // Clone the parent.
rec.set ("uuid", uuid ()); // New UUID. rec.set ("uuid", uuid ()); // New UUID.
rec.setStatus (Task::pending); // Shiny.
rec.set ("parent", t->get ("uuid")); // Remember mom. rec.set ("parent", t->get ("uuid")); // Remember mom.
char dueDate[16]; char dueDate[16];
sprintf (dueDate, "%u", (unsigned int) d->toEpoch ()); sprintf (dueDate, "%u", (unsigned int) d->toEpoch ());
rec.set ("due", dueDate); // Store generated due date. rec.set ("due", dueDate); // Store generated due date.
if (t->get ("wait").size())
{
Date old_wait (atoi (t->get ("wait").c_str ()));
Date old_due (atoi (t->get ("due").c_str ()));
Date due (*d);
sprintf (dueDate, "%u", (unsigned int) (due + (old_wait - old_due)).toEpoch ());
rec.set ("wait", dueDate);
rec.setStatus (Task::waiting);
mask += 'W';
}
else
{
mask += '-';
rec.setStatus (Task::pending);
}
char indexMask[12]; char indexMask[12];
sprintf (indexMask, "%u", (unsigned int) i); sprintf (indexMask, "%u", (unsigned int) i);
rec.set ("imask", indexMask); // Store index into mask. rec.set ("imask", indexMask); // Store index into mask.