from Components.Input import Input
from Components.Label import Label
from Components.Pixmap import Pixmap
-from Components.config import config
-from SleepTimer import SleepTimerEntry
-import time
+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)
class SleepTimerEdit(Screen):
def __init__(self, session):
self["green_text"] = Label()
self["yellow_text"] = Label()
self["blue_text"] = Label()
+ self["current_status"] = Label()
+ self.is_active = self.session.nav.SleepTimer.isActive()
+ if self.is_active:
+ self["current_status"].setText(_("Timer status:") + " " + _("Enabled"))
+ else:
+ self["current_status"].setText(_("Timer status:") + " " + _("Disabled"))
+
+ if self.is_active:
+ self.time = self.session.nav.SleepTimer.getCurrentSleepTime()
+ else:
+ 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["input"] = Input(text = str(self.session.nav.SleepTimer.getCurrentSleepTime()), maxSize = False, type = Input.NUMBER)
self["aftertext"] = Label(_("minutes"))
- self["actions"] = NumberActionMap(["SleepTimerEditorActions"],
+ self["actions"] = NumberActionMap(["SleepTimerEditorActions", "TextEntryActions", "KeyboardInputActions"],
{
- "exit": self.close,
+ "exit": self.cancel,
"select": self.select,
"1": self.keyNumberGlobal,
"2": self.keyNumberGlobal,
"0": self.keyNumberGlobal,
"selectLeft": self.selectLeft,
"selectRight": self.selectRight,
+ "left": self.selectLeft,
+ "right": self.selectRight,
+ "home": self.selectHome,
+ "end": self.selectEnd,
+ "deleteForward": self.deleteForward,
+ "deleteBackward": self.deleteBackward,
"disableTimer": self.disableTimer,
"toggleAction": self.toggleAction,
- "toggleAsk": self.toggleAsk
+ "toggleAsk": self.toggleAsk,
+ "useServiceTime": self.useServiceTime
}, -1)
-
+
def updateColors(self):
- if self.session.nav.SleepTimer.isActive():
- self["red_text"].setText(_("Timer status:") + " " + _("Enabled"))
+ if self.status:
+ self["red_text"].setText(_("Action:") + " " + _("Enable timer"))
else:
- self["red_text"].setText(_("Timer status:") + " " + _("Disabled"))
+ 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"))
-
+
if config.SleepTimer.ask.value:
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()
+ config.SleepTimer.action.cancel()
+ self.close()
+
def select(self):
- self.session.nav.SleepTimer.setSleepTime(int(self["input"].getText()))
- self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been acitvated."), MessageBox.TYPE_INFO)
-
+ 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:
+ self.session.nav.SleepTimer.clear()
+ self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been disabled."), MessageBox.TYPE_INFO)
+
def keyNumberGlobal(self, number):
self["input"].number(number)
-
+
def selectLeft(self):
self["input"].left()
def selectRight(self):
self["input"].right()
-
+
+ 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):
- if self.session.nav.SleepTimer.isActive():
- self.session.nav.SleepTimer.clear()
- else:
- self.session.nav.SleepTimer.setSleepTime(int(self["input"].getText()))
+ self.status = not self.status
self.updateColors()
-
+
def toggleAction(self):
if config.SleepTimer.action.value == "shutdown":
config.SleepTimer.action.value = "standby"
elif config.SleepTimer.action.value == "standby":
config.SleepTimer.action.value = "shutdown"
self.updateColors()
-
+
def toggleAsk(self):
config.SleepTimer.ask.value = not config.SleepTimer.ask.value
- self.updateColors()
\ No newline at end of file
+ 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))