from Screen import Screen
import ChannelSelection
from ServiceReference import ServiceReference
-from Components.config import ConfigSelection, ConfigText, ConfigSubList, ConfigDateTime, ConfigClock, ConfigYesNo, getConfigListEntry
+from Components.config import config, ConfigSelection, ConfigText, ConfigSubList, ConfigDateTime, ConfigClock, ConfigYesNo, getConfigListEntry
from Components.ActionMap import NumberActionMap
from Components.ConfigList import ConfigListScreen
from Components.MenuList import MenuList
from Components.Button import Button
from Components.Label import Label
from Components.Pixmap import Pixmap
+from Screens.LocationBox import MovieLocationBox
from Screens.ChoiceBox import ChoiceBox
from RecordTimer import AFTEREVENT
+from Tools.Directories import resolveFilename, SCOPE_HDD
from enigma import eEPGCache
-import time
-import datetime
+from time import localtime, mktime, time, strftime
+from datetime import datetime
class TimerEntry(Screen, ConfigListScreen):
def __init__(self, session, timer):
Screen.__init__(self, session)
self.timer = timer
-
+
self.entryStartDate = None
self.entryEndDate = None
self.entryService = None
-
+
self["oktext"] = Label(_("OK"))
self["canceltext"] = Label(_("Cancel"))
self["ok"] = Pixmap()
def createConfig(self):
justplay = self.timer.justplay
-
+
afterevent = { AFTEREVENT.NONE: "nothing", AFTEREVENT.DEEPSTANDBY: "deepstandby", AFTEREVENT.STANDBY: "standby"}[self.timer.afterEvent]
-
+
weekday_table = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
# calculate default values
else: # once
type = "once"
repeated = None
- weekday = (int(time.strftime("%w", time.localtime(self.timer.begin))) - 1) % 7
+ weekday = (int(strftime("%w", localtime(self.timer.begin))) - 1) % 7
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"))], default = afterevent)
self.timerentry_type = ConfigSelection(choices = [("once",_("once")), ("repeated", _("repeated"))], default = type)
self.timerentry_enddate = ConfigDateTime(default = self.timer.end, formatstring = _("%d.%B %Y"), increment = 86400)
self.timerentry_endtime = ConfigClock(default = self.timer.end)
+ default = self.timer.dirname or resolveFilename(SCOPE_HDD)
+ tmp = config.movielist.videodirs.value
+ if default not in tmp:
+ tmp.append(default)
+ self.timerentry_dirname = ConfigSelection(default = default, choices = tmp)
+
self.timerentry_repeatedbegindate = ConfigDateTime(default = self.timer.repeatedbegindate, formatstring = _("%d.%B %Y"), increment = 86400)
self.timerentry_weekday = ConfigSelection(default = weekday_table[weekday], choices = [("mon",_("Monday")), ("tue", _("Tuesday")), ("wed",_("Wednesday")), ("thu", _("Thursday")), ("fri", _("Friday")), ("sat", _("Saturday")), ("sun", _("Sunday"))])
servicename = str(self.timer.service_ref.getServiceName())
except:
pass
+ self.timerentry_service_ref = self.timer.service_ref
self.timerentry_service = ConfigSelection([servicename])
-
+
self.timerentry_startdate.addNotifier(self.checkDate)
self.timerentry_enddate.addNotifier(self.checkDate)
if self.timerentry_type.value == "once":
self.frequencyEntry = None
else: # repeated
- self.frequencyEntry = getConfigListEntry(_("Frequency"), self.timerentry_repeated)
+ self.frequencyEntry = getConfigListEntry(_("Repeats"), self.timerentry_repeated)
self.list.append(self.frequencyEntry)
self.repeatedbegindateEntry = getConfigListEntry(_("Starting on"), self.timerentry_repeatedbegindate)
self.list.append(self.repeatedbegindateEntry)
self.list.append(getConfigListEntry(_("EndTime"), self.timerentry_endtime))
if self.timerentry_justplay.value != "zap":
+ if config.usage.setup_level.index >= 2: # expert+
+ self.dirname = getConfigListEntry(_("Location"), self.timerentry_dirname)
+ self.list.append(self.dirname)
self.list.append(getConfigListEntry(_("After event"), self.timerentry_afterevent))
self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
else:
ConfigListScreen.keyRight(self)
self.newConfig()
-
+
def keySelect(self):
- if self["config"].getCurrent() == self.channelEntry:
- self.session.openWithCallback(self.finishedChannelSelection, ChannelSelection.SimpleChannelSelection, _("Select channel to record from"))
+ cur = self["config"].getCurrent()
+ if cur == self.channelEntry:
+ self.session.openWithCallback(
+ self.finishedChannelSelection,
+ ChannelSelection.SimpleChannelSelection,
+ _("Select channel to record from")
+ )
+ elif config.usage.setup_level.index >= 2 and cur == self.dirname:
+ self.session.openWithCallback(
+ self.pathSelected,
+ MovieLocationBox,
+ _("Choose target folder"),
+ self.timerentry_dirname.value,
+ minFree = 100 # We require at least 100MB free space
+ )
else:
self.keyGo()
def finishedChannelSelection(self, *args):
if len(args):
- self.timer.service_ref = ServiceReference(args[0])
- self.timerentry_service.setCurrentText(self.timer.service_ref.getServiceName())
+ 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 = time.localtime(date)
- dt = datetime.datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
- return int(time.mktime(dt.timetuple()))
+ d = localtime(date)
+ dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
+ return int(mktime(dt.timetuple()))
def buildRepeatedBegin(self, rep_time, start_time):
- d = time.localtime(rep_time)
- dt = datetime.datetime(d.tm_year, d.tm_mon, d.tm_mday, start_time[0], start_time[1])
- return int(time.mktime(dt.timetuple()))
+ d = localtime(rep_time)
+ dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, start_time[0], start_time[1])
+ return int(mktime(dt.timetuple()))
def getBeginEnd(self):
enddate = self.timerentry_enddate.value
endtime = self.timerentry_endtime.value
-
+
startdate = self.timerentry_startdate.value
starttime = self.timerentry_starttime.value
-
+
begin = self.getTimestamp(startdate, starttime)
end = self.getTimestamp(enddate, endtime)
-
+
# because of the dateChecks, startdate can't be < enddate.
# however, the endtime can be less than the starttime.
# in this case, add 1 day.
self.timer.justplay = self.timerentry_justplay.value == "zap"
self.timer.resetRepeated()
self.timer.afterEvent = {"nothing": AFTEREVENT.NONE, "deepstandby": AFTEREVENT.DEEPSTANDBY, "standby": AFTEREVENT.STANDBY}[self.timerentry_afterevent.value]
-
+ self.timer.service_ref = self.timerentry_service_ref
+
+ self.timer.dirname = self.timerentry_dirname.value
+ config.movielist.last_timer_videodir.value = self.timer.dirname
+ config.movielist.last_timer_videodir.save()
+
if self.timerentry_type.value == "once":
self.timer.begin, self.timer.end = self.getBeginEnd()
if self.timerentry_type.value == "repeated":
if self.timerentry_repeated.value == "weekly":
self.timer.setRepeated(self.timerentry_weekday.index)
-
+
if self.timerentry_repeated.value == "weekdays":
for x in range(0,5):
self.timer.setRepeated(x)
-
+
if self.timerentry_repeated.value == "user":
for x in range(0,7):
if self.timerentry_day[x].value:
self.timer.setRepeated(x)
self.timer.repeatedbegindate = self.buildRepeatedBegin(self.timerentry_repeatedbegindate.value, self.timerentry_starttime.value)
- self.timer.begin = self.getTimestamp(time.time(), self.timerentry_starttime.value)
- self.timer.end = self.getTimestamp(time.time(), self.timerentry_endtime.value)
-
+ self.timer.begin = self.getTimestamp(time(), self.timerentry_starttime.value)
+ self.timer.end = self.getTimestamp(time(), self.timerentry_endtime.value)
+
# when a timer end is set before the start, add 1 day
if self.timer.end < self.timer.begin:
self.timer.end += 86400
def keyCancel(self):
self.close((False,))
-
+
+ def pathSelected(self, res):
+ if res is not None:
+ if config.movielist.videodirs.value != self.timerentry_dirname.choices:
+ self.timerentry_dirname.setChoices(config.movielist.videodirs.value, default=res)
+ self.timerentry_dirname.value = res
+
class TimerLog(Screen):
def __init__(self, session, timer):
Screen.__init__(self, session)
self.timer = timer;
self.log_entries = self.timer.log_entries[:]
-
+
self.fillLogList()
-
+
self["loglist"] = MenuList(self.list)
self["logentry"] = Label()
-
+
self["key_red"] = Button(_("Delete entry"))
self["key_green"] = Button()
self["key_yellow"] = Button("")
self["key_blue"] = Button(_("Clear log"))
-
+
self.onShown.append(self.updateText)
self["actions"] = NumberActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
def fillLogList(self):
self.list = [ ]
for x in self.log_entries:
- self.list.append((str(time.strftime("%Y-%m-%d %H-%M", time.localtime(x[0])) + " - " + x[2]), x))
-
- def clearLog(self):
+ self.list.append((str(strftime("%Y-%m-%d %H-%M", localtime(x[0])) + " - " + x[2]), x))
+
+ def clearLog(self):
self.log_entries = []
self.fillLogList()
self["loglist"].l.setList(self.list)
self.updateText()
-
+
def keyClose(self):
if self.timer.log_entries != self.log_entries:
self.timer.log_entries = self.log_entries
self.close((True, self.timer))
else:
self.close((False,))
-
+
def up(self):
self["loglist"].instance.moveSelection(self["loglist"].instance.moveUp)
self.updateText()
-
+
def down(self):
self["loglist"].instance.moveSelection(self["loglist"].instance.moveDown)
self.updateText()
def left(self):
self["loglist"].instance.moveSelection(self["loglist"].instance.pageUp)
self.updateText()
-
+
def right(self):
self["loglist"].instance.moveSelection(self["loglist"].instance.pageDown)
self.updateText()