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"
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.setRoot(self.bouquet_root)
+ self.servicelist.addService(new_bouquet_ref)
else:
print "add", str, "to bouquets failed"
else:
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:
return ref
def getBouquetNumOffset(self, bouquet):
- if config.usage.multibouquet.value:
+ 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:
bouquet = self.servicelist.bouquet_root
service = None
serviceHandler = eServiceCenter.getInstance()
- if bouquet.toString().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK
+ if not config.usage.multibouquet.value:
service, number = self.searchNumberHelper(serviceHandler, number, bouquet)
else:
bouquetlist = serviceHandler.list(bouquet)
self.session.open(MessageBox, _("Service has been added to the selected bouquet."), MessageBox.TYPE_INFO)
def addSubserviceToBouquet(self, dest):
- serviceHandler = eServiceCenter.getInstance()
- list = dest and serviceHandler.list(dest)
- mutableList = dest and list and list.startEdit()
- if mutableList:
- if not mutableList.addService(self.selectedSubservice[1]):
- mutableList.flushChanges()
- # do some voodoo to check if the subservice is added to the
- # current selected bouquet in channellist
- cur_root = self.servicelist.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.setMode()
+ self.servicelist.addServiceToBouquet(dest, self.selectedSubservice[1])
if self.bsel:
self.bsel.close(True)
else: