E5XML/TasksReader.py

changeset 3990
5dd6edf8540a
parent 3178
f25fc1364c88
child 4021
195a471c327b
diff -r 57354896fd29 -r 5dd6edf8540a E5XML/TasksReader.py
--- 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():

eric ide

mercurial