X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c64e82c8bad3393edd88becd31ec1047755f7836..d26a119a33db3ad39b4930712cef2b15cbaf0f8c:/lib/python/Screens/ChannelSelection.py diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 8b3fe93c..d8aa39d4 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -67,17 +67,17 @@ class ChannelContextMenu(Screen): menu.append((_("add service to favourites"), self.addServiceToBouquetSelected)) elif haveBouquets: if not inBouquet and csel.getCurrentSelection().getPath().find("PROVIDERS") == -1: - menu.append((_("copy to favourites"), csel.copyCurrentToBouquetList)) + menu.append((_("copy to favourites"), self.copyCurrentToBouquetList)) if inBouquet: menu.append((_("remove service"), self.removeCurrentService)) elif haveBouquets: - menu.append((_("remove bouquet"), csel.removeBouquet)) + menu.append((_("remove bouquet"), self.removeBouquet)) if inBouquet: # current list is editable? if not csel.bouquet_mark_edit: if not csel.movemode: menu.append((_("enable move mode"), self.toggleMoveMode)) - menu.append((_("add bouquet"), self.showBouquetInputBox)) + menu.append((_("add bouquet..."), self.showBouquetInputBox)) if not inBouquetRootList: if haveBouquets: menu.append((_("enable bouquet edit"), self.bouquetMarkStart)) @@ -103,7 +103,7 @@ class ChannelContextMenu(Screen): self.close(False) def showBouquetInputBox(self): - self.session.openWithCallback(self.bouquetInputCallback, InputBox, title=_("Please enter a name for the new bouquet"), text="neues_bouquet", maxSize=False, type=Input.TEXT) + self.session.openWithCallback(self.bouquetInputCallback, InputBox, title=_("Please enter a name for the new bouquet"), text="bouquetname", maxSize=False, type=Input.TEXT) def bouquetInputCallback(self, bouquet): if bouquet is not None: @@ -187,13 +187,16 @@ class ChannelSelectionEdit: def __init__(self, csel, contexts = [ ], actions = { }, prio=0): ActionMap.__init__(self, contexts, actions, prio) self.csel = csel + def action(self, contexts, action): if action == "cancel": self.csel.handleEditCancel() + return 0 # fall-trough elif action == "ok": - pass # avoid typo warning... + return 0 # fall-trough else: - ActionMap.action(self, contexts, action) + return ActionMap.action(self, contexts, action) + self["ChannelSelectEditActions"] = ChannelSelectionEditActionMap(self, ["ChannelSelectEditActions", "OkCancelActions"], { "contextMenu": self.doContext, @@ -239,6 +242,7 @@ class ChannelSelectionEdit: if mutableBouquet: mutableBouquet.setListName(providerName) mutableBouquet.flushChanges() + self.setRoot(self.getRoot()) else: print "get mutable list for new created bouquet failed" else: @@ -338,7 +342,10 @@ class ChannelSelectionEdit: self.mutableList = None self.setTitle(self.saved_title) self.saved_title = None - self.servicePath = self.savedPath[:] + # self.servicePath is just a reference to servicePathTv or Radio... + # so we never ever do use the asignment operator in self.servicePath + del self.servicePath[:] # remove all elements + self.servicePath += self.savedPath # add saved elements del self.savedPath self.setRoot(self.servicePath[len(self.servicePath)-1]) @@ -358,13 +365,8 @@ class ChannelSelectionEdit: if ref.valid() and mutableList is not None: if not mutableList.removeService(ref): self.bouquetNumOffsetCache = { } - currentIndex = self.servicelist.getCurrentIndex() - self.servicelist.moveDown() - if self.servicelist.getCurrentIndex() == currentIndex: - currentIndex -= 1 mutableList.flushChanges() #FIXME dont flush on each single removed service self.setRoot(self.getRoot()) - self.servicelist.moveToIndex(currentIndex) def addCurrentServiceToBouquet(self, dest): mutableList = self.getMutableList(dest) @@ -438,6 +440,8 @@ class ChannelSelectionBase(Screen): self.servicePathTV = [ ] self.servicePathRadio = [ ] self.servicePath = None + + self.mode = MODE_TV self.pathChangedDisabled = False @@ -460,7 +464,7 @@ class ChannelSelectionBase(Screen): "7": self.keyNumberGlobal, "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, - "0": self.keyNumberGlobal + "0": self.keyNumber0 }) def appendDVBTypes(self, ref): @@ -615,9 +619,9 @@ class ChannelSelectionBase(Screen): length = len(self.servicePath) if length: current = self.servicePath[length-1] - self.setRoot(current, justSet) - if not justSet: - self.setCurrentSelection(prev) + self.setRoot(current, justSet) + if not justSet: + self.setCurrentSelection(prev) return prev def isBasePathEqual(self, ref): @@ -785,6 +789,27 @@ class ChannelSelectionBase(Screen): return bouquets return None + def keyNumber0(self, num): + if len(self.servicePath) > 1: + self.keyGoUp() + else: + self.keyNumberGlobal(num) + + def keyGoUp(self): + if len(self.servicePath) > 1: + if self.isBasePathEqual(self.bouquet_root): + self.showFavourites() + else: + ref = eServiceReference('%s FROM SATELLITES ORDER BY satellitePosition'%(self.service_types)) + if self.isBasePathEqual(ref): + self.showSatellites() + else: + ref = eServiceReference('%s FROM PROVIDERS ORDER BY name'%(self.service_types)) + if self.isBasePathEqual(ref): + self.showProviders() + else: + self.showAllServices() + HISTORYSIZE = 20 class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG): @@ -797,8 +822,6 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect config.tv = ConfigSubsection(); config.tv.lastservice = configElement("config.tv.lastservice", configText, "", 0); config.tv.lastroot = configElement("config.tv.lastroot", configText, "", 0); - config.tv.prevservice = configElement("config.tv.prevservice", configText, "", 0); - config.tv.prevroot = configElement("config.tv.prevroot", configText, "", 0); self["actions"] = ActionMap(["OkCancelActions"], { @@ -878,7 +901,8 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect def setHistoryPath(self): path = self.history[self.history_pos][:] ref = path.pop() - self.servicePath = path + del self.servicePath[:] + self.servicePath += path self.saveRoot() plen = len(path) root = path[plen-1] @@ -893,9 +917,6 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect for i in self.servicePathTV: path += i.toString() path += ';' - if config.tv.prevroot.value != config.tv.lastroot.value: - config.tv.prevroot.value = config.tv.lastroot.value - config.tv.prevroot.save() if len(path) and path != config.tv.lastroot.value: config.tv.lastroot.value = path config.tv.lastroot.save() @@ -933,29 +954,21 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect else: refstr = "" if refstr != config.tv.lastservice.value: - config.tv.prevservice.value = config.tv.lastservice.value - config.tv.prevservice.save() config.tv.lastservice.value = refstr config.tv.lastservice.save() def recallPrevService(self): - if len(config.tv.prevservice.value) and len(config.tv.prevroot.value): - if config.tv.lastroot.value != config.tv.prevroot.value: - tmp = config.tv.lastroot.value - config.tv.lastroot.value = config.tv.prevroot.value - config.tv.lastroot.save() - config.tv.prevroot.value = tmp - config.tv.prevroot.save() - self.restoreRoot() - if config.tv.lastservice.value != config.tv.prevservice.value: - tmp = config.tv.lastservice.value - config.tv.lastservice.value = config.tv.prevservice.value - config.tv.lastservice.save() - config.tv.prevservice.value = tmp - config.tv.prevservice.save() - lastservice=eServiceReference(config.tv.lastservice.value) - self.session.nav.playService(lastservice) - self.setCurrentSelection(lastservice) + hlen = len(self.history) + if hlen > 1: + if self.history_pos == hlen-1: + tmp = self.history[self.history_pos] + self.history[self.history_pos] = self.history[self.history_pos-1] + self.history[self.history_pos-1] = tmp + else: + tmp = self.history[self.history_pos+1] + self.history[self.history_pos+1] = self.history[self.history_pos] + self.history[self.history_pos] = tmp + self.setHistoryPath() def cancel(self): self.close(None)