--- a/TimeTracker/TimeTrackerWidget.py Sun Oct 21 14:53:23 2012 +0200 +++ b/TimeTracker/TimeTrackerWidget.py Sun Oct 21 15:33:36 2012 +0200 @@ -125,6 +125,9 @@ menu.addAction(self.tr("Export Selected"), self.__exportSelectedEntries)\ .setEnabled(len(self.entriesList.selectedItems()) != 0) menu.addAction(self.tr("Export All"), self.__exportEntries) + menu.addSeparator() + menu.addAction(self.tr("Remove duplicates"), self.__removeDuplicates) + menu.addAction(self.tr("Merge duplicates"), self.__mergeDuplicates) menu.exec_(QCursor.pos()) def __editEntry(self): @@ -222,6 +225,28 @@ if ids: self.__exportEntries(ids=ids) + def __removeDuplicates(self): + """ + Private slot to remove duplicate entries. + """ + res = E5MessageBox.yesNo(self, + self.trUtf8("Remove Duplicate Tracker Entries"), + self.trUtf8("""Are you sure you want to remove duplicate tracker entries?""" + """ Only the one with the longest duration will be kept.""")) + if res: + self.__tracker.removeDuplicateTrackerEntries() + + def __mergeDuplicates(self): + """ + Private slot to merge duplicate entries. + """ + res = E5MessageBox.yesNo(self, + self.trUtf8("Merge Duplicate Tracker Entries"), + self.trUtf8("""Are you sure you want to merge duplicate tracker entries?""" + """ The durations of duplicate ones will be added.""")) + if res: + self.__tracker.mergeDuplicateTrackerEntries() + def __insertEntry(self, entry, index=-1): """ Private method to insert a tracker entry into the list.