177 (string) |
177 (string) |
178 @keyparam ids list of entry IDs to be written (list of integer) |
178 @keyparam ids list of entry IDs to be written (list of integer) |
179 """ |
179 """ |
180 if not filePath: |
180 if not filePath: |
181 filePath = self.__trackerFilePath |
181 filePath = self.__trackerFilePath |
182 if ids: |
182 entriesList = ( |
183 entriesList = [self.__entries[eid] for eid in ids |
183 [self.__entries[eid] for eid in ids if eid in self.__entries] |
184 if eid in self.__entries] |
184 if ids else |
185 else: |
185 self.__entries.values() |
186 entriesList = self.__entries.values() |
186 ) |
187 try: |
187 try: |
188 with open(filePath, "w", encoding="utf-8") as f: |
188 with open(filePath, "w", encoding="utf-8") as f: |
189 for entry in entriesList: |
189 for entry in entriesList: |
190 if entry.isValid(): |
190 if entry.isValid(): |
191 f.write(entry.toString() + "\n") |
191 f.write(entry.toString() + "\n") |
234 for entry in entries[:]: |
234 for entry in entries[:]: |
235 if entry.getStartDateTime() in startDateTimes: |
235 if entry.getStartDateTime() in startDateTimes: |
236 entries.remove(entry) |
236 entries.remove(entry) |
237 duplicateCount += 1 |
237 duplicateCount += 1 |
238 |
238 |
239 if len(self.__entries.keys()): |
239 start = ( |
240 nextID = max(self.__entries.keys()) + 1 |
240 max(self.__entries.keys()) + 1 |
241 else: |
241 if len(self.__entries.keys()) else |
242 nextID = 0 |
242 0 |
243 for entry in entries: |
243 ) |
|
244 for nextID, entry in enumerate(entries, start=start): |
244 entry.setID(nextID) |
245 entry.setID(nextID) |
245 self.__entries[nextID] = entry |
246 self.__entries[nextID] = entry |
246 nextID += 1 |
|
247 |
247 |
248 if self.__plugin.getPreferences("AutoSave"): |
248 if self.__plugin.getPreferences("AutoSave"): |
249 self.saveTrackerEntries() |
249 self.saveTrackerEntries() |
250 |
250 |
251 if invalidCount != 0 or duplicateCount != 0: |
251 if invalidCount != 0 or duplicateCount != 0: |
296 return |
296 return |
297 |
297 |
298 if duration < self.__plugin.getPreferences("MinimumDuration"): |
298 if duration < self.__plugin.getPreferences("MinimumDuration"): |
299 return |
299 return |
300 |
300 |
301 if len(self.__entries.keys()): |
301 nextID = ( |
302 nextID = max(self.__entries.keys()) + 1 |
302 max(self.__entries.keys()) + 1 |
303 else: |
303 if len(self.__entries.keys()) else |
304 nextID = 0 |
304 0 |
|
305 ) |
305 |
306 |
306 from .TimeTrackEntry import TimeTrackEntry |
307 from .TimeTrackEntry import TimeTrackEntry |
307 |
308 |
308 entry = TimeTrackEntry(self.__plugin) |
309 entry = TimeTrackEntry(self.__plugin) |
309 entry.setID(nextID) |
310 entry.setID(nextID) |
409 entries[dt] = entry |
410 entries[dt] = entry |
410 else: |
411 else: |
411 entries[dt] = entry |
412 entries[dt] = entry |
412 |
413 |
413 self.__entries = {} |
414 self.__entries = {} |
414 nextID = 0 |
415 for nextID, entry in enumerate(sorted(entries.values())): |
415 for entry in sorted(entries.values()): |
|
416 entry.setID(nextID) |
416 entry.setID(nextID) |
417 self.__entries[nextID] = entry |
417 self.__entries[nextID] = entry |
418 nextID += 1 |
|
419 |
418 |
420 if self.__plugin.getPreferences("AutoSave"): |
419 if self.__plugin.getPreferences("AutoSave"): |
421 self.saveTrackerEntries() |
420 self.saveTrackerEntries() |
422 |
421 |
423 self.__widget.clear() |
422 self.__widget.clear() |
439 entries[dt].addDuration(entry.getDuration()) |
438 entries[dt].addDuration(entry.getDuration()) |
440 else: |
439 else: |
441 entries[dt] = entry |
440 entries[dt] = entry |
442 |
441 |
443 self.__entries = {} |
442 self.__entries = {} |
444 nextID = 0 |
443 for nextID, entry in enumerate(sorted(entries.values())): |
445 for entry in sorted(entries.values()): |
|
446 entry.setID(nextID) |
444 entry.setID(nextID) |
447 self.__entries[nextID] = entry |
445 self.__entries[nextID] = entry |
448 nextID += 1 |
|
449 |
446 |
450 if self.__plugin.getPreferences("AutoSave"): |
447 if self.__plugin.getPreferences("AutoSave"): |
451 self.saveTrackerEntries() |
448 self.saveTrackerEntries() |
452 |
449 |
453 self.__widget.clear() |
450 self.__widget.clear() |