X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a1a2ae77b09ebcbd9f74a45d6e403c306eb1ea7f..7b0d371a7bbfb9e8d624eec9ed97e9a835f75ca7:/lib/python/Components/EpgList.py diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index 618c9c9c..0c4290d6 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -223,17 +223,36 @@ class EPGList(HTMLComponent, GUIComponent): def fillSingleEPG(self, service): t = time() test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ] - self.l.setList(self.queryEPG(test)) + self.list = self.queryEPG(test) + self.l.setList(self.list) print time() - t self.selectionChanged() - def sort_func(self,x,y): - if x[2] < y[2]: - return -1 - elif x[2] == y[2]: - return 0 - else: - return 1 + def sortSingleEPG(self, type): + if len(self.list): + if type == 1: + event_id = self.getSelectedEventId() + self.list.sort(key=lambda x: (x[4] and x[4].lower(), x[2])) + self.l.setList(self.list) + self.moveToEventId(event_id) + else: + assert(type == 0) + event_id = self.getSelectedEventId() + self.list.sort(key=lambda x: x[2]) + self.l.setList(self.list) + self.moveToEventId(event_id) + + def getSelectedEventId(self): + x = self.l.getCurrentSelection() + return x and x[1] + + def moveToEventId(self, eventId): + index = 0 + for x in self.list: + if x[1] == eventId: + self.instance.moveSelectionTo(index) + break + index += 1 def fillSimilarList(self, refstr, event_id): t = time() @@ -242,7 +261,7 @@ class EPGList(HTMLComponent, GUIComponent): return l = self.epgcache.search(('RIBND', 1024, eEPGCache.SIMILAR_BROADCASTINGS_SEARCH, refstr, event_id)) if l and len(l): - l.sort(self.sort_func) + l.sort(key=lambda x: x[2]) self.l.setList(l) self.selectionChanged() print time() - t