diff --git a/AUTHORS b/AUTHORS index f8f96fc81..4a9718225 100644 --- a/AUTHORS +++ b/AUTHORS @@ -30,6 +30,7 @@ The following submitted code, packages or analysis, and deserve special thanks: Kevin Owens Mick Koch Kathryn Andersen + Alexander Schremmer Thanks to the following, who submitted detailed bug reports and excellent suggestions: @@ -59,6 +60,5 @@ suggestions: Seneca Cunningham Dirk Deimeke Michelle Crane - Alexander Schremmer Elizabeth Maxson diff --git a/ChangeLog b/ChangeLog index 432cc6731..cd7a8af86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,8 +8,9 @@ as relative to the current date/time. + Added feature #189, that records the start and stop times as an annotation for a task. - + Added features #244, #272, #274 and #275, which support import and - export of YAML 1.1. YAML is now the default export format for task. + + Added features #244, #272, #273, #274, #275 and #279, which support + 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 samples of all the defined colors and color rules from your .taskrc and theme. diff --git a/src/Task.cpp b/src/Task.cpp index ca61e5285..82765b813 100644 --- a/src/Task.cpp +++ b/src/Task.cpp @@ -647,7 +647,7 @@ void Task::validate () const if (has ("wait")) { 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."); } diff --git a/src/recur.cpp b/src/recur.cpp index 198f03a1f..e8d06eafe 100644 --- a/src/recur.cpp +++ b/src/recur.cpp @@ -95,18 +95,32 @@ void handleRecurrence () { if (mask.length () <= i) { - mask += '-'; changed = true; Task rec (*t); // Clone the parent. rec.set ("uuid", uuid ()); // New UUID. - rec.setStatus (Task::pending); // Shiny. rec.set ("parent", t->get ("uuid")); // Remember mom. char dueDate[16]; sprintf (dueDate, "%u", (unsigned int) d->toEpoch ()); 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]; sprintf (indexMask, "%u", (unsigned int) i); rec.set ("imask", indexMask); // Store index into mask.