From 344b1aba581d2ed765fe0f2c45044a3dae7a4915 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 20 Jun 2009 13:55:11 -0400 Subject: [PATCH] Enhancement - nag - Improved nagging with respect to multiple tasks. --- src/command.cpp | 8 ++++++-- src/main.h | 2 +- src/recur.cpp | 15 +++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index c70f217c8..abf6221af 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -568,6 +568,7 @@ std::string handleStart () // Filter sequence. context.filter.applySequence (tasks, context.sequence); + bool nagged = false; foreach (task, tasks) { if (! task->has ("start")) @@ -585,7 +586,8 @@ std::string handleStart () << task->get ("description") << "'" << std::endl; - nag (*task); + if (!nagged) + nagged = nag (*task); } else { @@ -664,6 +666,7 @@ std::string handleDone () std::vector all = tasks; context.filter.applySequence (tasks, context.sequence); + bool nagged = false; foreach (task, tasks) { if (task->getStatus () == Task::pending) @@ -692,7 +695,8 @@ std::string handleDone () << std::endl; updateRecurrenceMask (all, *task); - nag (*task); + if (!nagged) + nagged = nag (*task); ++count; } diff --git a/src/main.h b/src/main.h index 308b47f17..4e6acc338 100644 --- a/src/main.h +++ b/src/main.h @@ -53,7 +53,7 @@ Date getNextRecurrence (Date&, std::string&); bool generateDueDates (Task&, std::vector &); void updateRecurrenceMask (std::vector &, Task&); int getDueState (const std::string&); -void nag (Task&); +bool nag (Task&); // command.cpp std::string handleAdd (); diff --git a/src/recur.cpp b/src/recur.cpp index 174cb59b5..2ca793807 100644 --- a/src/recur.cpp +++ b/src/recur.cpp @@ -397,7 +397,7 @@ int getDueState (const std::string& due) } //////////////////////////////////////////////////////////////////////////////// -void nag (Task& task) +bool nag (Task& task) { std::string nagMessage = context.config.get ("nag", ""); if (nagMessage != "") @@ -448,15 +448,18 @@ void nag (Task& task) } // General form is "if there are no more deserving tasks", suppress the nag. - if (isOverdue ) return; - if (pri == 'H' && !overdue ) return; - if (pri == 'M' && !overdue && !high ) return; - if (pri == 'L' && !overdue && !high && !medium ) return; - if (pri == ' ' && !overdue && !high && !medium && !low) return; + if (isOverdue ) return false; + if (pri == 'H' && !overdue ) return false; + if (pri == 'M' && !overdue && !high ) return false; + if (pri == 'L' && !overdue && !high && !medium ) return false; + if (pri == ' ' && !overdue && !high && !medium && !low) return false; // All the excuses are made, all that remains is to nag the user. context.message (nagMessage); + return true; } + + return false; } ////////////////////////////////////////////////////////////////////////////////