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): """