X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/830d79376a0bc82a7c50930c5dc7d48b35bb8a21..6ea64f6225d623a23fee4d16965111e26ee74ffa:/lib/python/Screens/SleepTimerEdit.py diff --git a/lib/python/Screens/SleepTimerEdit.py b/lib/python/Screens/SleepTimerEdit.py index 2416dd03..e5e7af4e 100644 --- a/lib/python/Screens/SleepTimerEdit.py +++ b/lib/python/Screens/SleepTimerEdit.py @@ -5,7 +5,10 @@ from Components.Input import Input from Components.Label import Label from Components.Pixmap import Pixmap from Components.config import config, ConfigInteger +from Components.SystemInfo import SystemInfo +from enigma import eEPGCache from SleepTimer import SleepTimer +from time import time config.SleepTimer.defaulttime = ConfigInteger(default = 30) @@ -37,7 +40,6 @@ class SleepTimerEdit(Screen): self.status = True self.updateColors() - self["pretext"] = Label(_("Shutdown Dreambox after")) self["aftertext"] = Label(_("minutes")) @@ -65,7 +67,8 @@ class SleepTimerEdit(Screen): "deleteBackward": self.deleteBackward, "disableTimer": self.disableTimer, "toggleAction": self.toggleAction, - "toggleAsk": self.toggleAsk + "toggleAsk": self.toggleAsk, + "useServiceTime": self.useServiceTime }, -1) def updateColors(self): @@ -75,7 +78,11 @@ class SleepTimerEdit(Screen): self["red_text"].setText(_("Action:") + " " + _("Disable timer")) if config.SleepTimer.action.value == "shutdown": - self["green_text"].setText(_("Sleep timer action:") + " " + _("Deep Standby")) + if SystemInfo["DeepstandbySupport"]: + shutdownString = _("Deep Standby") + else: + shutdownString = _("Shutdown") + self["green_text"].setText(_("Sleep timer action:") + " " + shutdownString) elif config.SleepTimer.action.value == "standby": self["green_text"].setText(_("Sleep timer action:") + " " + _("Standby")) @@ -83,7 +90,7 @@ class SleepTimerEdit(Screen): self["yellow_text"].setText(_("Ask before shutdown:") + " " + _("yes")) else: self["yellow_text"].setText(_("Ask before shutdown:") + " " + _("no")) - self["blue_text"].setText(_("Settings")) + self["blue_text"].setText(_("Use time of currently running service")) def cancel(self): config.SleepTimer.ask.cancel() @@ -94,6 +101,8 @@ class SleepTimerEdit(Screen): if self.status: time = int(self["input"].getText()) config.SleepTimer.defaulttime.setValue(time) + config.SleepTimer.defaulttime.save() + config.SleepTimer.action.save() self.session.nav.SleepTimer.setSleepTime(time) self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been activated."), MessageBox.TYPE_INFO) else: @@ -111,16 +120,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() @@ -135,3 +144,31 @@ class SleepTimerEdit(Screen): def toggleAsk(self): config.SleepTimer.ask.value = not config.SleepTimer.ask.value self.updateColors() + + def useServiceTime(self): + 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["input"].setText(str((remaining / 60) + 2))