X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a4da9cccc2575c4bf299bde9594dad3e049ddf6a..8557c3427743ae6bde13fca80e84d3a4d3bde9bb:/lib/python/Screens/ChannelSelection.py diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index fa2f9da5..6abb52d9 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -2,28 +2,76 @@ from Screen import Screen from Components.Button import Button from Components.ServiceList import ServiceList from Components.ActionMap import ActionMap - +from EpgSelection import EPGSelection from enigma import eServiceReference +from Screens.FixedMenu import FixedMenu + +import xml.dom.minidom + +class ChannelContextMenu(FixedMenu): + def __init__(self, session, csel): + self.csel = csel + + menu = [("back", self.close)] + + if csel.movemode: + menu.append(("disable move mode", self.moveMode)) + else: + menu.append(("enable move mode", self.moveMode)) + + if csel.bouquet_mark_edit: + menu.append(("end bouquet edit", self.bouquetMarkEnd)) + menu.append(("abort bouquet edit", self.bouquetMarkAbort)) + else: + menu.append(("edit bouquet...", self.bouquetMarkStart)) + + FixedMenu.__init__(self, session, "Channel Selection", menu) + self.skinName = "Menu" + + def moveMode(self): + self.csel.setMoveMode(self.csel.movemode) + self.close() + + def bouquetMarkStart(self): + self.csel.startMarkedEdit() + self.close() + + def bouquetMarkEnd(self): + self.csel.endMarkedEdit(abort=False) + self.close() + + def bouquetMarkAbort(self): + self.csel.endMarkedEdit(abort=True) + self.close() + class ChannelSelection(Screen): def __init__(self, session): Screen.__init__(self, session) - - self["key_red"] = Button("red") - self["key_green"] = Button("green") - self["key_yellow"] = Button("yellow") - self["key_blue"] = Button("blue") + + self.entry_marked = False + self.movemode = False + self.bouquet_mark_edit = False + + ## FIXME + self.__marked = [ ] + + self["key_red"] = Button("All") + self["key_green"] = Button("Provider") + self["key_yellow"] = Button("Satellite") + self["key_blue"] = Button("Favourites") self["list"] = ServiceList() - self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(provider=="ARD") && (type == 1)""")) + self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)""")) #self["okbutton"] = Button("ok", [self.channelSelected]) class ChannelActionMap(ActionMap): def action(self, contexts, action): if action[:7] == "bouquet": - print "setting root to " + action[8:] - self.csel["list"].setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:" + action[8:])) + l = self.csel["list"] + l.setMode(l.MODE_NORMAL) + l.setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:" + action[8:])) else: ActionMap.action(self, contexts, action) @@ -31,27 +79,86 @@ class ChannelSelection(Screen): { "cancel": self.close, "ok": self.channelSelected, - "mark": self.doMark + "mark": self.doMark, + "contextMenu": self.doContext, + "showFavourites": self.showFavourites, + "showEPGList": self.showEPGList }) self["actions"].csel = self + def showEPGList(self): + self.session.open(EPGSelection, self["list"].getCurrent()) + + # marked edit mode + def startMarkedEdit(self): + self.bouquet_mark_edit = True + self.clearMarks() + + # TODO + marked = self.__marked + + l = self["list"] + for x in marked: + l.addMarked(x) + + def endMarkedEdit(self, abort): + self.bouquet_mark_edit = True + new_marked = self["list"].getMarked() + self.__marked = new_marked + self.clearMarks() + self.bouquet_mark_edit = False + + def clearMarks(self): + self["list"].clearMarks() + def doMark(self): + if not self.bouquet_mark_edit: + return + ref = self["list"].getCurrent() if self["list"].isMarked(ref): self["list"].removeMarked(ref) else: self["list"].addMarked(ref) - + + # ... def channelSelected(self): - self.session.nav.playService(self["list"].getCurrent()) - self.close() + ref = self["list"].getCurrent() + if self.movemode: + if self.entry_marked: + self["list"].setCurrentMarked(False) + self.entry_marked = False + else: + self["list"].setCurrentMarked(True) + self.entry_marked = True + elif (ref.flags & 7) == 7: + l = self["list"] + l.setMode(l.MODE_NORMAL) + l.setRoot(ref) + else: + self.session.nav.playService(ref) + self.close() #called from infoBar - def zapUp(self): - self["list"].moveUp() + def zap(self): self.session.nav.playService(self["list"].getCurrent()) - def zapDown(self): + def moveUp(self): + self["list"].moveUp() + + def moveDown(self): self["list"].moveDown() - self.session.nav.playService(self["list"].getCurrent()) + def doContext(self): + self.session.open(ChannelContextMenu, self) + + def setMoveMode(self, mode): + if mode: + self.movemode = False + else: + self.movemode = True + + def showFavourites(self): + l = self["list" ] + l.setRoot(eServiceReference('1:0:1:0:0:0:0:0:0:0:(provider == "fav")')) + l.setMode(l.MODE_FAVOURITES)