diff options
Diffstat (limited to 'lib/python')
| -rw-r--r-- | lib/python/Components/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/python/Components/VolumeControl.py | 79 |
2 files changed, 80 insertions, 1 deletions
diff --git a/lib/python/Components/Makefile.am b/lib/python/Components/Makefile.am index 71160c9b..d3c51ab2 100644 --- a/lib/python/Components/Makefile.am +++ b/lib/python/Components/Makefile.am @@ -7,7 +7,7 @@ install_PYTHON = \ Button.py HTMLComponent.py ProgressBar.py TimerList.py config.py \ HTMLSkin.py ServiceList.py VariableText.py \ ConfigList.py VariableValue.py \ - Label.py ServiceScan.py VolumeBar.py \ + Label.py ServiceScan.py VolumeBar.py VolumeControl.py \ GUIComponent.py MenuList.py __init__.py MovieList.py \ InputDevice.py ServicePosition.py SetupDevices.py Harddisk.py \ AVSwitch.py Network.py RFmod.py DiskInfo.py NimManager.py Lcd.py \ diff --git a/lib/python/Components/VolumeControl.py b/lib/python/Components/VolumeControl.py new file mode 100644 index 00000000..19fb90d7 --- /dev/null +++ b/lib/python/Components/VolumeControl.py @@ -0,0 +1,79 @@ +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 + +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 + globalActionMap.actions["volumeUp"]=self.volUp + globalActionMap.actions["volumeDown"]=self.volDown + globalActionMap.actions["volumeMute"]=self.volMute + + 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) |
