more changes for service groups (replacement for zapping alternatives
[enigma2.git] / lib / python / Screens / ChannelSelection.py
index acd53bc5faa7a4c9e3b62d2496685e9e9dea4c9e..6a5605c713a1050c9074d2b93c2a55b693c189fa 100644 (file)
@@ -78,7 +78,9 @@ class ChannelContextMenu(Screen):
 
                if not csel.bouquet_mark_edit and not csel.movemode:
                        if not inBouquetRootList:
-                               if (csel.getCurrentSelection().flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory:
+                               flags = csel.getCurrentSelection().flags
+                               isPlayable = not ((flags & eServiceReference.isMarker) or (flags & eServiceReference.isDirectory))
+                               if isPlayable:
                                        if config.ParentalControl.configured.value:
                                                if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1:
                                                        menu.append((_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())))
@@ -572,7 +574,7 @@ class ChannelSelectionBase(Screen):
                                        if not bouquetIterator.valid(): #end of list
                                                break
                                        self.bouquetNumOffsetCache[bouquetIterator.toString()]=offsetCount
-                                       if ((bouquetIterator.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory):
+                                       if not (bouquetIterator.flags & eServiceReference.isDirectory):
                                                continue
                                        servicelist = serviceHandler.list(bouquetIterator)
                                        if not servicelist is None:
@@ -872,9 +874,7 @@ class ChannelSelectionBase(Screen):
                                        s = list.getNext()
                                        if not s.valid():
                                                break
-                                       if (s.flags & eServiceReference.isGroup):
-                                               continue
-                                       if (s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory:
+                                       if s.flags & eServiceReference.isDirectory:
                                                info = serviceHandler.info(s)
                                                if info:
                                                        bouquets.append((info.getName(s), s))
@@ -895,7 +895,7 @@ class ChannelSelectionBase(Screen):
                                s = list.getNext()
                                if not s.valid():
                                        break
-                               if (s.flags & eServiceReference.isGroup) and (s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory:
+                               if (s.flags & eServiceReference.isGroup) and (s.flags & eServiceReference.mustDescent):
                                        info = serviceHandler.info(s)
                                        if info:
                                                groups.append((info.getName(s), s))
@@ -1043,7 +1043,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                if ref is None or ref != nref:
                        self.session.nav.playService(nref)
                        self.saveRoot()
-                       self.saveChannel()
+                       self.saveChannel(nref)
                        config.servicelist.lastmode.save()
                        self.addToHistory(nref)
 
@@ -1086,7 +1086,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                        self.setRoot(root)
                self.session.nav.playService(ref)
                self.setCurrentSelection(ref)
-               self.saveChannel()
+               self.saveChannel(ref)
 
        def saveRoot(self):
                path = ''
@@ -1123,8 +1123,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                                return True
                return False
 
-       def saveChannel(self):
-               ref = self.session.nav.getCurrentlyPlayingServiceReference()
+       def saveChannel(self, ref):
                if ref is not None:
                        refstr = ref.toString()
                else: