reload bouquetlist when a new bouquet is added and the bouquet root is
[enigma2.git] / lib / python / Screens / ChannelSelection.py
index ff2928ecf14d1dab2f6df9cf69a29b2bf52ad636..4430edd0cb81fee81cd375da93e8871f88bdb898 100644 (file)
@@ -73,7 +73,7 @@ class ChannelContextMenu(Screen):
                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:
@@ -90,7 +90,7 @@ class ChannelContextMenu(Screen):
                                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:
@@ -151,7 +151,6 @@ class ChannelContextMenu(Screen):
                        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()
@@ -163,8 +162,6 @@ class ChannelContextMenu(Screen):
                        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
@@ -341,6 +338,13 @@ class ChannelSelectionEdit:
                                        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.setMode() #reload
                        else:
                                print "add", str, "to bouquets failed"
                else:
@@ -376,7 +380,7 @@ class ChannelSelectionEdit:
                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]")
@@ -546,7 +550,7 @@ class ChannelSelectionBase(Screen):
                return ref
 
        def getBouquetNumOffset(self, bouquet):
-               if self.bouquet_root.getPath().find('FROM BOUQUET "bouquets.') == -1: #FIXME HACK
+               if config.usage.multibouquet.value:
                        return 0
                bouquet = self.appendDVBTypes(bouquet)
                try:
@@ -769,9 +773,9 @@ class ChannelSelectionBase(Screen):
                                                                        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:
@@ -847,25 +851,24 @@ class ChannelSelectionBase(Screen):
                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