dont open epglist when no epg is avail
[enigma2.git] / lib / python / Screens / ChannelSelection.py
index e94e1c0950ee4756a801fa2b0be3ebe332aa9ae1..c31b794906604284a7e0f559ca408d46d149807c 100644 (file)
@@ -2,10 +2,10 @@ from Screen import Screen
 from Components.Button import Button
 from Components.ServiceList import ServiceList
 from Components.ActionMap import ActionMap
+from EpgSelection import EPGSelection
+from enigma import eServiceReference, eEPGCache, eEPGCachePtr
 
-from enigma import eServiceReference
-
-from Screens.Menu import FixedMenu
+from Screens.FixedMenu import FixedMenu
 
 import xml.dom.minidom
 
@@ -49,6 +49,7 @@ class ChannelSelection(Screen):
        def __init__(self, session):
                Screen.__init__(self, session)
                
+               self.entry_marked = False
                self.movemode = False
                self.bouquet_mark_edit = False
                
@@ -68,25 +69,32 @@ class ChannelSelection(Screen):
                class ChannelActionMap(ActionMap):
                        def action(self, contexts, action):
                                if action[:7] == "bouquet":
-                                       print "setting root to " + action[8:]
                                        l = self.csel["list"]
                                        l.setMode(l.MODE_NORMAL)
                                        l.setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:" + action[8:]))
                                else:
                                        ActionMap.action(self, contexts, action)
 
-               self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions"], 
+               self["actions"] = ChannelActionMap(["ChannelSelectActions", "OkCancelActions", "ContextMenuActions"], 
                        {
                                "cancel": self.close,
                                "ok": self.channelSelected,
                                "mark": self.doMark,
                                "contextMenu": self.doContext,
-                               "showFavourites": self.showFavourites
+                               "showFavourites": self.showFavourites,
+                               "showEPGList": self.showEPGList
                        })
                self["actions"].csel = self
 
+       def showEPGList(self):
+               ref=self["list"].getCurrent()
+               ptr=eEPGCache.getInstance()
+               if ptr.startTimeQuery(ref) != -1:
+                       self.session.open(EPGSelection, ref)
+               else:
+                       print 'no epg for service', ref.toString()
+
        #  marked edit mode
-       
        def startMarkedEdit(self):
                self.bouquet_mark_edit = True
                self.clearMarks()
@@ -96,7 +104,6 @@ class ChannelSelection(Screen):
                
                l = self["list"]
                for x in marked:
-                       print "mark: " + str(x)
                        l.addMarked(x)
                
        def endMarkedEdit(self, abort):
@@ -121,9 +128,21 @@ class ChannelSelection(Screen):
        
        # ...
        def channelSelected(self):
-               self.session.nav.playService(self["list"].getCurrent())
-               print "current: " + self["list"].getCurrent().toString()
-               self.close()
+               ref = self["list"].getCurrent()
+               if self.movemode:
+                       if self.entry_marked:
+                               self["list"].setCurrentMarked(False)
+                               self.entry_marked = False
+                       else:
+                               self["list"].setCurrentMarked(True)
+                               self.entry_marked = True
+               elif (ref.flags & 7) == 7:
+                       l = self["list"]
+                       l.setMode(l.MODE_NORMAL)
+                       l.setRoot(ref)
+               else:
+                       self.session.nav.playService(ref)
+                       self.close()
 
        #called from infoBar
        def zap(self):
@@ -139,8 +158,11 @@ class ChannelSelection(Screen):
                self.session.open(ChannelContextMenu, self)
 
        def setMoveMode(self, mode):
-               self.movemode = mode
-       
+               if mode:
+                       self.movemode = False
+               else:
+                       self.movemode = True
+
        def showFavourites(self):
                l = self["list" ]
                l.setRoot(eServiceReference('1:0:1:0:0:0:0:0:0:0:(provider == "fav")'))