TimeTracker/TimeTrackerWidget.py

changeset 12
6c91abc72022
parent 11
1eabdd26c44e
child 13
402a0962c225
diff -r 1eabdd26c44e -r 6c91abc72022 TimeTracker/TimeTrackerWidget.py
--- a/TimeTracker/TimeTrackerWidget.py	Sun Oct 21 15:33:36 2012 +0200
+++ b/TimeTracker/TimeTrackerWidget.py	Sun Oct 21 17:03:22 2012 +0200
@@ -10,12 +10,14 @@
 import os
 
 from PyQt4.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime, QFileInfo
-from PyQt4.QtGui import QWidget, QMenu, QTreeWidgetItem, QCursor
+from PyQt4.QtGui import QWidget, QMenu, QTreeWidgetItem, QCursor, QDialog
 
 from E5Gui import E5MessageBox, E5FileDialog
 
 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget
 
+from .TimeTrackerEntryDialog import TimeTrackerEntryDialog
+
 import Preferences
 import Utilities
 
@@ -117,6 +119,7 @@
         
         menu.addAction(self.tr("Edit"), self.__editEntry).setEnabled(
             len(self.entriesList.selectedItems()) == 1)
+        menu.addAction(self.tr("Add"), self.__addEntry)
         menu.addAction(self.tr("Delete"), self.__deleteSelectedEntries)
         menu.addSeparator()
         menu.addAction(self.tr("Save"), self.__saveEntries)
@@ -130,12 +133,35 @@
         menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates)
         menu.exec_(QCursor.pos())
     
+    def __addEntry(self):
+        """
+        Private slot to manually add an entry.
+        """
+        # TODO: implement this
+    
     def __editEntry(self):
         """
         Private slot to edit the selected tracker entry.
         """
-        # TODO: not implemented yet
-        raise NotImplementedError
+        eid = self.entriesList.selectedItems()[0].data(0, Qt.UserRole)
+        if eid > -1:
+            # the current entry is edited via the elements of this widget
+            entry = self.__tracker.getEntry(eid)
+            if entry is not None:
+                tasks = []
+                for index in range(self.taskCombo.count()):
+                    tasks.append(self.taskCombo.itemText(index))
+                comments = []
+                for index in range(self.commentCombo.count()):
+                    comments.append(self.commentCombo.itemText(index))
+            dlg = TimeTrackerEntryDialog(entry, tasks, comments)
+            if dlg.exec_() == QDialog.Accepted:
+                start, duration, task, comment = dlg.getData()
+                entry.setStartDateTime(start)
+                entry.setDuration(duration)
+                entry.setTask(task)
+                entry.setComment(comment)
+                self.__tracker.entryChanged()
     
     def __deleteSelectedEntries(self):
         """
@@ -279,9 +305,26 @@
         
         @param entries list of tracker entries (list of TimeTrackEntry)
         """
+        self.taskCombo.addItem("")
+        self.commentCombo.addItem("")
+        
+        tasks = []
+        comments = []
+        
         for entry in entries:
             self.__insertEntry(entry)
+            task = entry.getTask()
+            if task and task not in tasks:
+                tasks.append(task)
+            comment = entry.getComment()
+            if comment and comment not in comments:
+                comments.append(comment)
+        
         self.__resizeColumns()
+        if tasks:
+            self.taskCombo.addItems(sorted(tasks))
+        if comments:
+            self.commentCombo.addItems(sorted(comments))
     
     def setCurrentEntry(self, entry):
         """

eric ide

mercurial