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
76
77
78
79
80
81
82
83
84
85
|
from enigma import eDVBVolumecontrol, eTimer
from Tools.Profile import profile
from Screens.Volume import Volume
from Screens.Mute import Mute
from GlobalActions import globalActionMap
from config import config, ConfigSubsection, ConfigInteger
instance = None
profile("VolumeControl")
#TODO .. move this to a own .py file
class VolumeControl:
"""Volume control, handles volUp, volDown, volMute actions and display
a corresponding dialog"""
def __init__(self, session):
global globalActionMap
global instance
globalActionMap.actions["volumeUp"]=self.volUp
globalActionMap.actions["volumeDown"]=self.volDown
globalActionMap.actions["volumeMute"]=self.volMute
assert not instance, "only one VolumeControl instance is allowed!"
instance = self
config.audio = ConfigSubsection()
config.audio.volume = ConfigInteger(default = 100, limits = (0, 100))
self.volumeDialog = session.instantiateDialog(Volume)
self.muteDialog = session.instantiateDialog(Mute)
self.hideVolTimer = eTimer()
self.hideVolTimer.callback.append(self.volHide)
vol = config.audio.volume.value
self.volumeDialog.setValue(vol)
self.volctrl = eDVBVolumecontrol.getInstance()
self.volctrl.setVolume(vol, vol)
def volSave(self):
if self.volctrl.isMuted():
config.audio.volume.value = 0
else:
config.audio.volume.value = self.volctrl.getVolume()
config.audio.volume.save()
def volUp(self):
self.setVolume(+1)
def volDown(self):
self.setVolume(-1)
def setVolume(self, direction):
oldvol = self.volctrl.getVolume()
if direction > 0:
self.volctrl.volumeUp()
else:
self.volctrl.volumeDown()
is_muted = self.volctrl.isMuted()
vol = self.volctrl.getVolume()
self.volumeDialog.show()
if is_muted:
self.volMute() # unmute
elif not vol:
self.volMute(False, True) # mute but dont show mute symbol
if self.volctrl.isMuted():
self.volumeDialog.setValue(0)
else:
self.volumeDialog.setValue(self.volctrl.getVolume())
self.volSave()
self.hideVolTimer.start(3000, True)
def volHide(self):
self.volumeDialog.hide()
def volMute(self, showMuteSymbol=True, force=False):
vol = self.volctrl.getVolume()
if vol or force:
self.volctrl.volumeToggleMute()
if self.volctrl.isMuted():
if showMuteSymbol:
self.muteDialog.show()
self.volumeDialog.setValue(0)
else:
self.muteDialog.hide()
self.volumeDialog.setValue(vol)
|