working on move, edit mode and add remove service to context menu
[enigma2.git] / lib / python / Screens / InfoBar.py
index 516d44c50158d76cbe73958be0726cc64c5a9ce1..6615d6f1ad2a5f4ad80c1ff6ba4cc2a51e993c0d 100644 (file)
@@ -15,6 +15,9 @@ from Screens.MessageBox import MessageBox
 from Screens.MovieSelection import MovieSelection
 from Screens.Volume import Volume
 from Screens.Mute import Mute
+from Screens.Standby import Standby
+
+from ServiceReference import ServiceReference
 
 from enigma import *
 
@@ -37,6 +40,8 @@ class NumberZap(Screen):
                self.Timer.start(3000)          #reset timer
                self.field = self.field + str(number)
                self["number"].setText(self.field)
+               if len(self.field) >= 4:
+                       self.keyOK()
 
        def __init__(self, session, number):
                Screen.__init__(self, session)
@@ -88,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" ], 
@@ -104,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,
@@ -115,7 +125,13 @@ class InfoBar(Screen):
                                "8": self.keyNumberGlobal,
                                "9": self.keyNumberGlobal,
                                "0": self.keyNumberGlobal,
-                               "showEPGList": self.showEPGList
+                               "showEPGList": self.showEPGList,
+                               
+                               "pauseService": self.pauseService,
+                               "unPauseService": self.unPauseService,
+                               
+                               "seekFwd": self.seekFwd,
+                               "seekBack": self.seekBack,
                        })
 #              self["okbutton"] = Button("mainMenu", [self.mainMenu])
                
@@ -125,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)
 
@@ -141,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)
@@ -215,11 +249,15 @@ class InfoBar(Screen):
                        self.muteDialog.instance.hide()
 
        def showEPGList(self):
-# TODO hier irgendwie EPGSelection benutzen und setRoot benutzen um nen service zu uebergeben
-# self.session.nav.getCurrentlyPlayingServiceReference() sollte das wohl sein
-               self.session.open(EPGSelection)
+               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, self)
                configfile.save()
                quitMainloop()
        
@@ -242,7 +280,7 @@ class InfoBar(Screen):
                        pass
                
                # fix me, description. 
-               self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 30, serviceref, epg, "instant record")
+               self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
 
        def recordQuestionCallback(self, answer):
                if answer == False:
@@ -261,3 +299,25 @@ class InfoBar(Screen):
 
        def showMovies(self):
                self.session.open(MovieSelection)
+
+       def pauseService(self):
+               self.session.nav.pause(1)
+               
+       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)