--- a/E5XML/TasksReader.py Mon Dec 22 14:01:41 2014 +0100 +++ b/E5XML/TasksReader.py Mon Dec 22 18:27:16 2014 +0100 @@ -25,7 +25,7 @@ """ Class for reading an XML tasks file. """ - supportedVersions = ["4.2", "5.0", "5.1"] + supportedVersions = ["4.2", "5.0", "5.1", "6.0"] def __init__(self, device, forProject=False, viewer=None): """ @@ -46,6 +46,7 @@ self.viewer = e5App().getObject("TaskViewer") self.version = "" + self.tasks = [] def readXML(self): """ @@ -53,6 +54,11 @@ """ while not self.atEnd(): self.readNext() + if self.isEndElement() and self.name() == "Tasks": + for task, expanded in self.tasks: + task.setExpanded(expanded) + break + if self.isStartElement(): if self.name() == "Tasks": self.version = self.attribute( @@ -82,6 +88,7 @@ "linenumber": 0, "type": Task.TypeTodo, "description": "", + "uid": "", } task["priority"] = int(self.attribute("priority", "1")) task["completed"] = self.toBool(self.attribute("completed", "False")) @@ -91,16 +98,28 @@ task["type"] = Task.TypeFixme else: task["type"] = int(self.attribute("type", str(Task.TypeTodo))) + uid = self.attribute("uid", "") + if uid: + task["uid"] = uid + else: + # upgrade from pre 6.0 format + from PyQt5.QtCore import QUuid + task["uid"] = QUuid.createUuid().toString() + parentUid = self.attribute("parent_uid", "") + expanded = self.toBool(self.attribute("expanded", "True")) while not self.atEnd(): self.readNext() if self.isEndElement() and self.name() == "Task": - self.viewer.addTask( + parentTask = self.viewer.findParentTask(parentUid) + addedTask = self.viewer.addTask( task["summary"], priority=task["priority"], filename=task["filename"], lineno=task["linenumber"], completed=task["completed"], _time=task["created"], isProjectTask=self.forProject, taskType=task["type"], - description=task["description"]) + description=task["description"], uid=task["uid"], + parentTask=parentTask) + self.tasks.append((addedTask, expanded)) break if self.isStartElement():