more changes for service groups (replacement for zapping alternatives
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 2e11eb578cb974cb3e9bbed0af318645b4c76f1b..ed8149e488879e3d1393edd8ed7ba1816f6d6e43 100644 (file)
@@ -221,7 +221,7 @@ class InfoBarNumberZap:
                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)
@@ -230,7 +230,7 @@ class InfoBarNumberZap:
                                        bouquet = self.servicelist.appendDVBTypes(bouquetlist.getNext())
                                        if not bouquet.valid(): #check end of list
                                                break
-                                       if (bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory:
+                                       if not (bouquet.flags & eServiceReference.isDirectory):
                                                continue
                                        service, number = self.searchNumberHelper(serviceHandler, number, bouquet)
                if not service is None:
@@ -425,7 +425,7 @@ class InfoBarEPG:
                                service = servicelist.getNext()
                                if not service.valid(): #check if end of list
                                        break
-                               if service.flags: #ignore non playable services
+                               if service.flags & (eServiceReference.isDirectory | eServiceReference.isMarker): #ignore non playable services
                                        continue
                                services.append(ServiceReference(service))
                return services
@@ -1512,29 +1512,16 @@ class InfoBarSubserviceSelection:
                                self.addSubserviceToBouquet(self.bouquets[0][1])
                                self.session.open(MessageBox, _("Service has been added to the favourites."), MessageBox.TYPE_INFO)
 
-       def bouquetSelClosed(self, **args):
+       def bouquetSelClosed(self, confirmed):
                self.bsel = None
                del self.selectedSubservice
-               self.session.open(MessageBox, _("Service has been added to the selected bouquet."), MessageBox.TYPE_INFO)
+               if confirmed:
+                       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()
+                       self.bsel.close(True)
                else:
                        del self.selectedSubservice