<key id="KEY_BLUE" mapto="blue" flags="mr" />
<key id="KEY_INFO" mapto="info" flags="m" />
<key id="KEY_MENU" mapto="input_date_time" flags="m" />
+ <key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
+ <key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
</map>
<map context="EventViewActions">
from enigma import eListboxPythonStringContent, eListbox
class MenuList(HTMLComponent, GUIComponent):
- def __init__(self, list):
+ def __init__(self, list, enableWrapAround=False):
GUIComponent.__init__(self)
self.list = list
self.l = eListboxPythonStringContent()
self.l.setList(self.list)
self.onSelectionChanged = [ ]
+ self.enableWrapAround = enableWrapAround
def getCurrent(self):
return self.l.getCurrentSelection()
self.instance = eListbox(parent)
self.instance.setContent(self.l)
self.instance.selectionChanged.get().append(self.selectionChanged)
+ if self.enableWrapAround:
+ self.instance.setWrapAround(True)
def GUIdelete(self):
self.instance.setContent(None)
def selectionEnabled(self, enabled):
if self.instance is not None:
- self.instance.setSelectionEnable(enabled)
\ No newline at end of file
+ self.instance.setSelectionEnable(enabled)
import xml.dom.minidom
class BouquetSelector(Screen):
- def __init__(self, session, bouquets, selectedFunc):
+ def __init__(self, session, bouquets, selectedFunc, enableWrapAround=False):
Screen.__init__(self, session)
self.selectedFunc=selectedFunc
entrys = [ ]
for x in bouquets:
entrys.append((x[0], x[1]))
- self["menu"] = MenuList(entrys)
+ self["menu"] = MenuList(entrys, enableWrapAround)
+
+ def getCurrent(self):
+ cur = self["menu"].getCurrent()
+ return cur and cur[1]
def okbuttonClick(self):
- self.selectedFunc(self["menu"].getCurrent()[1])
+ self.selectedFunc(self.getCurrent())
+
+ def up(self):
+ self["menu"].up()
+
+ def down(self):
+ self["menu"].down()
def cancelClick(self):
self.close(False)
class ChannelContextMenu(Screen):
-
def __init__(self, session, csel):
Screen.__init__(self, session)
self.csel = csel
import xml.dom.minidom
class EPGSelection(Screen):
- def __init__(self, session, service, zapFunc=None, eventid=None):
+ def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None):
Screen.__init__(self, session)
- self.asked_specific_time = False
+ self.bouquetChangeCB = bouquetChangeCB
+ self.ask_time = -1 #now
self["key_red"] = Button("")
self.closeRecursive = False
if isinstance(service, str) and eventid != None:
"blue": self.blueButtonPressed,
"info": self.infoKeyPressed,
"zapTo": self.zapTo,
- "input_date_time": self.enterDateTime
+ "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:
self.session.openWithCallback(self.onDateTimeInputClosed, TimeDateInput)
def onDateTimeInputClosed(self, ret):
if len(ret) > 1:
if ret[0]:
- self.asked_specific_time=True
+ self.ask_time=ret[1]
self["list"].fillMultiEPG(self.services, ret[1])
def closeScreen(self):
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"]
if self.type == EPG_TYPE_MULTI:
l.recalcEntrySize()
- l.fillMultiEPG(self.services)
+ l.fillMultiEPG(self.services, self.ask_time)
elif self.type == EPG_TYPE_SINGLE:
if SINGLE_CPP == 0:
l.recalcEntrySize()
def onSelectionChanged(self):
if self.type == EPG_TYPE_MULTI:
count = self["list"].getCurrentChangeCount()
- if self.asked_specific_time:
+ if self.ask_time != -1:
self.applyButtonState(0)
elif count > 1:
self.applyButtonState(3)
""" EPG - Opens an EPG list when the showEPGList action fires """
def __init__(self):
self.dlg_stack = [ ]
+ self.bouquetSel = None
self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
{
"showEventInfo": (self.openEventView, _("show EPG...")),
self.servicelist.setCurrentSelection(service) #select the service in servicelist
self.servicelist.zap()
- def openBouquetEPG(self, bouquet, withCallback=True):
- ptr=eEPGCache.getInstance()
+ def getBouquetServices(self, bouquet):
services = [ ]
servicelist = eServiceCenter.getInstance().list(bouquet)
if not servicelist is None:
if service.flags: #ignore non playable services
continue
services.append(ServiceReference(service))
+ return services
+
+ def openBouquetEPG(self, bouquet, withCallback=True):
+ services = self.getBouquetServices(bouquet)
if len(services):
self.epg_bouquet = bouquet
if withCallback:
- self.dlg_stack.append(self.session.openWithCallback(self.closed, EPGSelection, services, self.zapToService))
+ self.dlg_stack.append(self.session.openWithCallback(self.closed, EPGSelection, services, self.zapToService, None, self.changeBouquetCB))
+ else:
+ self.session.open(EPGSelection, services, self.zapToService, None, self.changeBouquetCB)
+
+ def changeBouquetCB(self, direction, epg):
+ if self.bouquetSel:
+ if direction > 0:
+ self.bouquetSel.down()
else:
- self.session.open(EPGSelection, services, self.zapToService)
+ self.bouquetSel.up()
+ bouquet = self.bouquetSel.getCurrent()
+ services = self.getBouquetServices(bouquet)
+ if len(services):
+ self.epg_bouquet = bouquet
+ epg.setServices(services)
def closed(self, ret=False):
- self.dlg_stack.pop()
+ closedScreen = self.dlg_stack.pop()
+ if self.bouquetSel and closedScreen == self.bouquetSel:
+ self.bouquetSel = None
if ret:
dlgs=len(self.dlg_stack)
assert dlgs>0
cnt = len(bouquets)
if cnt > 1: # show bouquet list
if withCallback:
- self.dlg_stack.append(self.session.openWithCallback(self.closed, BouquetSelector, bouquets, self.openBouquetEPG))
+ self.bouquetSel = self.session.openWithCallback(self.closed, BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
+ self.dlg_stack.append(self.bouquetSel)
else:
- self.session.open(BouquetSelector, bouquets, self.openBouquetEPG)
+ self.bouquetSel = self.session.open(BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
elif cnt == 1:
self.openBouquetEPG(bouquets[0][1], withCallback)