Merge commit 'dm/experimental' into vuplus_experimental
[vuplus_dvbapp] / lib / python / Screens / SleepTimerEdit.py
old mode 100644 (file)
new mode 100755 (executable)
index 6e1991b..e5c9260
@@ -5,6 +5,7 @@ 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
@@ -33,38 +34,13 @@ 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["pretext"] = Label(_("Shutdown STB after"))
                self["aftertext"] = Label(_("minutes"))
                
                self["actions"] = NumberActionMap(["SleepTimerEditorActions", "TextEntryActions", "KeyboardInputActions"], 
@@ -91,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):
@@ -101,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"))
                
@@ -109,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()
@@ -118,16 +99,29 @@ class SleepTimerEdit(Screen):
 
        def select(self):
                if self.status:
-                       time = int(self["input"].getText())
-                       config.SleepTimer.defaulttime.setValue(time)
-                       self.session.nav.SleepTimer.setSleepTime(time)
-                       self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been activated."), MessageBox.TYPE_INFO)
+#      ikseong
+                       if self["input"].getText()=='':
+                               self.session.nav.SleepTimer.clear()
+                               self.session.openWithCallback(self.close, MessageBox, _("The sleep timer is invalid."), MessageBox.TYPE_INFO)
+                       else:                           
+                               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)
+#      ikseong
+               if self["input"].getText() == '' :
+                       inputtime=0
+               else:
+                       inputtime= int(self["input"].getText())*10 +number
+               if inputtime < 10000 :
+                       self["input"].number(number)
 
        def selectLeft(self):
                self["input"].left()
@@ -161,3 +155,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))