fixes bug #593
[vuplus_dvbapp] / lib / python / Screens / TimerEntry.py
index 5813bac..9885e70 100644 (file)
@@ -8,12 +8,14 @@ from Components.MenuList import MenuList
 from Components.Button import Button
 from Components.Label import Label
 from Components.Pixmap import Pixmap
 from Components.Button import Button
 from Components.Label import Label
 from Components.Pixmap import Pixmap
+from Components.SystemInfo import SystemInfo
 from Components.UsageConfig import defaultMoviePath
 from Screens.MovieSelection import getPreferredTagEditor
 from Screens.LocationBox import MovieLocationBox
 from Screens.ChoiceBox import ChoiceBox
 from Components.UsageConfig import defaultMoviePath
 from Screens.MovieSelection import getPreferredTagEditor
 from Screens.LocationBox import MovieLocationBox
 from Screens.ChoiceBox import ChoiceBox
+from Screens.MessageBox import MessageBox
 from RecordTimer import AFTEREVENT
 from RecordTimer import AFTEREVENT
-from enigma import eEPGCache
+from enigma import eEPGCache, eServiceReference
 from time import localtime, mktime, time, strftime
 from datetime import datetime
 
 from time import localtime, mktime, time, strftime
 from datetime import datetime
 
@@ -93,7 +95,11 @@ class TimerEntry(Screen, ConfigListScreen):
                                day[weekday] = 1
 
                        self.timerentry_justplay = ConfigSelection(choices = [("zap", _("zap")), ("record", _("record"))], default = {0: "record", 1: "zap"}[justplay])
                                day[weekday] = 1
 
                        self.timerentry_justplay = ConfigSelection(choices = [("zap", _("zap")), ("record", _("record"))], default = {0: "record", 1: "zap"}[justplay])
-                       self.timerentry_afterevent = ConfigSelection(choices = [("nothing", _("do nothing")), ("standby", _("go to standby")), ("deepstandby", _("go to deep standby")), ("auto", _("auto"))], default = afterevent)
+                       if SystemInfo["DeepstandbySupport"]:
+                               shutdownString = _("go to deep standby")
+                       else:
+                               shutdownString = _("shut down")
+                       self.timerentry_afterevent = ConfigSelection(choices = [("nothing", _("do nothing")), ("standby", _("go to standby")), ("deepstandby", shutdownString), ("auto", _("auto"))], default = afterevent)
                        self.timerentry_type = ConfigSelection(choices = [("once",_("once")), ("repeated", _("repeated"))], default = type)
                        self.timerentry_name = ConfigText(default = self.timer.name, visible_width = 50, fixed_size = False)
                        self.timerentry_description = ConfigText(default = self.timer.description, visible_width = 50, fixed_size = False)
                        self.timerentry_type = ConfigSelection(choices = [("once",_("once")), ("repeated", _("repeated"))], default = type)
                        self.timerentry_name = ConfigText(default = self.timer.name, visible_width = 50, fixed_size = False)
                        self.timerentry_description = ConfigText(default = self.timer.description, visible_width = 50, fixed_size = False)
@@ -101,10 +107,11 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_tagsset = ConfigSelection(choices = [not self.timerentry_tags and "None" or " ".join(self.timerentry_tags)])
 
                        self.timerentry_repeated = ConfigSelection(default = repeated, choices = [("daily", _("daily")), ("weekly", _("weekly")), ("weekdays", _("Mon-Fri")), ("user", _("user defined"))])
                        self.timerentry_tagsset = ConfigSelection(choices = [not self.timerentry_tags and "None" or " ".join(self.timerentry_tags)])
 
                        self.timerentry_repeated = ConfigSelection(default = repeated, choices = [("daily", _("daily")), ("weekly", _("weekly")), ("weekdays", _("Mon-Fri")), ("user", _("user defined"))])
-
+                       
                        self.timerentry_date = ConfigDateTime(default = self.timer.begin, formatstring = _("%d.%B %Y"), increment = 86400)
                        self.timerentry_starttime = ConfigClock(default = self.timer.begin)
                        self.timerentry_endtime = ConfigClock(default = self.timer.end)
                        self.timerentry_date = ConfigDateTime(default = self.timer.begin, formatstring = _("%d.%B %Y"), increment = 86400)
                        self.timerentry_starttime = ConfigClock(default = self.timer.begin)
                        self.timerentry_endtime = ConfigClock(default = self.timer.end)
