X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FEpgSelection.py;h=edad3596ab24e2241ce1a15d54b13da86ff8360e;hp=c8db81b33ba4ed8662f5f2409f013a9add88ff10;hb=04f4636324ab06c5a3a4f618100048e159eaf6f9;hpb=9bfa0ff587586c3bfe761200ca9fd890081024d4 diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index c8db81b..edad359 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -1,32 +1,43 @@ from Screen import Screen +from Components.config import config, ConfigClock from Components.Button import Button from Components.Pixmap import Pixmap from Components.Label import Label -from Components.EpgList import * +from Components.EpgList import EPGList, EPG_TYPE_SINGLE, EPG_TYPE_SIMILAR, EPG_TYPE_MULTI from Components.ActionMap import ActionMap -from Components.ScrollLabel import ScrollLabel from Screens.EventView import EventViewSimple -from enigma import eServiceReference, eServiceEventPtr -from Screens.FixedMenu import FixedMenu +from TimeDateInput import TimeDateInput +from enigma import eServiceReference from RecordTimer import RecordTimerEntry, parseEvent -from TimerEdit import TimerEditList from TimerEntry import TimerEntry from ServiceReference import ServiceReference -from Components.config import config, currentConfigSelectionElement -from time import localtime +from time import localtime, time -import xml.dom.minidom +mepg_config_initialized = False class EPGSelection(Screen): - def __init__(self, session, service, zapFunc=None): + def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None): Screen.__init__(self, session) + self.bouquetChangeCB = bouquetChangeCB + self.ask_time = -1 #now self["key_red"] = Button("") self.closeRecursive = False - if isinstance(service, eServiceReference): + if isinstance(service, str) and eventid != None: + self.type = EPG_TYPE_SIMILAR + self["key_yellow"] = Button() + self["key_blue"] = Button() + self["key_red"] = Button() + self.currentService=service + self.eventid = eventid + self.zapFunc = None + elif isinstance(service, eServiceReference) or isinstance(service, str): self.type = EPG_TYPE_SINGLE self["key_yellow"] = Button() self["key_blue"] = Button() self.currentService=ServiceReference(service) + self.zapFunc = None + self.sort_type = 0 + self.setSortDescription() else: self.skinName = "EPGSelectionMulti" self.type = EPG_TYPE_MULTI @@ -46,13 +57,9 @@ class EPGSelection(Screen): self.zapFunc = zapFunc self["key_green"] = Button(_("Add timer")) - self["list"] = EPGList(self.type, self.onSelectionChanged) + self["list"] = EPGList(type = self.type, selChangedCB = self.onSelectionChanged, timer = self.session.nav.RecordTimer) - class ChannelActionMap(ActionMap): - def action(self, contexts, action): - ActionMap.action(self, contexts, action) - - self["actions"] = ChannelActionMap(["EPGSelectActions", "OkCancelActions"], + self["actions"] = ActionMap(["EPGSelectActions", "OkCancelActions"], { "cancel": self.closeScreen, "ok": self.eventSelected, @@ -60,36 +67,67 @@ class EPGSelection(Screen): "yellow": self.yellowButtonPressed, "blue": self.blueButtonPressed, "info": self.infoKeyPressed, - "zapTo": self.zapTo + "red": self.zapTo, + "input_date_time": self.enterDateTime, + "nextBouquet": self.nextBouquet, + "prevBouquet": self.prevBouquet }) self["actions"].csel = self self.onLayoutFinish.append(self.onCreate) + def nextBouquet(self): + if self.bouquetChangeCB: + self.bouquetChangeCB(1, self) + + def prevBouquet(self): + if self.bouquetChangeCB: + self.bouquetChangeCB(-1, self) + + def enterDateTime(self): + if self.type == EPG_TYPE_MULTI: + global mepg_config_initialized + if not mepg_config_initialized: + config.misc.prev_mepg_time=ConfigClock(default = time()) + mepg_config_initialized = True + self.session.openWithCallback(self.onDateTimeInputClosed, TimeDateInput, config.misc.prev_mepg_time ) + + def onDateTimeInputClosed(self, ret): + if len(ret) > 1: + if ret[0]: + self.ask_time=ret[1] + self["list"].fillMultiEPG(self.services, ret[1]) + def closeScreen(self): - self.close(self.closeRecursive or self.type == EPG_TYPE_SINGLE) + self.close(self.closeRecursive) def infoKeyPressed(self): - if self.type == EPG_TYPE_MULTI: - cur = self["list"].getCurrent() - event = cur[0] - service = cur[1] - else: - event = self["list"].getCurrent() - service = self.currentService + cur = self["list"].getCurrent() + event = cur[0] + service = cur[1] if event is not None: - self.session.open(EventViewSimple, event, service, self.eventViewCallback) + if self.type != EPG_TYPE_SIMILAR: + self.session.open(EventViewSimple, event, service, self.eventViewCallback, self.openSimilarList) + else: + self.session.open(EventViewSimple, event, service, self.eventViewCallback) + + def openSimilarList(self, eventid, refstr): + self.session.open(EPGSelection, refstr, None, eventid) + + def setServices(self, services): + self.services = services + self.onCreate() #just used in multipeg def onCreate(self): l = self["list"] + l.recalcEntrySize() if self.type == EPG_TYPE_MULTI: - l.recalcEntrySize() - l.fillMultiEPG(self.services) - else: - if SINGLE_CPP == 0: - l.recalcEntrySize() + l.fillMultiEPG(self.services, self.ask_time) + elif self.type == EPG_TYPE_SINGLE: l.fillSingleEPG(self.currentService) + else: + l.fillSimilarList(self.currentService, self.eventid) def eventViewCallback(self, setEvent, setService, val): l = self["list"] @@ -99,46 +137,54 @@ class EPGSelection(Screen): elif val == +1: self.moveDown() cur = l.getCurrent() - if self.type == EPG_TYPE_SINGLE: - setEvent(cur) + if self.type == EPG_TYPE_MULTI and cur[0] is None and cur[1].ref != old[1].ref: + self.eventViewCallback(setEvent, setService, val) 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]) + setService(cur[1]) + setEvent(cur[0]) def zapTo(self): # just used in multiepg - if self.zapFunc != None: - self.closeRecursive = True - ref = self["list"].getCurrent()[1] - self.zapFunc(ref.ref) + if self.zapFunc and self["key_red"].getText() == "Zap": + lst = self["list"] + count = lst.getCurrentChangeCount() + if count == 0: + self.closeRecursive = True + ref = lst.getCurrent()[1] + self.zapFunc(ref.ref) def eventSelected(self): - if self.type == EPG_TYPE_SINGLE: - self.infoKeyPressed() - else: # EPG_TYPE_MULTI - self.zapTo() + self.infoKeyPressed() def yellowButtonPressed(self): if self.type == EPG_TYPE_MULTI: self["list"].updateMultiEPG(-1) + elif self.type == EPG_TYPE_SINGLE: + if self.sort_type == 0: + self.sort_type = 1 + else: + self.sort_type = 0 + self["list"].sortSingleEPG(self.sort_type) + self.setSortDescription() + + def setSortDescription(self): + if self.sort_type == 1: + # TRANSLATORS: This must fit into the header button in the EPG-List + self["key_yellow"].setText(_("Sort Time")) + else: + # TRANSLATORS: This must fit into the header button in the EPG-List + self["key_yellow"].setText(_("Sort A-Z")) 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] + cur = self["list"].getCurrent() + event = cur[0] + serviceref = cur[1] if event is None: return - newEntry = RecordTimerEntry(serviceref, *parseEvent(event)) + newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, dirname = config.movielist.last_timer_videodir.value, *parseEvent(event)) self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry) def timerEditFinished(self, answer): @@ -154,31 +200,47 @@ class EPGSelection(Screen): self["list"].moveDown() def applyButtonState(self, state): - if state == 1: - self["now_button_sel"].showWidget() - self["now_button"].hideWidget() + if state == 0: + self["now_button"].hide() + self["now_button_sel"].hide() + self["next_button"].hide() + self["next_button_sel"].hide() + self["more_button"].hide() + self["more_button_sel"].hide() + self["now_text"].hide() + self["next_text"].hide() + self["more_text"].hide() + self["key_red"].setText("") else: - self["now_button"].showWidget() - self["now_button_sel"].hideWidget() + if state == 1: + self["key_red"].setText("Zap") + self["now_button_sel"].show() + self["now_button"].hide() + else: + self["now_button"].show() + self["now_button_sel"].hide() + self["key_red"].setText("") - if state == 2: - self["next_button_sel"].showWidget() - self["next_button"].hideWidget() - else: - self["next_button"].showWidget() - self["next_button_sel"].hideWidget() + if state == 2: + self["next_button_sel"].show() + self["next_button"].hide() + else: + self["next_button"].show() + self["next_button_sel"].hide() - if state == 3: - self["more_button_sel"].showWidget() - self["more_button"].hideWidget() - else: - self["more_button"].showWidget() - self["more_button_sel"].hideWidget() + if state == 3: + self["more_button_sel"].show() + self["more_button"].hide() + else: + self["more_button"].show() + self["more_button_sel"].hide() def onSelectionChanged(self): if self.type == EPG_TYPE_MULTI: count = self["list"].getCurrentChangeCount() - if count > 1: + if self.ask_time != -1: + self.applyButtonState(0) + elif count > 1: self.applyButtonState(3) elif count > 0: self.applyButtonState(2)