X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fpython%2FComponents%2FEpgList.py;h=dbcd572b713a87095f431211869c0ef74b34504b;hb=d732b430ccc1d1a78e666f16553b2e3c5dd131a8;hp=ee00ce9f7e7de5ba06ac1640b69e562d6537610a;hpb=d3233d4aa3d508e1408aabd797168044cc84983f;p=vuplus_dvbapp diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index ee00ce9..dbcd572 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -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, 'skin_default/icons/epgclock.png')) def getEventFromId(self, service, eventid): event = None @@ -97,12 +99,16 @@ class EPGList(HTMLComponent, GUIComponent): pass GUI_WIDGET = eListbox - + def postWidgetCreate(self, instance): instance.setWrapAround(True) instance.selectionChanged.get().append(self.selectionChanged) instance.setContent(self.l) + def preWidgetRemove(self, instance): + instance.selectionChanged.get().remove(self.selectionChanged) + instance.setContent(None) + def recalcEntrySize(self): esize = self.l.getItemSize() self.l.setFont(0, gFont("Regular", 22)) @@ -130,7 +136,7 @@ class EPGList(HTMLComponent, GUIComponent): self.service_rect = Rect(width/20*7, 0, width/20*13, height) def buildSingleEntry(self, service, eventId, beginTime, duration, EventName): - rec=(self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) + rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) r1=self.weekday_rect r2=self.datetime_rect r3=self.descr_rect @@ -146,7 +152,7 @@ class EPGList(HTMLComponent, GUIComponent): return res def buildSimilarEntry(self, service, eventId, beginTime, service_name, duration): - rec=(self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) + rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service) > ((duration/10)*8)) r1=self.weekday_rect r2=self.datetime_rect r3=self.service_rect @@ -198,7 +204,7 @@ class EPGList(HTMLComponent, GUIComponent): def fillMultiEPG(self, services, stime=-1): t = time() test = [ (service.ref.toString(), 0, stime) for service in services ] - test.insert(0, '0RIBDTCn') + test.insert(0, 'X0RIBDTCn') self.list = self.queryEPG(test) self.l.setList(self.list) print time() - t @@ -207,7 +213,7 @@ class EPGList(HTMLComponent, GUIComponent): def updateMultiEPG(self, direction): t = time() test = [ x[3] and (x[1], direction, x[3]) or (x[1], direction, 0) for x in self.list ] - test.insert(0, 'RIBDTCn') + test.insert(0, 'XRIBDTCn') tmp = self.queryEPG(test) cnt=0 for x in tmp: @@ -231,14 +237,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()