+ 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)
+ self.record_service = None
+ if self.afterEvent == AFTEREVENT.STANDBY:
+ if not Screens.Standby.inStandby: # not already in standby
+ Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A finished record timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
+ elif self.afterEvent == AFTEREVENT.DEEPSTANDBY:
+ if not Screens.Standby.inTryQuitMainloop: # not a shutdown messagebox is open
+ if Screens.Standby.inStandby: # in standby
+ RecordTimerEntry.TryQuitMainloop() # start shutdown handling without screen
+ else:
+ 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()) + 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():
+ return False
+ self.end = new_end
+ return True
+
+
+ def sendStandbyNotification(self, answer):
+ if answer:
+ Notifications.AddNotification(Screens.Standby.Standby)
+
+ def sendTryQuitMainloopNotification(self, answer):
+ if answer:
+ Notifications.AddNotification(Screens.Standby.TryQuitMainloop, 1)
+
+ def getNextActivation(self):
+ if self.state == self.StateEnded:
+ return self.end
+
+ next_state = self.state + 1
+
+ return {self.StatePrepared: self.start_prepare,
+ self.StateRunning: self.begin,
+ self.StateEnded: self.end }[next_state]