summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2013-01-17 13:47:56 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2013-01-17 13:47:56 +0100
commit5bca507f4f7bf4ccb2188c98fc8a320f428cacb2 (patch)
tree654d4ff58dede00b3cf0470a6d686926d85f6ec8 /src
parent2254587e62f050edd11af9e182b65aff3184eba6 (diff)
First part move/remove,create problem.
Diffstat (limited to 'src')
-rw-r--r--src/taskmanager.cc21
-rw-r--r--src/tasktree.cc3
-rw-r--r--src/tasktree.h2
3 files changed, 17 insertions, 9 deletions
diff --git a/src/taskmanager.cc b/src/taskmanager.cc
index 5f8e2d7..38d7893 100644
--- a/src/taskmanager.cc
+++ b/src/taskmanager.cc
@@ -112,15 +112,26 @@ TaskIdListPair TaskManager::moveTask(taskid_t id, taskid_t to)
if(id == to) throw std::exception(); // Node and new parent are the same node.
- task_t t = tree.data(id);
+ //task_t t = tree.data(id);
// Make sure the new parent exists. This will throw an exception if it doesn't
- task_t t_ = tree.data(to);
+ //task_t t_ = tree.data(to);
- t.parentid = to;
+ // t.parentid = to;
- TaskIdList tilremove = tree.remove(id);
- TaskIdList tilcreate = tree.insertAsChild(to, id, t);
+ // TaskIdList tilremove = tree.remove(id);
+ TaskIdList tilremove;
+ tilremove.push_back(id);
+ TaskIdList ancestors = tree.ancestorList(id);
+ tilremove.insert(tilremove.end(), ancestors.begin(), ancestors.end());
+
+ // TaskIdList tilcreate = tree.insertAsChild(to, id, t);
+ TaskIdList tilcreate;
+ tilcreate.push_back(to);
+ ancestors = tree.ancestorList(to);
+ tilcreate.insert(tilcreate.end(), ancestors.begin(), ancestors.end());
+
+ tree.move(id, to);
TaskIdListPair tilpair;
tilpair.first = tilremove;
diff --git a/src/tasktree.cc b/src/tasktree.cc
index 5205abf..c463177 100644
--- a/src/tasktree.cc
+++ b/src/tasktree.cc
@@ -173,7 +173,6 @@ TaskIdList TaskTree::remove(taskid_t id)
return affectedNodes;
}
-/*
TaskIdList TaskTree::move(taskid_t id, taskid_t toid)
throw (std::exception)
{
@@ -206,8 +205,6 @@ TaskIdList TaskTree::move(taskid_t id, taskid_t toid)
return affectedNodes;
}
-*/
-
TaskIdList TaskTree::updateData(taskid_t id, const std::string &name,
const std::string &value)
diff --git a/src/tasktree.h b/src/tasktree.h
index 0fd2540..8efadeb 100644
--- a/src/tasktree.h
+++ b/src/tasktree.h
@@ -60,7 +60,7 @@ public:
TaskIdList insertAsChild(taskid_t parentid, taskid_t id, task_t data) throw (std::exception);
TaskIdList remove(taskid_t id) throw (std::exception);
- // TaskIdList move(taskid_t id, taskid_t newParentId) throw (std::exception);
+ TaskIdList move(taskid_t id, taskid_t newParentId) throw (std::exception);
TaskIdList updateData(taskid_t id, const std::string &name,
const std::string &value) throw (std::exception);
task_t data(taskid_t id) throw (std::exception);