current_sel_flags = csel.getCurrentSelection().flags
inBouquetRootList = current_root and current_root.getPath().find('FROM BOUQUET "bouquets.') != -1 #FIXME HACK
inBouquet = csel.getMutableList() is not None
- haveBouquets = csel.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') != -1
+ haveBouquets = config.usage.multibouquet.value
if not csel.bouquet_mark_edit and not csel.movemode:
if not inBouquetRootList:
if (csel.getCurrentSelection().flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory:
if config.ParentalControl.configured.value:
- if parentalControl.getProtectionLevel(csel.getCurrentSelection()) == -1:
+ if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1:
menu.append((_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())))
else:
menu.append((_("remove from parental protection"), boundFunction(self.removeParentalProtection, csel.getCurrentSelection())))
else:
if haveBouquets:
if not inBouquet and current_sel_path.find("PROVIDERS") == -1:
- menu.append((_("copy to favourites"), self.copyCurrentToBouquetList))
+ menu.append((_("copy to bouquets"), self.copyCurrentToBouquetList))
if current_sel_path.find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
menu.append((_("remove all new found flags"), self.removeAllNewFoundFlags))
if inBouquet:
self.close()
def removeParentalProtection(self, service):
- self.session.openWithCallback(boundFunction(self.pinEntered, service.toCompareString()), PinInput, pinList = [config.ParentalControl.servicepin[0].value], title = _("Enter the service pin"), windowTitle = _("Change pin code"))
+ self.session.openWithCallback(boundFunction(self.pinEntered, service.toCompareString()), PinInput, pinList = [config.ParentalControl.servicepin[0].value], triesEntry = config.ParentalControl.retries.servicepin, title = _("Enter the service pin"), windowTitle = _("Change pin code"))
def pinEntered(self, service, result):
- if result[0]:
+ if result:
parentalControl.unProtectService(service)
self.close()
else:
self.session.openWithCallback(self.close, MessageBox, _("The pin code you entered is wrong."), MessageBox.TYPE_ERROR)
-
def addServiceToBouquetSelected(self):
bouquets = self.csel.getBouquetList()
self.bsel = self.session.openWithCallback(self.bouquetSelClosed, BouquetSelector, bouquets, self.addCurrentServiceToBouquet)
elif cnt == 1: # add to only one existing bouquet
self.addCurrentServiceToBouquet(bouquets[0][1])
- else: #no bouquets in root.. so assume only one favourite list is used
- self.addCurrentServiceToBouquet(self.csel.bouquet_root)
def bouquetSelClosed(self, recursive):
self.bsel = None
self.close()
def addCurrentServiceToBouquet(self, dest):
- self.csel.addCurrentServiceToBouquet(dest)
+ self.csel.addServiceToBouquet(dest)
if self.bsel is not None:
self.bsel.close(True)
else:
str = '1:7:2:0:0:0:0:0:0:0:(type == 2) FROM BOUQUET \"userbouquet.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(bName))
new_bouquet_ref = eServiceReference(str)
if not mutableBouquetList.addService(new_bouquet_ref):
- self.bouquetNumOffsetCache = { }
mutableBouquetList.flushChanges()
eDVBDB.getInstance().reloadBouquets()
mutableBouquet = serviceHandler.list(new_bouquet_ref).startEdit()
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()
else:
print "get mutable list for new created bouquet failed"
+ # do some voodoo to check if current_root is equal to bouquet_root
+ cur_root = self.getRoot();
+ str1 = cur_root.toString()
+ pos1 = str1.find("FROM BOUQUET")
+ pos2 = self.bouquet_rootstr.find("FROM BOUQUET")
+ if pos1 != -1 and pos2 != -1 and str1[pos1:] == self.bouquet_rootstr[pos2:]:
+ self.servicelist.addService(new_bouquet_ref)
else:
print "add", str, "to bouquets failed"
else:
refstr = self.getCurrentSelection().toString()
self.bouquetNumOffsetCache = { }
pos = refstr.find('FROM BOUQUET "')
+ filename = None
if pos != -1:
refstr = refstr[pos+14:]
pos = refstr.find('"')
filename = '/etc/enigma2/' + refstr[:pos] # FIXMEEE !!! HARDCODED /etc/enigma2
self.removeCurrentService()
try:
- remove(filename)
+ if filename is not None:
+ remove(filename)
except OSError:
print "error during remove of", filename
self.saved_title = self.instance.getTitle()
pos = self.saved_title.find(')')
new_title = self.saved_title[:pos+1]
- if self.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') != -1:
+ if config.usage.multibouquet.value:
new_title += ' ' + _("[bouquet edit]")
else:
new_title += ' ' + _("[favourite edit]")
mutableList.flushChanges() #FIXME dont flush on each single removed service
self.servicelist.removeCurrent()
- def addCurrentServiceToBouquet(self, dest):
+ def addServiceToBouquet(self, dest, service=None):
mutableList = self.getMutableList(dest)
if not mutableList is None:
- if not mutableList.addService(self.servicelist.getCurrent()):
+ if service is None: #use current selected service
+ service = self.servicelist.getCurrent()
+ if not mutableList.addService(service):
self.bouquetNumOffsetCache = { }
mutableList.flushChanges()
+ # do some voodoo to check if current_root is equal to dest
+ cur_root = self.getRoot();
+ str1 = cur_root.toString()
+ str2 = dest.toString()
+ pos1 = str1.find("FROM BOUQUET")
+ pos2 = str2.find("FROM BOUQUET")
+ if pos1 != -1 and pos2 != -1 and str1[pos1:] == str2[pos2:]:
+ self.servicelist.addService(service)
def toggleMoveMode(self):
if self.movemode:
MODE_TV = 0
MODE_RADIO = 1
+# this makes it much simple to implement a selectable radio or tv mode :)
+service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)'
+service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)'
+
class ChannelSelectionBase(Screen):
def __init__(self, session):
Screen.__init__(self, session)
- # this makes it much simple to implement a selectable radio or tv mode :)
- self.service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)'
- self.service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)'
-
self["key_red"] = Button(_("All"))
self["key_green"] = Button(_("Satellites"))
self["key_yellow"] = Button(_("Provider"))
return ref
def getBouquetNumOffset(self, bouquet):
- if self.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK
+ if not config.usage.multibouquet.value:
return 0
bouquet = self.appendDVBTypes(bouquet)
- try:
- return self.bouquetNumOffsetCache[bouquet.toString()]
- except:
- offsetCount = 0
+ str = bouquet.toString()
+ offsetCount = 0
+ if not self.bouquetNumOffsetCache.has_key(str):
serviceHandler = eServiceCenter.getInstance()
bouquetlist = serviceHandler.list(self.bouquet_root)
if not bouquetlist is None:
if serviceIterator.flags: #playable services have no flags
continue
offsetCount += 1
- return self.bouquetNumOffsetCache.get(bouquet.toString(), offsetCount)
+ return self.bouquetNumOffsetCache.get(str, offsetCount)
def recallBouquetMode(self):
if self.mode == MODE_TV:
- self.service_types = self.service_types_tv
+ self.service_types = service_types_tv
if config.usage.multibouquet.value:
self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
else:
self.bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'%(self.service_types)
else:
- self.service_types = self.service_types_radio
+ self.service_types = service_types_radio
if config.usage.multibouquet.value:
self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET "bouquets.radio" ORDER BY bouquet'
else:
n = ("%s (%d.%d" + h + ")") % (service_name, orbpos / 10, orbpos % 10)
service.setName(n)
self.servicelist.addService(service)
- self.servicelist.finishFill()
- if prev is not None:
- self.setCurrentSelection(prev)
+ self.servicelist.finishFill()
+ if prev is not None:
+ self.setCurrentSelection(prev)
def showProviders(self):
if not self.pathChangedDisabled:
self.servicelist.setCurrent(service)
def getBouquetList(self):
- serviceCount=0
bouquets = [ ]
serviceHandler = eServiceCenter.getInstance()
- list = serviceHandler.list(self.bouquet_root)
- if not list is None:
- while True:
- s = list.getNext()
- if not s.valid():
- break
- if ((s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory):
- info = serviceHandler.info(s)
- if not info is None:
- bouquets.append((info.getName(s), s))
- else:
- serviceCount += 1
- if len(bouquets) == 0 and serviceCount > 0:
- info = serviceHandler.info(self.bouquet_root)
- if not info is None:
- bouquets.append((info.getName(self.bouquet_root), self.bouquet_root))
+ if config.usage.multibouquet.value:
+ list = serviceHandler.list(self.bouquet_root)
+ if not list is None:
+ while True:
+ s = list.getNext()
+ if not s.valid():
+ break
+ if ((s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory):
+ info = serviceHandler.info(s)
+ if not info is None:
+ bouquets.append((info.getName(s), s))
+ return bouquets
+ else:
+ info = serviceHandler.info(self.bouquet_root)
+ if not info is None:
+ bouquets.append((info.getName(self.bouquet_root), self.bouquet_root))
return bouquets
return None
def setModeRadio(self):
if self.revertMode is None and config.servicelist.lastmode.value == "tv":
self.revertMode = MODE_TV
- if config.usage.e1like_radio_mode.value == "yes":
+ if config.usage.e1like_radio_mode.value:
self.history = self.history_radio
self.lastservice = config.radio.lastservice
self.lastroot = config.radio.lastroot
self.setMode()
def __onCreate(self):
- if config.usage.e1like_radio_mode.value == "yes":
+ if config.usage.e1like_radio_mode.value:
if config.servicelist.lastmode.value == "tv":
self.setModeTv()
else:
self.revertMode = None
self.close(None)
-from Screens.InfoBarGenerics import InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord
+from Screens.InfoBarGenerics import InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarRadioText
class RadioInfoBar(Screen, InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord):
def __init__(self, session):
InfoBarInstantRecord.__init__(self)
self["CurrentTime"] = Clock()
-class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG):
+class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG, InfoBarRadioText):
ALLOW_SUSPEND = True
ChannelSelectionBase.__init__(self, session)
ChannelSelectionEdit.__init__(self)
ChannelSelectionEPG.__init__(self)
+ InfoBarRadioText.__init__(self)
config.radio = ConfigSubsection();
config.radio.lastservice = ConfigText()