working on move, edit mode and add remove service to context menu
[enigma2.git] / lib / python / Screens / InfoBar.py
index 46ba24b18959db4063d841398e919afc9882f1ee..6615d6f1ad2a5f4ad80c1ff6ba4cc2a51e993c0d 100644 (file)
@@ -17,6 +17,8 @@ from Screens.Volume import Volume
 from Screens.Mute import Mute
 from Screens.Standby import Standby
 
+from ServiceReference import ServiceReference
+
 from enigma import *
 
 import time
@@ -91,6 +93,9 @@ class InfoBar(Screen):
                
                self.hideVolTimer = eTimer()
                self.hideVolTimer.timeout.get().append(self.volHide)
+               
+               self.powerKeyTimer = eTimer()
+               self.powerKeyTimer.timeout.get().append(self.powertimer)
 
                #self["actions"] = ActionMap( [ "InfobarActions" ], 
                self["actions"] = NumberActionMap( [ "InfobarActions" ], 
@@ -107,7 +112,9 @@ class InfoBar(Screen):
                                "hide": self.hide,
                                "toggleShow": self.toggleShow,
                                "showMovies": self.showMovies,
-                               "quit": self.quit,
+                               #"quit": self.quit,
+                               "powerdown": self.powerdown,
+                               "powerup": self.powerup,
                                "1": self.keyNumberGlobal,
                                "2": self.keyNumberGlobal,
                                "3": self.keyNumberGlobal,
@@ -122,6 +129,9 @@ class InfoBar(Screen):
                                
                                "pauseService": self.pauseService,
                                "unPauseService": self.unPauseService,
+                               
+                               "seekFwd": self.seekFwd,
+                               "seekBack": self.seekBack,
                        })
 #              self["okbutton"] = Button("mainMenu", [self.mainMenu])
                
@@ -131,6 +141,9 @@ class InfoBar(Screen):
 
                self["ServiceName"] = ServiceName(self.session.nav)
                
+               self["Event_Now_StartTime"] = EventInfo(self.session.nav, EventInfo.Now_StartTime)
+               self["Event_Next_StartTime"] = EventInfo(self.session.nav, EventInfo.Next_StartTime)
+                               
                self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
                self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
 
@@ -147,6 +160,21 @@ class InfoBar(Screen):
                assert menu.tagName == "menu", "root element in menu must be 'menu'!"
                self.session.open(MainMenu, menu, menu.childNodes)
 
+       def powertimer(self):   
+               print "PowerOff - Now!"
+               self.quit()
+       
+       def powerdown(self):
+               self.standbyblocked = 0
+               self.powerKeyTimer.start(3000)
+
+       def powerup(self):
+               self.powerKeyTimer.stop()
+               if self.standbyblocked == 0:
+                       self.standbyblocked = 1
+                       self.session.open(Standby, self)
+                       
+
        def keyNumberGlobal(self, number):
                print "You pressed number " + str(number)
                self.session.open(NumberZap, number)
@@ -221,12 +249,17 @@ class InfoBar(Screen):
                        self.muteDialog.instance.hide()
 
        def showEPGList(self):
-               self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
+               ref=self.session.nav.getCurrentlyPlayingServiceReference()
+               ptr=eEPGCache.getInstance()
+               if ptr.startTimeQuery(ref) != -1:
+                       self.session.open(EPGSelection, ref)
+               else:
+                       print 'no epg for service', ref.toString()
 
        def quit(self):
-               self.session.open(Standby)
-               #configfile.save()
-               #quitMainloop()
+               #       self.session.open(Standby, self)
+               configfile.save()
+               quitMainloop()
        
        def stopCurrentRecording(self): 
                print "remove entry"
@@ -272,3 +305,19 @@ class InfoBar(Screen):
                
        def unPauseService(self):
                self.session.nav.pause(0)
+       
+       def doSeek(self, dir, seektime):
+               service = self.session.nav.getCurrentService()
+               if service is None:
+                       return
+               
+               seekable = service.seek()
+               if seekable is None:
+                       return
+               seekable.seekRelative(dir, 90 * seektime)
+
+       def seekFwd(self):
+               self.doSeek(+1, 10000)
+       
+       def seekBack(self):
+               self.doSeek(-1, 10000)