X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=RecordTimer.py;h=6b306d4e6f0e3fab2ee84fa6b12c4676d0f306b1;hp=8449a2d25f306fb57284acf7be4babb5fae436cd;hb=1076e4717bcf0eb93d803f73b2b75a8ae192b143;hpb=c2bbed774d6e5c51b4af23a60a95aca74aa5d4e9 diff --git a/RecordTimer.py b/RecordTimer.py index 8449a2d..6b306d4 100644 --- a/RecordTimer.py +++ b/RecordTimer.py @@ -118,6 +118,7 @@ class RecordTimerEntry(timer.TimerEntry, object): self.dirname = dirname self.dirnameHadToFallback = False self.autoincrease = False + self.autoincreasetime = 3600 * 24 # 1 day self.tags = tags or [] self.log_entries = [] @@ -268,6 +269,11 @@ class RecordTimerEntry(timer.TimerEntry, object): 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) @@ -283,6 +289,29 @@ class RecordTimerEntry(timer.TimerEntry, object): 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) @@ -577,6 +606,7 @@ class RecordTimer(timer.Timer): print "ignore timer conflict" elif timersanitycheck.doubleCheck(): print "ignore double timer" + return None entry.timeChanged() print "[Timer] Record " + str(entry) entry.Timer = self @@ -584,15 +614,16 @@ class RecordTimer(timer.Timer): if dosave: self.saveTimer() return None - + def isInTimer(self, eventid, begin, duration, service): time_match = 0 chktime = None chktimecmp = None chktimecmp_end = None end = begin + duration + refstr = str(service) for x in self.timer_list: - check = x.service_ref.ref.toCompareString() == str(service) + check = x.service_ref.ref.toString() == refstr if not check: sref = x.service_ref.ref parent_sid = sref.getUnsignedData(5) @@ -604,7 +635,7 @@ class RecordTimer(timer.Timer): sref.setUnsignedData(2, parent_tsid) sref.setUnsignedData(5, 0) sref.setUnsignedData(6, 0) - check = x.service_ref.ref.toCompareString() == str(service) + check = sref.toCompareString() == refstr num = 0 if check: check = False @@ -620,9 +651,6 @@ class RecordTimer(timer.Timer): check = True break if check: - #if x.eit is not None and x.repeated == 0: - # if x.eit == eventid: - # return duration if x.repeated != 0: if chktime is None: chktime = localtime(begin) @@ -645,6 +673,8 @@ class RecordTimer(timer.Timer): diff = x.end - begin if time_match < diff: time_match = diff + if time_match: + break return time_match def removeEntry(self, entry): @@ -655,6 +685,7 @@ class RecordTimer(timer.Timer): # 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: @@ -663,6 +694,11 @@ class RecordTimer(timer.Timer): print "state: ", entry.state print "in processed: ", entry in self.processed_timers print "in running: ", entry in self.timer_list + # autoincrease instanttimer if possible + if not entry.dontSave: + for x in self.timer_list: + if x.setAutoincreaseEnd(): + self.timeChanged(x) # now the timer should be in the processed_timers list. remove it from there. self.processed_timers.remove(entry) self.saveTimer()