self.dirname = dirname
self.dirnameHadToFallback = False
self.autoincrease = False
+ self.autoincreasetime = 3600 * 24 # 1 day
self.tags = tags or []
self.log_entries = []
if self.name:
filename += " - " + self.name
- if self.dirname and not Directories.pathExists(self.dirname):
+ if self.dirname and not Directories.fileExists(self.dirname, 'w'):
self.dirnameHadToFallback = True
self.Filename = Directories.getRecordingFilename(filename, None)
else:
return True
elif next_state == self.StateEnded:
+ old_end = self.end
+ if self.setAutoincreaseEnd():
+ self.log(12, "autoincrase recording %d minute(s)" % int((self.end - old_end)/60))
+ self.state -= 1
+ return True
self.log(12, "stop recording")
if not self.justplay:
NavigationInstance.instance.stopRecordService(self.record_service)
Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour Dreambox. Shutdown now?"), timeout = 20)
return True
+ def setAutoincreaseEnd(self, entry = None):
+ if not self.autoincrease:
+ return False
+ if entry is None:
+ new_end = int(time.time()) + self.autoincreasetime
+ else:
+ new_end = entry.begin -30
+
+ dummyentry = RecordTimerEntry(self.service_ref, self.begin, new_end, self.name, self.description, self.eit, disabled=True, justplay = self.justplay, afterEvent = self.afterEvent, dirname = self.dirname, tags = self.tags)
+ dummyentry.disabled = self.disabled
+ timersanitycheck = TimerSanityCheck(NavigationInstance.instance.RecordTimer.timer_list, dummyentry)
+ if not timersanitycheck.check():
+ simulTimerList = timersanitycheck.getSimulTimerList()
+ new_end = simulTimerList[1].begin
+ del simulTimerList
+ new_end -= 30 # 30 Sekunden Prepare-Zeit lassen
+ del dummyentry
+ if new_end <= time.time():
+ return False
+ self.end = new_end
+ return True
+
+
def sendStandbyNotification(self, answer):
if answer:
Notifications.AddNotification(Screens.Standby.Standby)
elif event == iRecordableService.evStart:
text = _("A record has been started:\n%s") % self.name
if self.dirnameHadToFallback:
- text = '\n'.join([text, _("Please note that the previously selected media could not be accessed and therefore the default directory is being used instead.")])
+ text = '\n'.join((text, _("Please note that the previously selected media could not be accessed and therefore the default directory is being used instead.")))
# maybe this should be configurable?
Notifications.AddPopup(text = text, type = MessageBox.TYPE_INFO, timeout = 3)
chktimecmp = chktime.tm_wday * 1440 + chktime.tm_hour * 60 + chktime.tm_min
chktimecmp_end = chktimecmp + (duration / 60)
time = localtime(x.begin)
- for y in range(7):
+ for y in (0, 1, 2, 3, 4, 5, 6):
if x.repeated & (2 ** y):
timecmp = y * 1440 + time.tm_hour * 60 + time.tm_min
if timecmp <= chktimecmp < (timecmp + ((x.end - x.begin) / 60)):
# abort timer.
# this sets the end time to current time, so timer will be stopped.
+ entry.autoincrease = False
entry.abort()
if entry.state != entry.StateEnded:
# autoincrease instanttimer if possible
if not entry.dontSave:
for x in self.timer_list:
- if x.dontSave and x.autoincrease:
- x.end = x.begin + (3600 * 24 * 356 * 1)
+ if x.setAutoincreaseEnd():
self.timeChanged(x)
- timersanitycheck = TimerSanityCheck(self.timer_list,x)
- if not timersanitycheck.check():
- tsc_list = timersanitycheck.getSimulTimerList()
- if len(tsc_list) > 1:
- x.end = tsc_list[1].begin - 30
- self.timeChanged(x)
# now the timer should be in the processed_timers list. remove it from there.
self.processed_timers.remove(entry)
self.saveTimer()