summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/taskmanager.cc28
-rw-r--r--src/taskmanager.h4
2 files changed, 23 insertions, 9 deletions
diff --git a/src/taskmanager.cc b/src/taskmanager.cc
index f757694..b1fa34e 100644
--- a/src/taskmanager.cc
+++ b/src/taskmanager.cc
@@ -64,6 +64,10 @@ TaskManager::TaskManager() {
TaskManager::~TaskManager() {
}
+task_t TaskManager::task(taskid_t t) {
+ return tree.getData(t);
+}
+
taskid_t TaskManager::createId() {
return idCount++;
}
@@ -82,13 +86,11 @@ TaskIdList TaskManager::moveTask(taskid_t id, taskid_t to)
try {
affectedTasks = tree.move(id, to);
- goto finish;
}
catch (std::exception& e) {
throw e;
}
- finish:
return affectedTasks;
}
@@ -98,13 +100,11 @@ TaskIdList TaskManager::deleteTask(taskid_t id)
try {
affectedTasks = tree.remove(id);
- goto finish;
}
catch(std::exception& e) {
throw e;
}
- finish:
return affectedTasks;
}
@@ -115,13 +115,11 @@ TaskIdList TaskManager::updateTask(taskid_t id, task_t t)
try {
affectedTasks = tree.updateData(id, t);
- goto finish;
}
catch (std::exception& e) {
throw e;
}
- finish:
return affectedTasks;
}
@@ -133,14 +131,26 @@ TaskIdList TaskManager::addTask(task_t t, taskid_t parentid)
try {
affectedTasks = tree.insertAsChild(parentid, id, t);
- goto finish;
}
catch (std::exception& e) {
throw e;
}
- finish:
- printf("Returning %d nodes\n", affectedTasks.size());
+ return affectedTasks;
+}
+
+TaskIdList TaskManager::subTasks(taskid_t t)
+ throw (std::exception) {
+
+ TaskIdList affectedTasks;
+
+ try {
+ affectedTasks = tree.bfs(t);
+ }
+ catch (std::exception& e) {
+ throw e;
+ }
+
return affectedTasks;
}
diff --git a/src/taskmanager.h b/src/taskmanager.h
index 47c6c10..d8fd751 100644
--- a/src/taskmanager.h
+++ b/src/taskmanager.h
@@ -47,8 +47,12 @@ public:
TaskIdList deleteTask(taskid_t id) throw (std::exception);
TaskIdList moveTask(taskid_t id, taskid_t newParent) throw (std::exception);
+ TaskIdList subTasks(taskid_t) throw (std::exception);
+
TaskTree tree;
+ task_t task(taskid_t t);
+
private:
// TaskIdList ancestorList(taskid_t task);
taskid_t createId();