diff options
Diffstat (limited to 'lib/python')
| -rw-r--r-- | lib/python/Components/ServiceList.py | 19 | ||||
| -rw-r--r-- | lib/python/Screens/ChannelSelection.py | 65 | ||||
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 35 |
3 files changed, 96 insertions, 23 deletions
diff --git a/lib/python/Components/ServiceList.py b/lib/python/Components/ServiceList.py index 8525ade3..d255b8e0 100644 --- a/lib/python/Components/ServiceList.py +++ b/lib/python/Components/ServiceList.py @@ -19,6 +19,10 @@ class ServiceList(HTMLComponent, GUIComponent): if pic: self.l.setPixmap(self.l.picFolder, pic) + pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "marker-fs8.png")) + if pic: + self.l.setPixmap(self.l.picMarker, pic) + pic = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "ico_dvb_s-fs8.png")) if pic: self.l.setPixmap(self.l.picDVB_S, pic) @@ -66,6 +70,14 @@ class ServiceList(HTMLComponent, GUIComponent): self.instance.moveSelectionTo(index) print "Moving to character " + str(char) + def moveToNextMarker(self): + idx = self.l.getNextMarkerPos() + self.instance.moveSelectionTo(idx) + + def moveToPrevMarker(self): + idx = self.l.getPrevMarkerPos() + self.instance.moveSelectionTo(idx) + def moveToIndex(self, index): self.instance.moveSelectionTo(index) @@ -107,8 +119,11 @@ class ServiceList(HTMLComponent, GUIComponent): if not justSet: self.l.sort() - def addService(self, service): - self.l.addService(service) + def removeCurrent(self): + self.l.removeCurrent() + + def addService(self, service, beforeCurrent=False): + self.l.addService(service, beforeCurrent) def finishFill(self): self.l.FillFinished() diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 84e99516..90c12a5d 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -86,18 +86,17 @@ class ChannelContextMenu(Screen): if current_sel_path.find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1: menu.append((_("remove all new found flags"), self.removeAllNewFoundFlags)) if inBouquet: - menu.append((_("remove service"), self.removeCurrentService)) + menu.append((_("remove entry"), self.removeCurrentService)) if current_root.getPath().find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1: menu.append((_("remove new found flag"), self.removeNewFoundFlag)) - - if haveBouquets: - menu.append((_("add bouquet..."), self.showBouquetInputBox)) - if inBouquetRootList: - menu.append((_("remove bouquet"), self.removeBouquet)) + else: + menu.append((_("add bouquet"), self.showBouquetInputBox)) + menu.append((_("remove entry"), self.removeBouquet)) if inBouquet: # current list is editable? if not csel.bouquet_mark_edit: if not csel.movemode: + menu.append((_("add marker"), self.showMarkerInputBox)) menu.append((_("enable move mode"), self.toggleMoveMode)) if not inBouquetRootList: if haveBouquets: @@ -128,7 +127,8 @@ class ChannelContextMenu(Screen): def bouquetInputCallback(self, bouquet): if bouquet is not None: - self.csel.addBouquet(bouquet, None, True) + self.csel.addBouquet(bouquet, None) + self.close() def addServiceToBouquetSelected(self): bouquets = self.csel.getBouquetList() @@ -156,6 +156,14 @@ class ChannelContextMenu(Screen): self.csel.removeBouquet() self.close() + def showMarkerInputBox(self): + self.session.openWithCallback(self.markerInputCallback, InputBox, title=_("Please enter a name for the new marker"), text="markername", maxSize=False, type=Input.TEXT) + + def markerInputCallback(self, marker): + if marker is not None: + self.csel.addMarker(marker) + self.close() + def addCurrentServiceToBouquet(self, dest): self.csel.addCurrentServiceToBouquet(dest) if self.bsel is not None: @@ -263,7 +271,25 @@ class ChannelSelectionEdit: name += '_' return name - def addBouquet(self, bName, services, refresh=False): + def addMarker(self, name): + current = self.servicelist.getCurrent() + mutableList = self.getMutableList() + cnt = 0 + while mutableList: + str = '1:64:%d:0:0:0:0:0:0:0::%s'%(cnt, name) + ref = eServiceReference(str) + if current and current.valid(): + if not mutableList.addService(ref, current): + self.servicelist.addService(ref, True) + mutableList.flushChanges() + break + elif not mutableList.addService(ref): + self.servicelist.addService(ref, True) + mutableList.flushChanges() + break + cnt+=1 + + def addBouquet(self, bName, services): serviceHandler = eServiceCenter.getInstance() mutableBouquetList = serviceHandler.list(self.bouquet_root).startEdit() if mutableBouquetList: @@ -285,9 +311,11 @@ class ChannelSelectionEdit: for service in services: if mutableBouquet.addService(service): print "add", service.toString(), "to new bouquet failed" + else: + current = self.servicelist.getCurrent() + if current and current.toString() == self.bouquet_rootstr: + self.servicelist.addService(service, True) mutableBouquet.flushChanges() - if refresh: - self.setRoot(self.getRoot()) else: print "get mutable list for new created bouquet failed" else: @@ -316,7 +344,6 @@ class ChannelSelectionEdit: remove(filename) except OSError: print "error during remove of", filename - eDVBDB.getInstance().reloadBouquets() # multiple marked entry stuff ( edit mode, later multiepg selection ) def startMarkedEdit(self): @@ -384,7 +411,7 @@ class ChannelSelectionEdit: if not mutableList.removeService(ref): self.bouquetNumOffsetCache = { } mutableList.flushChanges() #FIXME dont flush on each single removed service - self.setRoot(self.getRoot()) + self.servicelist.removeCurrent() def addCurrentServiceToBouquet(self, dest): mutableList = self.getMutableList(dest) @@ -472,6 +499,8 @@ class ChannelSelectionBase(Screen): "showSatellites": self.showSatellites, "nextBouquet": self.nextBouquet, "prevBouquet": self.prevBouquet, + "nextMarker": self.nextMarker, + "prevMarker": self.prevMarker, "1": self.keyNumberGlobal, "2": self.keyNumberGlobal, "3": self.keyNumberGlobal, @@ -834,6 +863,12 @@ class ChannelSelectionBase(Screen): else: self.showAllServices() + def nextMarker(self): + self.servicelist.moveToNextMarker() + + def prevMarker(self): + self.servicelist.moveToPrevMarker() + HISTORYSIZE = 20 #config for lastservice @@ -930,7 +965,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect self.enterPath(ref) elif self.bouquet_mark_edit: self.doMark() - else: + elif not (ref.flags & 64): # no marker self.zap() self.close(ref) @@ -1156,7 +1191,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS self.enterPath(ref) elif self.bouquet_mark_edit: self.doMark() - else: + elif not (ref.flags & 64): # no marker playingref = self.session.nav.getCurrentlyPlayingServiceReference() if playingref is None or playingref != ref: self.session.nav.playService(ref) @@ -1194,7 +1229,7 @@ class SimpleChannelSelection(ChannelSelectionBase): ref = self.getCurrentSelection() if (ref.flags & 7) == 7: self.enterPath(ref) - else: + elif not (ref.flags & 64): ref = self.getCurrentSelection() self.close(ref) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 4f0e76b1..4c06661a 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -299,16 +299,39 @@ class InfoBarChannelSelection: self.session.execDialog(self.servicelist) def zapUp(self): - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": - if self.servicelist.inBouquet() and self.servicelist.atBegin(): - self.servicelist.prevBouquet() - self.servicelist.moveUp() + if self.servicelist.inBouquet(): + prev = self.servicelist.getCurrentSelection() + if prev: + prev = prev.toString() + while True: + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": + if self.servicelist.atBegin(): + self.servicelist.prevBouquet() + self.servicelist.moveUp() + cur = self.servicelist.getCurrentSelection() + if not cur or (not (cur.flags & 64)) or cur.toString() == prev: + break + else: + self.servicelist.moveUp() self.servicelist.zap() self.doShow() def zapDown(self): - if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.inBouquet() and self.servicelist.atEnd(): - self.servicelist.nextBouquet() + if self.servicelist.inBouquet(): + prev = self.servicelist.getCurrentSelection() + if prev: + prev = prev.toString() + while True: + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": + if self.servicelist.atEnd(): + self.servicelist.nextBouquet() + else: + self.servicelist.moveDown() + else: + self.servicelist.moveDown() + cur = self.servicelist.getCurrentSelection() + if not cur or (not (cur.flags & 64)) or cur.toString() == prev: + break else: self.servicelist.moveDown() self.servicelist.zap() |
