TimeTracker/TimeTrackerWidget.py

Sat, 20 Oct 2012 12:34:26 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 20 Oct 2012 12:34:26 +0200
changeset 4
c67abfea9955
parent 3
ce9309868f8a
child 5
6633e2836f8f
permissions
-rw-r--r--

Implemented some more of the TimeTrackerWidget.

1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the time tracker widget.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
10 from PyQt4.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
11 from PyQt4.QtGui import QWidget, QMenu, QTreeWidgetItem, QCursor
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 class TimeTrackerWidget(QWidget, Ui_TimeTrackerWidget):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 Class implementing the time tracker widget.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
20 DurationColumn = 1
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
21 TaskColumn = 2
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
22 CommentColumn = 3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
23
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self, tracker, parent=None):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param tracker reference to the time tracker (TimeTracker)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @param parent reference to the parent widget (QWidget)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 super().__init__(parent)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 self.setupUi(self)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.__tracker = tracker
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
37 def on_taskCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
38 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
39 Private slot handling changes of the task description of the current entry.
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
40
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
41 @param txt new task description (string)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
43 itm = self.entriesList.topLevelItem(0)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
44 itm.setText(self.TaskColumn, txt)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
45 self.entriesList.resizeColumnToContents(self.TaskColumn)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
46
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
47 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
48 entry.setTask(txt)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
51 def on_commentCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
52 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
53 Private slot handling changes of the comment of the current entry.
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
54
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
55 @param txt new comment (string)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
57 itm = self.entriesList.topLevelItem(0)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
58 itm.setText(self.CommentColumn, txt)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
59 self.entriesList.resizeColumnToContents(self.CommentColumn)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
60
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
61 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
62 entry.setComment(txt)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @pyqtSlot(bool)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 def on_pauseButton_toggled(self, checked):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
67 Private slot to pause the current timing.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
69 if checked:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
70 self.__tracker.pauseTrackerEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
71
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
72 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
73 duration = entry.getDuration()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
74
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
75 itm = self.entriesList.topLevelItem(0)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
76 itm.setText(self.DurationColumn, self.tr("{0} min").format(duration))
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
77 self.entriesList.resizeColumnToContents(self.CommentColumn)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
78
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
79 self.durationSpinBox.setValue(duration)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
80 else:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
81 self.__tracker.continueTrackerEntry()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @pyqtSlot()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def on_newButton_clicked(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
86 Private slot to end the current timer and start a new one.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
88 # stop the current tracker
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
89 eid, duration = self.__tracker.stopTrackerEntry()
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
90 itm = self.entriesList.topLevelItem(0)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
91 itm.setText(self.DurationColumn, self.tr("{0} min").format(duration))
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
92 itm.setData(0, Qt.UserRole, eid)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 self.entriesList.resizeColumnToContents(self.CommentColumn)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
94
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 # start a new one
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
96 self.__tracker.startTrackerEntry()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @pyqtSlot(QPoint)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 def on_entriesList_customContextMenuRequested(self, pos):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 Private slot to create the context menu and show it.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 @param pos position the menu should be shown at (QPoint)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 menu = QMenu()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 menu.addAction(self.tr("Edit"), self.__editEntry).setEnabled(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 len(self.entriesList.selectedItems()) == 1)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 menu.addAction(self.tr("Delete"), self.__deleteSelectedEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 menu.addAction(self.tr("Save"), self.__saveEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 menu.addAction(self.tr("Import"), self.__importEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 menu.addAction(self.tr("Export Selected"), self.__exportSelectedEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 menu.addAction(self.tr("Export All"), self.__exportAllEntries)
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
116 menu.exec_(QCursor.pos())
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def __editEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Private slot to edit the selected tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 def __deleteSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Private slot to delete the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def __saveEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Private slot to save the tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def __importEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 Private slot to import tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 def __exportSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 Private slot to export the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def __exportAllEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Private slot to export all tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 raise NotImplementedError
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
159
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
160 def __insertEntry(self, entry, index=-1):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
161 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
162 Private method to insert a tracker entry into the list.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
163
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
164 @param entry reference to the tracker entry (TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
165 @param index index the entry is to be inserted; -1 for at the end
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
166 (integer)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
167 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168 eid, date, time, duration, task, comment, paused = entry.getEntryData()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
169 itm = QTreeWidgetItem(
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 [self.tr("{0}, {1}", "date, time").format(date, time),
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 self.tr("{0} min").format(duration), task, comment])
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
172 itm.setTextAlignment(1, Qt.AlignRight)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 itm.setData(0, Qt.UserRole, eid)
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
174 if index == -1:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
175 self.entriesList.addTopLevelItem(itm)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
176 else:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
177 self.entriesList.insertTopLevelItem(index, itm)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
178
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
179 def __resizeColumns(self):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
180 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
181 Private slot to resize the columns of the entries list.
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
182 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
183 for column in range(self.entriesList.columnCount()):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
184 self.entriesList.resizeColumnToContents(column)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
185
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
186 def showTrackerEntries(self, entries):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
187 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
188 Public method to show the tracker entries of the current project.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
189
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
190 @param entries list of tracker entries (list of TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
191 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
192 for entry in entries:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
193 self.__insertEntry(entry)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
194 self.__resizeColumns()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
195
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
196 def setCurrentEntry(self, entry):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
197 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
198 Public method to set the current entry.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
199
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
200 @param entry current entry (TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
201 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
202 self.__insertEntry(entry, 0)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
203 self.__resizeColumns()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
204
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
205 eid, date, time, duration, task, comment, paused = entry.getEntryData()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
206 self.startDateTimeEdit.setDateTime(entry.getStartDateTime())
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
207 self.durationSpinBox.setValue(duration)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
208 self.taskCombo.setEditText(task)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
209 self.commentCombo.setEditText(comment)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
210
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
211 def clear(self):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
212 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
213 Public method to clear all the data.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
214 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
215 self.entriesList.clear()
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
216 self.startDateTimeEdit.setDate(QDate(2000, 1, 1))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
217 self.startDateTimeEdit.setTime(QTime(0, 0, 0))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
218 self.durationSpinBox.setValue(0)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
219 self.taskCombo.clear()
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
220 self.commentCombo.clear()

eric ide

mercurial