diff --git a/src/Task.cpp b/src/Task.cpp index 884e7f23e..d53f8a540 100644 --- a/src/Task.cpp +++ b/src/Task.cpp @@ -1177,6 +1177,22 @@ void Task::getDependencies (std::vector & all) const all.clear (); split (all, get ("depends"), ','); } + +//////////////////////////////////////////////////////////////////////////////// +void Task::getDependencies (std::vector & all) const +{ + std::vector deps; + split (deps, get ("depends"), ','); + + all.clear (); + + for (auto& dep : deps) + { + Task task; + context.tdb2.get (dep, task); + all.push_back (task); + } +} #endif //////////////////////////////////////////////////////////////////////////////// diff --git a/src/Task.h b/src/Task.h index 47245b588..474049179 100644 --- a/src/Task.h +++ b/src/Task.h @@ -142,6 +142,7 @@ public: void removeDependency (const std::string&); void getDependencies (std::vector &) const; void getDependencies (std::vector &) const; + void getDependencies (std::vector &) const; void getUDAOrphans (std::vector &) const; diff --git a/src/feedback.cpp b/src/feedback.cpp index 213eb3b09..49f5a4556 100644 --- a/src/feedback.cpp +++ b/src/feedback.cpp @@ -44,6 +44,20 @@ extern Context context; static void countTasks (const std::vector &, const std::string&, int&, int&); +//////////////////////////////////////////////////////////////////////////////// +// Converts a vector of tasks to a human-readable string that represents the tasks. +std::string taskIdentifiers (const std::vector & tasks) +{ + std::vector identifiers; + for (auto task: tasks) + identifiers.push_back (task.identifier (true)); + + std::string result; + join (result, ", ", identifiers); + + return result; +} + //////////////////////////////////////////////////////////////////////////////// std::string taskDifferences (const Task& before, const Task& after) { @@ -72,13 +86,11 @@ std::string taskDifferences (const Task& before, const Task& after) { if (name == "depends") { - std::vector deps_after; + std::vector deps_after; after.getDependencies (deps_after); - std::string to; - join (to, ", ", deps_after); out << " - " - << format (STRING_FEEDBACK_DEP_SET, to) + << format (STRING_FEEDBACK_DEP_SET, taskIdentifiers (deps_after)) << "\n"; } else @@ -100,15 +112,13 @@ std::string taskDifferences (const Task& before, const Task& after) { if (name == "depends") { - std::vector deps_before; + std::vector deps_before; before.getDependencies (deps_before); - std::string from; - join (from, ", ", deps_before); + std::string from = taskIdentifiers (deps_before); - std::vector deps_after; + std::vector deps_after; after.getDependencies (deps_after); - std::string to; - join (to, ", ", deps_after); + std::string to = taskIdentifiers (deps_after); out << " - " << format (STRING_FEEDBACK_DEP_MOD, from, to) @@ -161,10 +171,9 @@ std::string taskInfoDifferences ( { if (name == "depends") { - std::vector deps_before; + std::vector deps_before; before.getDependencies (deps_before); - std::string from; - join (from, ", ", deps_before); + std::string from = taskIdentifiers (deps_before); out << format (STRING_FEEDBACK_DEP_DEL, from) << "\n"; @@ -191,10 +200,9 @@ std::string taskInfoDifferences ( { if (name == "depends") { - std::vector deps_after; + std::vector deps_after; after.getDependencies (deps_after); - std::string to; - join (to, ", ", deps_after); + std::string to = taskIdentifiers (deps_after); out << format (STRING_FEEDBACK_DEP_WAS_SET, to) << "\n"; @@ -225,15 +233,13 @@ std::string taskInfoDifferences ( { if (name == "depends") { - std::vector deps_before; + std::vector deps_before; before.getDependencies (deps_before); - std::string from; - join (from, ", ", deps_before); + std::string from = taskIdentifiers (deps_before); - std::vector deps_after; + std::vector deps_after; after.getDependencies (deps_after); - std::string to; - join (to, ", ", deps_after); + std::string to = taskIdentifiers (deps_after); out << format (STRING_FEEDBACK_DEP_WAS_MOD, from, to) << "\n";