TimeTracker/TimeTracker.py

changeset 11
1eabdd26c44e
parent 10
64acf4452ac0
child 12
6c91abc72022
equal deleted inserted replaced
10:64acf4452ac0 11:1eabdd26c44e
189 for entry in entries: 189 for entry in entries:
190 entry.setID(nextID) 190 entry.setID(nextID)
191 self.__entries[nextID] = entry 191 self.__entries[nextID] = entry
192 nextID += 1 192 nextID += 1
193 193
194 if self.__plugin.getPreferences("AutoSave"):
195 self.saveTrackerEntries()
196
194 if invalidCount != 0 or duplicateCount != 0: 197 if invalidCount != 0 or duplicateCount != 0:
195 if invalidCount != 0 and duplicateCount != 0: 198 if invalidCount != 0 and duplicateCount != 0:
196 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained""" 199 msg = self.tr("""<p>The time tracker file <b>{0}</b> contained"""
197 """ %n invalid entries.""", 200 """ %n invalid entries.""",
198 "", invalidCount).format(fname) 201 "", invalidCount).format(fname)
272 275
273 @param eid ID of the tracker entry (integer) 276 @param eid ID of the tracker entry (integer)
274 """ 277 """
275 if eid in self.__entries: 278 if eid in self.__entries:
276 del self.__entries[eid] 279 del self.__entries[eid]
280
281 def removeDuplicateTrackerEntries(self):
282 """
283 Public slot to remove duplicate time tracker entries.
284
285 If entries with the identical start date and time are found, the one
286 with the longest duration is kept.
287 """
288 entries = {}
289 for entry in self.__entries.values():
290 dt = entry.getStartDateTime()
291 if dt in entries:
292 if entry.getDuration() > entries[dt].getDuration():
293 entries[dt] = entry
294 else:
295 entries[dt] = entry
296
297 self.__entries = {}
298 nextID = 0
299 for entry in sorted(entries.values()):
300 entry.setID(nextID)
301 self.__entries[nextID] = entry
302 nextID += 1
303
304 if self.__plugin.getPreferences("AutoSave"):
305 self.saveTrackerEntries()
306
307 self.__widget.clear()
308 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
309 self.__widget.setCurrentEntry(self.__currentEntry)
310
311 def mergeDuplicateTrackerEntries(self):
312 """
313 Public slot to merge duplicate time tracker entries.
314
315 If entries with the identical start date and time are found, the durations
316 of these entries are added.
317 """
318 entries = {}
319 for entry in self.__entries.values():
320 dt = entry.getStartDateTime()
321 if dt in entries:
322 entries[dt].addDuration(entry.getDuration())
323 else:
324 entries[dt] = entry
325
326 self.__entries = {}
327 nextID = 0
328 for entry in sorted(entries.values()):
329 entry.setID(nextID)
330 self.__entries[nextID] = entry
331 nextID += 1
332
333 if self.__plugin.getPreferences("AutoSave"):
334 self.saveTrackerEntries()
335
336 self.__widget.clear()
337 self.__widget.showTrackerEntries(sorted(self.__entries.values(), reverse=True))
338 self.__widget.setCurrentEntry(self.__currentEntry)

eric ide

mercurial