small fix
[enigma2.git] / lib / python / Components / EpgList.py
index 1bc98ef615fa7d79ee03a8acfc4271040ecba183..0c4290d64b4698f3bde7c065de7f9be4fd99746b 100644 (file)
@@ -231,14 +231,28 @@ class EPGList(HTMLComponent, GUIComponent):
        def sortSingleEPG(self, type):
                if len(self.list):
                        if type == 1:
-                               self.list.sort(key=lambda x: (x[4].lower(), x[2]))
+                               event_id = self.getSelectedEventId()
+                               self.list.sort(key=lambda x: (x[4] and x[4].lower(), x[2]))
                                self.l.setList(self.list)
-                               self.selectionChanged()
+                               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.selectionChanged()
+                               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()
@@ -247,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