Enhancement

- Implemented tri-state confirmation for done command.
This commit is contained in:
Paul Beckingham 2009-06-27 21:51:24 -04:00
parent 8d76eaca88
commit 3dcda73e0c

View file

@ -679,13 +679,21 @@ std::string handleDone ()
std::vector <Task> all = tasks; std::vector <Task> all = tasks;
context.filter.applySequence (tasks, context.sequence); context.filter.applySequence (tasks, context.sequence);
Permission permission;
if (context.sequence.size () > (size_t) context.config.get ("bulk", 2))
permission.bigSequence ();
bool nagged = false; bool nagged = false;
foreach (task, tasks) foreach (task, tasks)
{ {
if (task->getStatus () == Task::pending) if (task->getStatus () == Task::pending)
{ {
// Apply deltas. Task before (*task);
deltaDescription (*task);
// Apply other deltas.
if (deltaDescription (*task))
permission.bigChange ();
deltaTags (*task); deltaTags (*task);
deltaAttributes (*task); deltaAttributes (*task);
deltaSubstitutions (*task); deltaSubstitutions (*task);
@ -697,21 +705,29 @@ std::string handleDone ()
// Change status. // Change status.
task->setStatus (Task::completed); task->setStatus (Task::completed);
context.tdb.update (*task);
if (context.config.get ("echo.command", true)) if (taskDiff (before, *task))
out << "Completed " {
<< task->id std::string question = taskDifferences (before, *task) + "Are you sure?";
<< " '" if (permission.confirmed (question))
<< task->get ("description") {
<< "'" context.tdb.update (*task);
<< std::endl;
if (context.config.get ("echo.command", true))
out << "Completed "
<< task->id
<< " '"
<< task->get ("description")
<< "'"
<< std::endl;
++count;
}
}
updateRecurrenceMask (all, *task); updateRecurrenceMask (all, *task);
if (!nagged) if (!nagged)
nagged = nag (*task); nagged = nag (*task);
++count;
} }
else else
out << "Task " out << "Task "