def doActivate(self, w):
# when activating a timer which has already passed,
# simply abort the timer. don't run trough all the stages.
if w.shouldSkip():
w.state = RecordTimerEntry.StateEnded
else:
# when active returns true, this means "accepted".
# otherwise, the current state is kept.
# the timer entry itself will fix up the delay then.
if w.activate():
w.state += 1
self.timer_list.remove(w)
# did this timer reached the last state?
if w.state < RecordTimerEntry.StateEnded:
# no, sort it into active list
insort(self.timer_list, w)
else:
# yes. Process repeated, and re-add.
if w.repeated:
w.processRepeated()
w.state = RecordTimerEntry.StateWaiting
w.first_try_prepare = True
self.addTimerEntry(w)
else:
# correct wrong running timers
self.checkWrongRunningTimers()
# check for disabled timers, if time as passed set to completed
self.cleanupDisabled()
# Remove old timers as set in config
self.cleanupDaily(config.recording.keep_timers.value)
# If we want to keep done timers, re-insert in the active list
if config.recording.keep_timers.value > 0 and w not in self.processed_timers:
insort(self.processed_timers, w)
self.stateChanged(w)
评论列表
文章目录