X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b14f1520fe0dabd185ab3555c9d2dd8ab5276dd0..3285eb3ebcd0ba134ac6b80337f8519d5a0da5b0:/lib/python/Components/EpgList.py diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index 38400945..ee00ce9f 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -1,10 +1,9 @@ -from HTMLComponent import * -from GUIComponent import * +from HTMLComponent import HTMLComponent +from GUIComponent import GUIComponent from enigma import eEPGCache, eListbox, eListboxPythonMultiContent, gFont, loadPNG, \ RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, RT_VALIGN_CENTER -from re import * from time import localtime, time from ServiceReference import ServiceReference from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE @@ -50,6 +49,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')) def getEventFromId(self, service, eventid): event = None @@ -139,7 +139,7 @@ class EPGList(HTMLComponent, GUIComponent): res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_RIGHT, self.days[t[6]])) res.append((eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4]))) if rec: - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, 'epgclock-fs8.png')))) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, self.clock_pixmap)) res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName)) @@ -155,7 +155,7 @@ class EPGList(HTMLComponent, GUIComponent): res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_RIGHT, self.days[t[6]])) res.append((eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4]))) if rec: - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, 'epgclock-fs8.png')))) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, self.clock_pixmap)) res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name)) @@ -170,7 +170,7 @@ class EPGList(HTMLComponent, GUIComponent): res = [ None ] # no private data needed if rec: res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width()-21, r1.height(), 0, RT_HALIGN_LEFT, service_name)) - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r1.left()+r1.width()-16, r1.top(), 21, 21, loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, 'epgclock-fs8.png')))) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r1.left()+r1.width()-16, r1.top(), 21, 21, self.clock_pixmap)) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_LEFT, service_name)) if begTime is not None: @@ -197,10 +197,8 @@ class EPGList(HTMLComponent, GUIComponent): def fillMultiEPG(self, services, stime=-1): t = time() - test = [ '0RIBDTCn' ] - for service in services: - tuple = (service.ref.toString(), 0, stime) - test.append( tuple ) + test = [ (service.ref.toString(), 0, stime) for service in services ] + test.insert(0, '0RIBDTCn') self.list = self.queryEPG(test) self.l.setList(self.list) print time() - t @@ -208,14 +206,8 @@ class EPGList(HTMLComponent, GUIComponent): def updateMultiEPG(self, direction): t = time() - test = [ 'RIBDTCn' ] - for x in self.list: - service = x[1] - begTime = x[3] - duration = x[4] - if begTime is None: - begTime = 0 - test.append((service, direction, begTime)) + test = [ x[3] and (x[1], direction, x[3]) or (x[1], direction, 0) for x in self.list ] + test.insert(0, 'RIBDTCn') tmp = self.queryEPG(test) cnt=0 for x in tmp: @@ -231,17 +223,22 @@ 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: + self.list.sort(key=lambda x: (x[4].lower(), x[2])) + self.l.setList(self.list) + self.selectionChanged() + else: + assert(type == 0) + self.list.sort(key=lambda x: x[2]) + self.l.setList(self.list) + self.selectionChanged() def fillSimilarList(self, refstr, event_id): t = time() @@ -250,7 +247,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