import xml.dom.minidom
class BouquetSelector(Screen):
- def __init__(self, session, bouquets, selectedFunc):
+ def __init__(self, session, bouquets, selectedFunc, enableWrapAround=False):
Screen.__init__(self, session)
self.selectedFunc=selectedFunc
entrys = [ ]
for x in bouquets:
entrys.append((x[0], x[1]))
- self["menu"] = MenuList(entrys)
+ self["menu"] = MenuList(entrys, enableWrapAround)
+
+ def getCurrent(self):
+ cur = self["menu"].getCurrent()
+ return cur and cur[1]
def okbuttonClick(self):
- self.selectedFunc(self["menu"].getCurrent()[1])
+ self.selectedFunc(self.getCurrent())
+
+ def up(self):
+ self["menu"].up()
+
+ def down(self):
+ self["menu"].down()
def cancelClick(self):
self.close(False)
class ChannelContextMenu(Screen):
-
def __init__(self, session, csel):
Screen.__init__(self, session)
self.csel = csel
def bouquetInputCallback(self, bouquet):
if bouquet is not None:
- self.csel.addBouquet(bouquet)
+ self.csel.addBouquet(bouquet, True)
def addServiceToBouquetSelected(self):
bouquets = self.csel.getBouquetList()
else:
name += '_'
return name
-
- def addBouquet(self, providerName):
+
+ def addBouquet(self, bName, services, refresh=False):
serviceHandler = eServiceCenter.getInstance()
mutableBouquetList = serviceHandler.list(self.bouquet_root).startEdit()
if mutableBouquetList:
if self.mode == MODE_TV:
- providerName += " (TV)"
- str = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET \"userbouquet.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(providerName))
+ bName += " (TV)"
+ str = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET \"userbouquet.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(bName))
else:
- providerName += " (Radio)"
- str = '1:7:2:0:0:0:0:0:0:0:(type == 2) FROM BOUQUET \"userbouquet.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(providerName))
+ bName += " (Radio)"
+ 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 = { }
eDVBDB.getInstance().reloadBouquets()
mutableBouquet = serviceHandler.list(new_bouquet_ref).startEdit()
if mutableBouquet:
- mutableBouquet.setListName(providerName)
+ mutableBouquet.setListName(bName)
+ if services is not None:
+ for service in services:
+ if mutableBouquet.addService(service):
+ print "add", service.toString(), "to new bouquet failed"
mutableBouquet.flushChanges()
- self.setRoot(self.getRoot())
+ if refresh:
+ self.setRoot(self.getRoot())
else:
print "get mutable list for new created bouquet failed"
else:
def copyCurrentToBouquetList(self):
provider = ServiceReference(self.getCurrentSelection())
+ providerName = provider.getServiceName()
serviceHandler = eServiceCenter.getInstance()
- mutableBouquetList = serviceHandler.list(self.bouquet_root).startEdit()
- if mutableBouquetList:
- providerName = provider.getServiceName()
- if self.mode == MODE_TV:
- str = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET \"userbouquet.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(providerName))
- else:
- str = '1:7:2:0:0:0:0:0:0:0:(type == 2) FROM BOUQUET \"userbouquet.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(providerName))
- 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()
- if mutableBouquet:
- mutableBouquet.setListName(providerName)
- list = [ ]
- services = serviceHandler.list(provider.ref)
- if not services is None:
- if not services.getContent(list, True):
- for service in list:
- if mutableBouquet.addService(service):
- print "add", service.toString(), "to new bouquet failed"
- mutableBouquet.flushChanges()
- else:
- print "getContent failed"
- else:
- print "list provider", providerName, "failed"
- else:
- print "get mutable list for new created bouquet failed"
- else:
- print "add", str, "to bouquets failed"
- else:
- print "bouquetlist is not editable"
+ services = serviceHandler.list(provider.ref)
+ self.addBouquet(providerName, services and services.getContent('R', True))
def removeBouquet(self):
refstr = self.getCurrentSelection().toString()
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)'
+ self.service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195)'
self.service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)'
self["key_red"] = Button(_("All"))
service = servicelist.getNext()
if not service.valid(): #check if end of list
break
- orbpos = service.getData(4) >> 16
+ orbpos = service.getUnsignedData(4) >> 16
if service.getPath().find("FROM PROVIDER") != -1:
service_name = _("Providers")
else:
service_name += str(' - %s'%(nimmanager.getSatDescription(orbpos)))
service.setName(service_name) # why we need this cast?
except:
- if orbpos > 1800: # west
- orbpos = 3600 - orbpos
- h = _("W")
+ if orbpos == 0xFFFF: #Cable
+ n = ("%s (%s)") % (service_name, _("Cable"))
+ elif orbpos == 0xEEEE: #Terrestrial
+ n = ("%s (%s)") % (service_name, _("Terrestrial"))
else:
- h = _("E")
- n = ("%s (%d.%d" + h + ")") % (service_name, orbpos / 10, orbpos % 10)
+ if orbpos > 1800: # west
+ orbpos = 3600 - orbpos
+ h = _("W")
+ else:
+ h = _("E")
+ n = ("%s (%d.%d" + h + ")") % (service_name, orbpos / 10, orbpos % 10)
service.setName(n)
self.servicelist.addService(service)
self.servicelist.finishFill()