remove no more needed function
[enigma2.git] / lib / python / Screens / TimerEntry.py
index e550519faec556615005a16e20e7ec749bc775a0..31a65a3032f6a5c0536494f21cb455a37b49db8c 100644 (file)
@@ -1,5 +1,4 @@
 from Screen import Screen
 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
 import ChannelSelection
 from ServiceReference import ServiceReference
 from Components.config import config, ConfigSelection, ConfigText, ConfigSubList, ConfigDateTime, ConfigClock, ConfigYesNo, getConfigListEntry
@@ -9,54 +8,46 @@ 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 Screens.LocationBox import MovieLocationBox
 from Screens.ChoiceBox import ChoiceBox
 from RecordTimer import AFTEREVENT
 from Screens.ChoiceBox import ChoiceBox
 from RecordTimer import AFTEREVENT
+from Tools.Directories import resolveFilename, SCOPE_HDD
 from enigma import eEPGCache
 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
 
 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.entryStartDate = None
                self.entryEndDate = None
                self.entryService = None
-               
+
                self["oktext"] = Label(_("OK"))
                self["canceltext"] = Label(_("Cancel"))
                self["oktext"] = Label(_("OK"))
                self["canceltext"] = Label(_("Cancel"))
-               self["locationtext"] = Label(_("Choose Location"))
                self["ok"] = Pixmap()
                self["cancel"] = Pixmap()
                self["ok"] = Pixmap()
                self["cancel"] = Pixmap()
-               self["location"] = Pixmap()
 
                self.createConfig()
 
 
                self.createConfig()
 
-               self["actions"] = NumberActionMap(["SetupActions", "ColorActions"],
+               self["actions"] = NumberActionMap(["SetupActions"],
                {
                        "ok": self.keySelect,
                        "save": self.keyGo,
                        "cancel": self.keyCancel,
                {
                        "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")
 
                }, -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
        def createConfig(self):
                        justplay = self.timer.justplay
-                               
+
                        afterevent = { AFTEREVENT.NONE: "nothing", AFTEREVENT.DEEPSTANDBY: "deepstandby", AFTEREVENT.STANDBY: "standby"}[self.timer.afterEvent]
                        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
                        weekday_table = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
 
                        # calculate default values
@@ -89,9 +80,9 @@ class TimerEntry(Screen, ConfigListScreen):
                        else: # once
                                type = "once"
                                repeated = None
                        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
                                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_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)
@@ -106,7 +97,11 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_enddate = ConfigDateTime(default = self.timer.end, formatstring =  _("%d.%B %Y"), increment = 86400)
                        self.timerentry_endtime = ConfigClock(default = self.timer.end)
 
                        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)
 
 
                        self.timerentry_repeatedbegindate = ConfigDateTime(default = self.timer.repeatedbegindate, formatstring = _("%d.%B %Y"), increment = 86400)
 
@@ -124,7 +119,7 @@ class TimerEntry(Screen, ConfigListScreen):
                                pass
                        self.timerentry_service_ref = self.timer.service_ref
                        self.timerentry_service = ConfigSelection([servicename])
                                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)
 
                        self.timerentry_startdate.addNotifier(self.checkDate)
                        self.timerentry_enddate.addNotifier(self.checkDate)
 
@@ -191,7 +186,8 @@ class TimerEntry(Screen, ConfigListScreen):
 
                if self.timerentry_justplay.value != "zap":
                        if config.usage.setup_level.index >= 2: # expert+
 
                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)
                        self.list.append(getConfigListEntry(_("After event"), self.timerentry_afterevent))
 
                self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
@@ -222,10 +218,23 @@ class TimerEntry(Screen, ConfigListScreen):
                else:
                        ConfigListScreen.keyRight(self)
                        self.newConfig()
                else:
                        ConfigListScreen.keyRight(self)
                        self.newConfig()
-               
+
        def keySelect(self):
        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()
 
                else:
                        self.keyGo()
 
@@ -236,25 +245,25 @@ class TimerEntry(Screen, ConfigListScreen):
                        self["config"].invalidate(self.channelEntry)
 
        def getTimestamp(self, date, mytime):
                        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):
 
        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
 
        def getBeginEnd(self):
                enddate = self.timerentry_enddate.value
                endtime = self.timerentry_endtime.value
-               
+
                startdate = self.timerentry_startdate.value
                starttime = self.timerentry_starttime.value
                startdate = self.timerentry_startdate.value
                starttime = self.timerentry_starttime.value
-               
+
                begin = self.getTimestamp(startdate, starttime)
                end = self.getTimestamp(enddate, endtime)
                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.
                # because of the dateChecks, startdate can't be < enddate.
                # however, the endtime can be less than the starttime.
                # in this case, add 1 day.
@@ -270,11 +279,9 @@ class TimerEntry(Screen, ConfigListScreen):
                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.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_type.value == "once":
                        self.timer.begin, self.timer.end = self.getBeginEnd()
@@ -285,20 +292,20 @@ class TimerEntry(Screen, ConfigListScreen):
 
                        if self.timerentry_repeated.value == "weekly":
                                self.timer.setRepeated(self.timerentry_weekday.index)
 
                        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 == "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)
                        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
                        # when a timer end is set before the start, add 1 day
                        if self.timer.end < self.timer.begin:
                                self.timer.end += 86400
@@ -335,22 +342,10 @@ class TimerEntry(Screen, ConfigListScreen):
        def keyCancel(self):
                self.close((False,))
 
        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:
        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):
                        self.timerentry_dirname.value = res
 
 class TimerLog(Screen):
@@ -358,17 +353,17 @@ class TimerLog(Screen):
                Screen.__init__(self, session)
                self.timer = timer;
                self.log_entries = self.timer.log_entries[:]
                Screen.__init__(self, session)
                self.timer = timer;
                self.log_entries = self.timer.log_entries[:]
-               
+
                self.fillLogList()
                self.fillLogList()
-               
+
                self["loglist"] = MenuList(self.list)
                self["logentry"] = Label()
                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["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"],
                self.onShown.append(self.updateText)
 
                self["actions"] = NumberActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
@@ -395,25 +390,25 @@ class TimerLog(Screen):
        def fillLogList(self):
                self.list = [ ]
                for x in self.log_entries:
        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()
                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 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 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 down(self):
                self["loglist"].instance.moveSelection(self["loglist"].instance.moveDown)
                self.updateText()
@@ -421,7 +416,7 @@ class TimerLog(Screen):
        def left(self):
                self["loglist"].instance.moveSelection(self["loglist"].instance.pageUp)
                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()
        def right(self):
                self["loglist"].instance.moveSelection(self["loglist"].instance.pageDown)
                self.updateText()