X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/16d321e496810ea779f2f3bf60be9870cd0330bd..5c644fbbceaa79a49501975de16b090771edee29:/lib/python/Screens/ChannelSelection.py diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index b98df0f3..45de7abd 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -7,6 +7,7 @@ from enigma import eServiceReference, eEPGCache, eEPGCachePtr, eServiceCenter, e from Components.config import config, configElement, ConfigSubsection, configText from Screens.FixedMenu import FixedMenu from Tools.NumericalTextInput import NumericalTextInput +from Components.NimManager import nimmanager import xml.dom.minidom @@ -31,10 +32,14 @@ class ChannelContextMenu(FixedMenu): inBouquetRootList = csel.servicelist.getRoot().getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK inBouquet = csel.getMutableList() is not None + haveBouquets = csel.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') != -1 if not csel.bouquet_mark_edit and not csel.movemode and not inBouquetRootList: - if (csel.getCurrentSelection().type & eServiceReference.flagDirectory) != eServiceReference.flagDirectory: - menu.append((_("add service to bouquet"), self.addServiceToBouquetSelected)) + if (csel.getCurrentSelection().flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory: + if haveBouquets: + menu.append((_("add service to bouquet"), self.addServiceToBouquetSelected)) + else: + menu.append((_("add service to favourites"), self.addServiceToBouquetSelected)) if inBouquet: menu.append((_("remove service"), self.removeCurrentService)) @@ -43,12 +48,19 @@ class ChannelContextMenu(FixedMenu): if not csel.movemode: menu.append((_("enable move mode"), self.toggleMoveMode)) if not inBouquetRootList: - menu.append((_("enable bouquet edit"), self.bouquetMarkStart)) + if haveBouquets: + menu.append((_("enable bouquet edit"), self.bouquetMarkStart)) + else: + menu.append((_("enable favourite edit"), self.bouquetMarkStart)) else: menu.append((_("disable move mode"), self.toggleMoveMode)) elif not inBouquetRootList: - menu.append((_("end bouquet edit"), self.bouquetMarkEnd)) - menu.append((_("abort bouquet edit"), self.bouquetMarkAbort)) + if haveBouquets: + menu.append((_("end bouquet edit"), self.bouquetMarkEnd)) + menu.append((_("abort bouquet edit"), self.bouquetMarkAbort)) + else: + menu.append((_("end favourites edit"), self.bouquetMarkEnd)) + menu.append((_("abort favourites edit"), self.bouquetMarkAbort)) menu.append((_("back"), self.close)) @@ -107,6 +119,8 @@ class ChannelSelectionEdit: self.bouquet_mark_edit = False self.mutableList = None self.__marked = [ ] + self.saved_title = None + self.saved_root = None def getMutableList(self, root=eServiceReference()): if not self.mutableList is None: @@ -125,10 +139,19 @@ class ChannelSelectionEdit: # add all services from the current list to internal marked set in listboxservicecontent self.bouquetRoot = self.servicelist.getRoot() self.clearMarks() # this clears the internal marked set in the listboxservicecontent + self.saved_title = self.instance.getTitle() + new_title = self.saved_title + if self.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') != -1: + new_title += ' ' + _("[bouquet edit]") + else: + new_title += ' ' + _("[favourite edit]") + self.instance.setTitle(new_title) self.bouquet_mark_edit = True self.__marked = self.servicelist.getRootServices() for x in self.__marked: self.servicelist.addMarked(eServiceReference(x)) + self.saved_root = self.getRoot() + self.showAllServices() def endMarkedEdit(self, abort): if not abort and self.mutableList is not None: @@ -145,13 +168,14 @@ class ChannelSelectionEdit: self.mutableList.addService(eServiceReference(x)) if changed: self.mutableList.flushChanges() - self.setRoot(self.bouquetRoot) - #self.showFavourites() self.__marked = [] self.clearMarks() self.bouquet_mark_edit = False self.bouquetRoot = None self.mutableList = None + self.instance.setTitle(self.saved_title) + self.saved_title = None + self.setRoot(self.saved_root) def clearMarks(self): self.servicelist.clearMarks() @@ -168,8 +192,13 @@ class ChannelSelectionEdit: mutableList = self.getMutableList() if ref.valid() and mutableList is not None: if not mutableList.removeService(ref): + 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.servicelist.getRoot()) + self.servicelist.moveToIndex(currentIndex) def addCurrentServiceToBouquet(self, dest): mutableList = self.getMutableList(dest) @@ -185,9 +214,15 @@ class ChannelSelectionEdit: self.movemode = False self.mutableList.flushChanges() # FIXME add check if changes was made self.mutableList = None + self.instance.setTitle(self.saved_title) + self.saved_title = None else: self.mutableList = self.getMutableList() self.movemode = True + self.saved_title = self.instance.getTitle() + new_title = self.saved_title + new_title += ' ' + _("[move mode]"); + self.instance.setTitle(new_title); def handleEditCancel(self): if self.movemode: #movemode active? @@ -256,14 +291,14 @@ class ChannelSelectionBase(Screen): offsetCount += 1 return offsetCount - def setRootBase(self, root): + def setRootBase(self, root, justSet=False): inBouquetRootList = root.getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK if not inBouquetRootList and (root.getPath().find('FROM BOUQUET') != -1): self.servicelist.setMode(ServiceList.MODE_FAVOURITES) self.servicelist.setNumberOffset(self.getBouquetNumOffset(root)) else: self.servicelist.setMode(ServiceList.MODE_NORMAL) - self.servicelist.setRoot(root) + self.servicelist.setRoot(root, justSet) def moveUp(self): self.servicelist.moveUp() @@ -277,7 +312,29 @@ class ChannelSelectionBase(Screen): def showSatellites(self): ref = eServiceReference('%s FROM SATELLITES ORDER BY satellitePosition'%(self.service_types)) - self.setRoot(ref) + self.setRoot(ref, True) + serviceHandler = eServiceCenter.getInstance() + servicelist = serviceHandler.list(ref) + if not servicelist is None: + while True: + service = servicelist.getNext() + if not service.valid(): #check if end of list + break + orbpos = service.getData(4) >> 16 + if service.getPath().find("FROM PROVIDER") != -1: + service_name = _("Providers") + else: + service_name = _("Services") + try: + service_name += str(' - %s'%(nimmanager.getSatDescription(orbpos))) + service.setName(service_name) # why we need this cast? + except: + if orbpos > 1800: # west + service.setName("%s (%3.1f" + _("W") + ")" %(str, (0 - (orbpos - 3600)) / 10.0)) + else: + service.setName("%s (%3.1f" + _("E") + ")" % (str, orbpos / 10.0)) + self.servicelist.addService(service) + self.servicelist.finishFill() def showProviders(self): ref = eServiceReference('%s FROM PROVIDERS ORDER BY name'%(self.service_types)) @@ -398,9 +455,9 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit): self.zap() self.close(ref) - def setRoot(self, root): + def setRoot(self, root, justSet=False): if not self.movemode: - self.setRootBase(root) + self.setRootBase(root, justSet) #called from infoBar and channelSelected def zap(self):