X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/4739f2d47dc8e6aee519f90e00e011659adf47ed..9062e2e8234479445e6c06f8b873d7d866dc8492:/lib/python/Screens/EpgSelection.py diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index aeab4f03..9458e395 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -1,39 +1,125 @@ from Screen import Screen from Components.Button import Button -from Components.EpgList import EPGList +from Components.EpgList import * from Components.ActionMap import ActionMap - -from enigma import eServiceReference - +from Screens.EventView import EventView +from enigma import eServiceReference, eServiceEventPtr from Screens.FixedMenu import FixedMenu +from RecordTimer import RecordTimerEntry, parseEvent +from TimerEdit import TimerEditList +from TimerEntry import TimerEntry +from ServiceReference import ServiceReference import xml.dom.minidom class EPGSelection(Screen): - def __init__(self, session): + def __init__(self, session, service): Screen.__init__(self, session) - self["list"] = EPGList() -# self["list"].setRoot(root) + self["key_red"] = Button("") + self["key_green"] = Button(_("Add timer")) + + if isinstance(service, eServiceReference): + self.type = EPG_TYPE_SINGLE + self["key_yellow"] = Button() + self["key_blue"] = Button() + self.currentService=ServiceReference(service) + else: + self.type = EPG_TYPE_MULTI + self["key_yellow"] = Button(_("Prev")) + self["key_blue"] = Button(_("Next")) + self.services = service + + self["list"] = EPGList(self.type) class ChannelActionMap(ActionMap): def action(self, contexts, action): - ActionMap.action(self, contexts, action) + ActionMap.action(self, contexts, action) - self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions"], + self["actions"] = ChannelActionMap(["EPGSelectActions", "OkCancelActions"], { - "cancel": self.close, + "cancel": self.closeClose, "ok": self.eventSelected, + "timerAdd": self.timerAdd, + "yellow": self.yellowButtonPressed, + "blue": self.blueButtonPressed, + "info": self.closeInfo }) self["actions"].csel = self + self.onLayoutFinish.append(self.onCreate) + + def closeClose(self): + self.close(False) + + def closeInfo(self): + self.close(True) + + #just used in multipeg + def onCreate(self): + l = self["list"] + if self.type == EPG_TYPE_MULTI: + l.recalcEntrySize() + l.fillMultiEPG(self.services) + else: + if SINGLE_CPP == 0: + l.recalcEntrySize() + l.fillSingleEPG(self.currentService) + + def eventViewCallback(self, setEvent, setService, val): + l = self["list"] + old = l.getCurrent() + if val == -1: + self.moveUp() + elif val == +1: + self.moveDown() + cur = l.getCurrent() + if self.type == EPG_TYPE_SINGLE: + setEvent(cur) + else: + if self.type == EPG_TYPE_MULTI and cur[0] is None and cur[1].ref != old[1].ref: + self.eventViewCallback(setEvent, setService, val) + else: + setEvent(cur[0]) + setService(cur[1]) + def eventSelected(self): - ref = self["list"].getCurrent() -# open eventdetail view... not finished yet - self.close() - - def setRoot(self, root): - self["list"].setRoot(root) + if self.type == EPG_TYPE_SINGLE: + event = self["list"].getCurrent() + service = self.currentService + else: # EPG_TYPE_MULTI + cur = self["list"].getCurrent() + event = cur[0] + service = cur[1] + if event is not None: + self.session.open(EventView, event, service, self.eventViewCallback) + + def yellowButtonPressed(self): + if self.type == EPG_TYPE_MULTI: + self["list"].updateMultiEPG(-1) + + def blueButtonPressed(self): + if self.type == EPG_TYPE_MULTI: + self["list"].updateMultiEPG(1) + + def timerAdd(self): + if self.type == EPG_TYPE_SINGLE: + event = self["list"].getCurrent() + serviceref = self.currentService + else: + cur = self["list"].getCurrent() + event = cur[0] + serviceref = cur[1] + if event is None: + return + newEntry = RecordTimerEntry(serviceref, *parseEvent(event)) + self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry) + + def timerEditFinished(self, answer): + if (answer[0]): + self.session.nav.RecordTimer.record(answer[1]) + else: + print "Timeredit aborted" def moveUp(self): self["list"].moveUp()