+                       self.timerentry_showendtime = ConfigSelection(default = ((self.timer.end - self.timer.begin) > 4), choices = [(True, _("yes")), (False, _("no"))])
 
                        default = self.timer.dirname or defaultMoviePath()
                        tmp = config.movielist.videodirs.value
 
                        default = self.timer.dirname or defaultMoviePath()
                        tmp = config.movielist.videodirs.value
@@ -167,11 +174,14 @@ class TimerEntry(Screen, ConfigListScreen):
                
                self.entryStartTime = getConfigListEntry(_("StartTime"), self.timerentry_starttime)
                self.list.append(self.entryStartTime)
                
                self.entryStartTime = getConfigListEntry(_("StartTime"), self.timerentry_starttime)
                self.list.append(self.entryStartTime)
-               if self.timerentry_justplay.value != "zap":
-                       self.entryEndTime = getConfigListEntry(_("EndTime"), self.timerentry_endtime)
+               
+               self.entryShowEndTime = getConfigListEntry(_("Set End Time"), self.timerentry_showendtime)
+               if self.timerentry_justplay.value == "zap":
+                       self.list.append(self.entryShowEndTime)
+               self.entryEndTime = getConfigListEntry(_("EndTime"), self.timerentry_endtime)
+               if self.timerentry_justplay.value != "zap" or self.timerentry_showendtime.value:
                        self.list.append(self.entryEndTime)
                        self.list.append(self.entryEndTime)
-               else:
-                       self.entryEndTime = None
+
                self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
                self.list.append(self.channelEntry)
 
                self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
                self.list.append(self.channelEntry)
 
@@ -189,11 +199,7 @@ class TimerEntry(Screen, ConfigListScreen):
 
        def newConfig(self):
                print "newConfig", self["config"].getCurrent()
 
        def newConfig(self):
                print "newConfig", self["config"].getCurrent()
-               if self["config"].getCurrent() == self.timerTypeEntry:
-                       self.createSetup("config")
-               if self["config"].getCurrent() == self.timerJustplayEntry:
-                       self.createSetup("config")
-               if self["config"].getCurrent() == self.frequencyEntry:
+               if self["config"].getCurrent() in (self.timerTypeEntry, self.timerJustplayEntry, self.frequencyEntry, self.entryShowEndTime):
                        self.createSetup("config")
 
        def keyLeft(self):
                        self.createSetup("config")
 
        def keyLeft(self):
@@ -240,7 +246,7 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_service_ref = ServiceReference(args[0])
                        self.timerentry_service.setCurrentText(self.timerentry_service_ref.getServiceName())
                        self["config"].invalidate(self.channelEntry)
                        self.timerentry_service_ref = ServiceReference(args[0])
                        self.timerentry_service.setCurrentText(self.timerentry_service_ref.getServiceName())
                        self["config"].invalidate(self.channelEntry)
-
+                       
        def getTimestamp(self, date, mytime):
                d = localtime(date)
                dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
        def getTimestamp(self, date, mytime):
                d = localtime(date)
                dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
@@ -259,10 +265,28 @@ class TimerEntry(Screen, ConfigListScreen):
                        end += 86400
                return begin, end
 
                        end += 86400
                return begin, end
 
-       def keyGo(self):
+       def selectChannelSelector(self, *args):
+               self.session.openWithCallback(
+                               self.finishedChannelSelectionCorrection,
+                               ChannelSelection.SimpleChannelSelection,
+                               _("Select channel to record from")
+                       )
+
+       def finishedChannelSelectionCorrection(self, *args):
+               if args:
+                       self.finishedChannelSelection(*args)
+                       self.keyGo()
+
+       def keyGo(self, result = None):
+               if not self.timerentry_service_ref.isRecordable():
+                       self.session.openWithCallback(self.selectChannelSelector, MessageBox, _("You didn't select a channel to record from."), MessageBox.TYPE_ERROR)
+                       return
                self.timer.name = self.timerentry_name.value
                self.timer.description = self.timerentry_description.value
                self.timer.justplay = self.timerentry_justplay.value == "zap"
                self.timer.name = self.timerentry_name.value
                self.timer.description = self.timerentry_description.value
                self.timer.justplay = self.timerentry_justplay.value == "zap"
+               if self.timerentry_justplay.value == "zap":
+                       if not self.timerentry_showendtime.value:
+                               self.timerentry_endtime.value = self.timerentry_starttime.value
                self.timer.resetRepeated()
                self.timer.afterEvent = {
                        "nothing": AFTEREVENT.NONE,
                self.timer.resetRepeated()
                self.timer.afterEvent = {
                        "nothing": AFTEREVENT.NONE,