SleepTimerEdit.py: use left runtime of running event or playback as default sleeptime...
authorghost <andreas.monzner@multimedia-labs.de>
Mon, 12 Oct 2009 08:42:05 +0000 (10:42 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Mon, 12 Oct 2009 08:42:05 +0000 (10:42 +0200)
lib/python/Screens/SleepTimerEdit.py

index 2416dd0..6e1991b 100644 (file)
@@ -5,7 +5,9 @@ from Components.Input import Input
 from Components.Label import Label
 from Components.Pixmap import Pixmap
 from Components.config import config, ConfigInteger
+from enigma import eEPGCache
 from SleepTimer import SleepTimer
+from time import time
 
 config.SleepTimer.defaulttime = ConfigInteger(default = 30)
 
@@ -31,13 +33,37 @@ class SleepTimerEdit(Screen):
                if self.is_active:
                        self.time = self.session.nav.SleepTimer.getCurrentSleepTime()
                else:
+                       remaining = None
+                       ref = self.session.nav.getCurrentlyPlayingServiceReference()
+                       if ref:
+                               path = ref.getPath()
+                               if path: # Movie
+                                       service = self.session.nav.getCurrentService()
+                                       seek = service and service.seek()
+                                       if seek:
+                                               length = seek.getLength()
+                                               position = seek.getPlayPosition()
+                                               if length and position:
+                                                       remaining = length[1] - position[1]
+                                                       if remaining > 0:
+                                                               remaining = remaining / 90000
+                               else: # DVB
+                                       epg = eEPGCache.getInstance()
+                                       event = epg.lookupEventTime(ref, -1, 0)
+                                       if event:
+                                               now = int(time())
+                                               start = event.getBeginTime()
+                                               duration = event.getDuration()
+                                               end = start + duration
+                                               remaining = end - now
+                       if remaining:
+                               config.SleepTimer.defaulttime.value = (remaining / 60) + 2
                        self.time = config.SleepTimer.defaulttime.value
                self["input"] = Input(text = str(self.time), maxSize = False, type = Input.NUMBER)
                
                self.status = True
                self.updateColors()
                
-               
                self["pretext"] = Label(_("Shutdown Dreambox after"))
                self["aftertext"] = Label(_("minutes"))
                
@@ -111,16 +137,16 @@ class SleepTimerEdit(Screen):
 
        def selectHome(self):
                self["input"].home()
-       
+
        def selectEnd(self):
                self["input"].end()
-       
+
        def deleteForward(self):
                self["input"].delete()
-       
+
        def deleteBackward(self):
                self["input"].deleteBackward()
-       
+
        def disableTimer(self):
                self.status = not self.status
                self.updateColors()