from Screen import Screen
-from LocationBox import LocationBox
import ChannelSelection
from ServiceReference import ServiceReference
from Components.config import config, ConfigSelection, ConfigText, ConfigSubList, ConfigDateTime, ConfigClock, ConfigYesNo, getConfigListEntry
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["locationtext"] = Label(_("Choose Location"))
self["ok"] = Pixmap()
self["cancel"] = Pixmap()
- self["location"] = Pixmap()
self.createConfig()
- self["actions"] = NumberActionMap(["SetupActions", "ColorActions"],
+ self["actions"] = NumberActionMap(["SetupActions"],
{
"ok": self.keySelect,
"save": self.keyGo,
"cancel": self.keyCancel,
- "yellow": self.selectPath,
}, -2)
self.list = []
ConfigListScreen.__init__(self, self.list, session = session)
self.createSetup("config")
- self.onLayoutFinish.append(self.handleLocation)
-
- def handleLocation(self):
- if config.usage.setup_level.index < 2: # -expert
- self["locationtext"].hide()
- self["location"].hide()
-
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)
- self.timerentry_dirname = ConfigSelection(choices = [self.timer.dirname or "/hdd/movie/"])
+ 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)
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_justplay.value != "zap":
if config.usage.setup_level.index >= 2: # expert+
- self.list.append(getConfigListEntry(_("Location"), self.timerentry_dirname))
+ 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()
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.afterEvent = {"nothing": AFTEREVENT.NONE, "deepstandby": AFTEREVENT.DEEPSTANDBY, "standby": AFTEREVENT.STANDBY}[self.timerentry_afterevent.value]
self.timer.service_ref = self.timerentry_service_ref
- # TODO: fix that thing with none (this might as well just be ignored)
- if self.timerentry_dirname.value == "/hdd/movie/":
- self.timer.dirname = None
- else:
- self.timer.dirname = self.timerentry_dirname.value
+ 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_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 selectPath(self):
- if config.usage.setup_level.index < 2: #-expert
- return
- self.session.openWithCallback(
- self.pathSelected,
- LocationBox,
- text = _("Choose target folder"),
- filename = "",
- currDir = None, # TODO: fix FileList to correctly determine mountpoint
- minFree = 100
- )
-
def pathSelected(self, res):
if res is not None:
- self.timerentry_dirname.choices.append(res)
- self.timerentry_dirname.description[res] = res
+ 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):
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()