TimeTracker/TimeTracker.py

changeset 11
1eabdd26c44e
parent 10
64acf4452ac0
child 12
6c91abc72022
diff -r 64acf4452ac0 -r 1eabdd26c44e TimeTracker/TimeTracker.py
--- a/TimeTracker/TimeTracker.py	Sun Oct 21 14:53:23 2012 +0200
+++ b/TimeTracker/TimeTracker.py	Sun Oct 21 15:33:36 2012 +0200
@@ -191,6 +191,9 @@
             self.__entries[nextID] = entry
             nextID += 1
         
+        if self.__plugin.getPreferences("AutoSave"):
+            self.saveTrackerEntries()
+        
         if invalidCount != 0 or duplicateCount != 0:
             if invalidCount != 0 and duplicateCount != 0:
                 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained"""
@@ -274,3 +277,62 @@
         """
         if eid in self.__entries:
             del self.__entries[eid]
+    
+    def removeDuplicateTrackerEntries(self):
+        """
+        Public slot to remove duplicate time tracker entries.
+        
+        If entries with the identical start date and time are found, the one
+        with the longest duration is kept.
+        """
+        entries = {}
+        for entry in self.__entries.values():
+            dt = entry.getStartDateTime()
+            if dt in entries:
+                if entry.getDuration() > entries[dt].getDuration():
+                    entries[dt] = entry
+            else:
+                entries[dt] = entry
+        
+        self.__entries = {}
+        nextID = 0
+        for entry in sorted(entries.values()):
+            entry.setID(nextID)
+            self.__entries[nextID] = entry
+            nextID += 1
+        
+        if self.__plugin.getPreferences("AutoSave"):
+            self.saveTrackerEntries()
+        
+        self.__widget.clear()
+        self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
+        self.__widget.setCurrentEntry(self.__currentEntry)
+    
+    def mergeDuplicateTrackerEntries(self):
+        """
+        Public slot to merge duplicate time tracker entries.
+        
+        If entries with the identical start date and time are found, the durations
+        of these entries are added.
+        """
+        entries = {}
+        for entry in self.__entries.values():
+            dt = entry.getStartDateTime()
+            if dt in entries:
+                entries[dt].addDuration(entry.getDuration())
+            else:
+                entries[dt] = entry
+        
+        self.__entries = {}
+        nextID = 0
+        for entry in sorted(entries.values()):
+            entry.setID(nextID)
+            self.__entries[nextID] = entry
+            nextID += 1
+        
+        if self.__plugin.getPreferences("AutoSave"):
+            self.saveTrackerEntries()
+        
+        self.__widget.clear()
+        self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
+        self.__widget.setCurrentEntry(self.__currentEntry)

eric ide

mercurial