TimeTracker/TimeTrackerWidget.py

Sun, 21 Oct 2012 15:33:36 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 21 Oct 2012 15:33:36 +0200
changeset 11
1eabdd26c44e
parent 9
1c7fd3151ba2
child 12
6c91abc72022
permissions
-rw-r--r--

Implemented the remove and merge duplicate entries actions.

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
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
10 import os
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
11
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
12 from PyQt4.QtCore import pyqtSlot, QPoint, Qt, QDate, QTime, QFileInfo
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
13 from PyQt4.QtGui import QWidget, QMenu, QTreeWidgetItem, QCursor
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
15 from E5Gui import E5MessageBox, E5FileDialog
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
16
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .Ui_TimeTrackerWidget import Ui_TimeTrackerWidget
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
19 import Preferences
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
20 import Utilities
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
21
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class TimeTrackerWidget(QWidget, Ui_TimeTrackerWidget):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the time tracker widget.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
27 DurationColumn = 1
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
28 TaskColumn = 2
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
29 CommentColumn = 3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
30
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def __init__(self, tracker, parent=None):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param tracker reference to the time tracker (TimeTracker)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param parent reference to the parent widget (QWidget)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 super().__init__(parent)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.setupUi(self)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__tracker = tracker
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
44 def on_taskCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
45 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
46 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
47
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
48 @param txt new task description (string)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
50 itm = self.entriesList.topLevelItem(0)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
51 itm.setText(self.TaskColumn, txt)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
52 self.entriesList.resizeColumnToContents(self.TaskColumn)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
53
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
54 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
55 entry.setTask(txt)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @pyqtSlot(str)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
58 def on_commentCombo_editTextChanged(self, txt):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
59 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
60 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
61
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
62 @param txt new comment (string)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
64 itm = self.entriesList.topLevelItem(0)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
65 itm.setText(self.CommentColumn, txt)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
66 self.entriesList.resizeColumnToContents(self.CommentColumn)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
67
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
68 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
69 entry.setComment(txt)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @pyqtSlot(bool)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 def on_pauseButton_toggled(self, checked):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
74 Private slot to pause the current timing.
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
76 if checked:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
77 self.__tracker.pauseTrackerEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
78
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
79 entry = self.__tracker.getCurrentEntry()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
80 duration = entry.getDuration()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
81
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
82 itm = self.entriesList.topLevelItem(0)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
83 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
84 self.entriesList.resizeColumnToContents(self.CommentColumn)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
85
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
86 self.durationSpinBox.setValue(duration)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
87 else:
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
88 self.__tracker.continueTrackerEntry()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @pyqtSlot()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 def on_newButton_clicked(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 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
94 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 # stop the current tracker
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
96 eid, duration = self.__tracker.stopTrackerEntry()
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
97 if eid > -1:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
98 itm = self.entriesList.topLevelItem(0)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
99 itm.setText(self.DurationColumn, self.tr("{0} min").format(duration))
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
100 itm.setData(0, Qt.UserRole, eid)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
101 else:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
102 itm = self.entriesList.takeTopLevelItem(0)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
103 del itm
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
104 self.entriesList.resizeColumnToContents(self.CommentColumn)
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
105
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
106 # start a new one
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
107 self.__tracker.startTrackerEntry()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 @pyqtSlot(QPoint)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def on_entriesList_customContextMenuRequested(self, pos):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 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
113
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @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
115 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 menu = QMenu()
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 menu.addAction(self.tr("Edit"), self.__editEntry).setEnabled(
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 len(self.entriesList.selectedItems()) == 1)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 menu.addAction(self.tr("Delete"), self.__deleteSelectedEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 menu.addAction(self.tr("Save"), self.__saveEntries)
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 menu.addSeparator()
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 menu.addAction(self.tr("Import"), self.__importEntries)
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
125 menu.addAction(self.tr("Export Selected"), self.__exportSelectedEntries)\
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
126 .setEnabled(len(self.entriesList.selectedItems()) != 0)
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
127 menu.addAction(self.tr("Export All"), self.__exportEntries)
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
128 menu.addSeparator()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
129 menu.addAction(self.tr("Remove duplicates"), self.__removeDuplicates)
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
130 menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates)
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
131 menu.exec_(QCursor.pos())
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def __editEntry(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 Private slot to edit the selected tracker entry.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 # TODO: not implemented yet
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 raise NotImplementedError
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 def __deleteSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 Private slot to delete the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
144 res = E5MessageBox.yesNo(self,
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
145 self.trUtf8("Delete Selected Entries"),
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
146 self.trUtf8("""Do you really want to delete the selected entries?"""))
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
147 if res:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
148 for item in self.entriesList.selectedItems():
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
149 eid = item.data(0, Qt.UserRole)
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
150 if eid > -1:
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
151 # the current entry must not be deleted
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
152 self.entriesList.takeTopLevelItem(
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
153 self.entriesList.indexOfTopLevelItem(item))
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
154 self.__tracker.deleteTrackerEntry(eid)
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
155 del item
1
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 def __saveEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 Private slot to save the tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
5
6633e2836f8f Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
161 self.__tracker.saveTrackerEntries()
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 def __importEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 Private slot to import tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
9
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
167 path = Preferences.getMultiProject("Workspace") or Utilities.getHomeDir()
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
168 fname = E5FileDialog.getOpenFileName(
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
169 None,
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
170 self.trUtf8("Import Tracker Entries"),
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
171 path,
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
172 self.trUtf8("Text Files (*.txt);;All Files (*)"))
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
173 if fname:
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
174 fname = Utilities.toNativeSeparators(fname)
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
175 if not os.path.exists(fname):
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
176 E5MessageBox.critical(self,
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
177 self.trUtf8("Import Tracker Entries"),
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
178 self.trUtf8("<p>The file <b>{0}</b> does not exist.</p>").format(
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
179 fname))
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
180 return
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
181
1c7fd3151ba2 Implemented the import functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
182 self.__tracker.importTrackerEntries(fname)
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
184 def __exportEntries(self, ids=[]):
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
185 """
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
186 Private method to export all or selected entries.
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
187
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
188 @keyparam ids list of IDs to export or all if empty (list of integer)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
189 """
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
190 path = Preferences.getMultiProject("Workspace") or Utilities.getHomeDir()
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
191 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
192 self,
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
193 self.trUtf8("Export Tracker Entries"),
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
194 path,
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
195 self.tr("Text Files (*.txt);;All Files (*)"),
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
196 None,
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
197 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
198 if fname:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
199 ext = QFileInfo(fname).suffix()
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
200 if not ext:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
201 ex = selectedFilter.split("(*")[1].split(")")[0]
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
202 if ex:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
203 fname += ex
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
204 if QFileInfo(fname).exists():
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
205 res = E5MessageBox.yesNo(self,
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
206 self.trUtf8("Export Tracker Entries"),
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
207 self.trUtf8("<p>The file <b>{0}</b> already exists."
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
208 " Overwrite it?</p>").format(fname),
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
209 icon=E5MessageBox.Warning)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
210 if not res:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
211 return
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
212 fname = Utilities.toNativeSeparators(fname)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
213 self.__tracker.saveTrackerEntries(filePath=fname, ids=ids)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
214
1
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 def __exportSelectedEntries(self):
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 """
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 Private slot to export the selected tracker entries.
a0beac325e5a Added a few source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
6
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
219 ids = []
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
220 for itm in self.entriesList.selectedItems():
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
221 eid = itm.data(0, Qt.UserRole)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
222 if eid > -1:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
223 ids.append(eid)
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
224
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
225 if ids:
be12cde5813f Completed the export functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
226 self.__exportEntries(ids=ids)
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
227
11
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
228 def __removeDuplicates(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
229 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
230 Private slot to remove duplicate entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
231 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
232 res = E5MessageBox.yesNo(self,
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
233 self.trUtf8("Remove Duplicate Tracker Entries"),
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
234 self.trUtf8("""Are you sure you want to remove duplicate tracker entries?"""
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
235 """ Only the one with the longest duration will be kept."""))
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
236 if res:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
237 self.__tracker.removeDuplicateTrackerEntries()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
238
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
239 def __mergeDuplicates(self):
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
240 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
241 Private slot to merge duplicate entries.
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
242 """
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
243 res = E5MessageBox.yesNo(self,
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
244 self.trUtf8("Merge Duplicate Tracker Entries"),
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
245 self.trUtf8("""Are you sure you want to merge duplicate tracker entries?"""
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
246 """ The durations of duplicate ones will be added."""))
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
247 if res:
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
248 self.__tracker.mergeDuplicateTrackerEntries()
1eabdd26c44e Implemented the remove and merge duplicate entries actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
249
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
250 def __insertEntry(self, entry, index=-1):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
251 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
252 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
253
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
254 @param entry reference to the tracker entry (TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
255 @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
256 (integer)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
257 """
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
258 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
259 itm = QTreeWidgetItem(
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
260 [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
261 self.tr("{0} min").format(duration), task, comment])
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
262 itm.setTextAlignment(1, Qt.AlignRight)
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
263 itm.setData(0, Qt.UserRole, eid)
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
264 if index == -1:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
265 self.entriesList.addTopLevelItem(itm)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
266 else:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
267 self.entriesList.insertTopLevelItem(index, itm)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
268
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
269 def __resizeColumns(self):
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
270 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
271 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
272 """
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
273 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
274 self.entriesList.resizeColumnToContents(column)
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
275
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
276 def showTrackerEntries(self, entries):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
277 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
278 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
279
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
280 @param entries list of tracker entries (list of TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
281 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
282 for entry in entries:
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
283 self.__insertEntry(entry)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
284 self.__resizeColumns()
2
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
285
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
286 def setCurrentEntry(self, entry):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
287 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
288 Public method to set the current entry.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
289
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
290 @param entry current entry (TimeTrackEntry)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
291 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
292 self.__insertEntry(entry, 0)
3
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
293 self.__resizeColumns()
ce9309868f8a Implemented a bit more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
294
4
c67abfea9955 Implemented some more of the TimeTrackerWidget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
295 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
296 self.startDateTimeEdit.setDateTime(entry.getStartDateTime())
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
297 self.durationSpinBox.setValue(duration)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
298 self.taskCombo.setEditText(task)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
299 self.commentCombo.setEditText(comment)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
300
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
301 def clear(self):
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
302 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
303 Public method to clear all the data.
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
304 """
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
305 self.entriesList.clear()
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
306 self.startDateTimeEdit.setDate(QDate(2000, 1, 1))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
307 self.startDateTimeEdit.setTime(QTime(0, 0, 0))
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
308 self.durationSpinBox.setValue(0)
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
309 self.taskCombo.clear()
058c6a316ca8 Implemented the next step.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
310 self.commentCombo.clear()

eric ide

mercurial