factor out loadPNG into generic LoadPixmap
[vuplus_dvbapp] / lib / python / Components / EpgList.py
index ee00ce9..ba8d029 100644 (file)
@@ -1,9 +1,11 @@
 from HTMLComponent import HTMLComponent
 from GUIComponent import GUIComponent
 
-from enigma import eEPGCache, eListbox, eListboxPythonMultiContent, gFont, loadPNG, \
+from enigma import eEPGCache, eListbox, eListboxPythonMultiContent, gFont, \
        RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, RT_VALIGN_CENTER
 
+from Tools.LoadPixmap import LoadPixmap
+
 from time import localtime, time
 from ServiceReference import ServiceReference
 from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
@@ -49,7 +51,7 @@ class EPGList(HTMLComponent, GUIComponent):
                        assert(type == EPG_TYPE_SIMILAR)
                        self.l.setBuildFunc(self.buildSimilarEntry)
                self.epgcache = eEPGCache.getInstance()
-               self.clock_pixmap = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, 'epgclock-fs8.png'))
+               self.clock_pixmap = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, 'epgclock-fs8.png'))
 
        def getEventFromId(self, service, eventid):
                event = None
@@ -231,14 +233,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()