1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
import timer
import time
import math
from enigma import quitMainloop
from Tools import Notifications
from Components.config import config, ConfigYesNo, ConfigSelection, ConfigSubsection
from Screens.MessageBox import MessageBox
from Screens.Standby import Standby
class SleepTimerEntry(timer.TimerEntry):
def __init__(self, begin):
timer.TimerEntry.__init__(self, int(begin), int(begin))
self.prepare_time = 0
def getNextActivation(self):
return self.begin
def activate(self):
if self.state == self.StateRunning:
if config.SleepTimer.action.value == "shutdown":
if config.SleepTimer.ask.value:
Notifications.AddNotificationWithCallback(self.shutdown, MessageBox, _("A sleep timer want's to shut down\nyour Dreambox. Shutdown now?"), timeout = 20)
else:
self.shutdown(True)
elif config.SleepTimer.action.value == "standby":
if config.SleepTimer.ask.value:
Notifications.AddNotificationWithCallback(self.standby, MessageBox, _("A sleep timer want's to set your\nDreambox to standby. Do that now?"), timeout = 20)
else:
self.standby(True)
return True
def shouldSkip(self):
return False
def shutdown(self, answer):
if answer is not None:
if answer:
quitMainloop(1)
def standby(self, answer):
if answer is not None:
if answer:
Notifications.AddNotification(Standby, self)
class SleepTimer(timer.Timer):
def __init__(self):
config.SleepTimer = ConfigSubsection()
config.SleepTimer.ask = ConfigYesNo(default = True)
config.SleepTimer.action = ConfigSelection(default = "shutdown", choices = [("shutdown", _("shutdown")), ("standby", _("standby"))])
timer.Timer.__init__(self)
self.defaultTime = 30
def setSleepTime(self, sleeptime):
self.clear()
self.addTimerEntry(SleepTimerEntry(time.time() + 60 * sleeptime))
def clear(self):
self.timer_list = []
def getCurrentSleepTime(self):
if (self.getNextRecordingTime() == -1):
return self.defaultTime
return int(math.ceil((self.getNextRecordingTime() - time.time()) / 60))
def isActive(self):
return len(self.timer_list) > 0
|