X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a4da9cccc2575c4bf299bde9594dad3e049ddf6a..4d1d7ab4619beef6a1b5ef5990fb5942da9358d8:/lib/python/Screens/ChannelSelection.py diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index fa2f9da5..5e35a7e1 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -5,17 +5,63 @@ from Components.ActionMap import ActionMap 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.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]) @@ -23,7 +69,9 @@ class ChannelSelection(Screen): 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,69 @@ class ChannelSelection(Screen): { "cancel": self.close, "ok": self.channelSelected, - "mark": self.doMark + "mark": self.doMark, + "contextMenu": self.doContext, + "showFavourites": self.showFavourites }) self["actions"].csel = self + # marked edit mode + + def startMarkedEdit(self): + self.bouquet_mark_edit = True + self.clearMarks() + + # TODO + marked = self.__marked + + l = self["list"] + for x in marked: + print "mark: " + str(x) + 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()) + print "current: " + self["list"].getCurrent().toString() 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): + self.movemode = mode + + 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)