X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/03368ffabdc8649667ba47d72fd2925ab909c9f3..1c21fe13bb453d0f11c8a40461b3bfe7dba5cef1:/lib/python/Screens/Standby.py diff --git a/lib/python/Screens/Standby.py b/lib/python/Screens/Standby.py index 1b648e55..b8af16f5 100644 --- a/lib/python/Screens/Standby.py +++ b/lib/python/Screens/Standby.py @@ -1,21 +1,149 @@ from Screen import Screen from Components.ActionMap import ActionMap +from Components.config import config +from Components.AVSwitch import AVSwitch +from enigma import eDVBVolumecontrol +from Components.Sources.Source import ObsoleteSource + +inStandby = None class Standby(Screen): def Power(self): print "leave standby" - self.close() + #set input to encoder + self.avswitch.setInput("ENCODER") + #restart last played service + if self.prev_running_service: + self.session.nav.playService(self.prev_running_service) + #unmute adc + self.leaveMute() + #set brightness of lcd + config.lcd.bright.apply() + #kill me + self.close(True) + + def setMute(self): + if (eDVBVolumecontrol.getInstance().isMuted()): + self.wasMuted = 1 + print "mute already active" + else: + self.wasMuted = 0 + eDVBVolumecontrol.getInstance().volumeToggleMute() + + def leaveMute(self): + if self.wasMuted == 0: + eDVBVolumecontrol.getInstance().volumeToggleMute() def __init__(self, session): Screen.__init__(self, session) - + self.avswitch = AVSwitch() + print "enter standby" self["actions"] = ActionMap( [ "StandbyActions" ], { "power": self.Power - }) - - #stop/pause? playing services - #switch off avs - \ No newline at end of file + }, -1) + + #mute adc + self.setMute() + #get currently playing service reference + self.prev_running_service = self.session.nav.getCurrentlyPlayingServiceReference() + #stop actual played dvb-service + self.session.nav.stopService() + #set input to vcr scart + self.avswitch.setInput("SCART") + #set lcd brightness to standby value + config.lcd.standby.apply() + self.onShow.append(self.__onShow) + self.onHide.append(self.__onHide) + + def createSummary(self): + return StandbySummary + + def __onShow(self): + global inStandby + inStandby = self + + def __onHide(self): + global inStandby + inStandby = None + +class StandbySummary(Screen): + skin = """ + + + + + + config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean + Blink + + """ + + def __init__(self, session, parent): + Screen.__init__(self, session) + self["CurrentTime"] = ObsoleteSource(new_source = "global.CurrentTime", removal_date = "2008-01") + +from enigma import quitMainloop, iRecordableService +from Screens.MessageBox import MessageBox +from time import time + +inTryQuitMainloop = False + +class TryQuitMainloop(MessageBox): + def __init__(self, session, retvalue=1, timeout=-1): + self.retval=retvalue + recordings = len(session.nav.getRecordings()) + self.connected = False + next_rec_time = -1 + if not recordings: + next_rec_time = session.nav.RecordTimer.getNextRecordingTime() + if recordings or (next_rec_time > 0 and (next_rec_time - time()) < 360): + if retvalue == 1: + MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really shutdown now?"), type = MessageBox.TYPE_YESNO, timeout = timeout) + elif retvalue == 2: + MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really reboot now?"), type = MessageBox.TYPE_YESNO, timeout = timeout) + elif retvalue == 4: + pass + else: + MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really restart now?"), type = MessageBox.TYPE_YESNO, timeout = timeout) + self.skinName = "MessageBox" + session.nav.record_event.append(self.getRecordEvent) + self.connected = True + self.onShow.append(self.__onShow) + self.onHide.append(self.__onHide) + else: + self.skin = """""" + Screen.__init__(self, session) + self.close(True) + + def getRecordEvent(self, recservice, event): + if event == iRecordableService.evEnd: + recordings = self.session.nav.getRecordings() + if not len(recordings): # no more recordings exist + rec_time = self.session.nav.RecordTimer.getNextRecordingTime() + if rec_time > 0 and (rec_time - time()) < 360: + self.initTimeout(360) # wait for next starting timer + self.startTimer() + else: + self.close(True) # immediate shutdown + elif event == iRecordableService.evStart: + self.stopTimer() + + def close(self, value): + if self.connected: + self.conntected=False + self.session.nav.record_event.remove(self.getRecordEvent) + if value: + quitMainloop(self.retval) + else: + MessageBox.close(self, True) + + def __onShow(self): + global inTryQuitMainloop + inTryQuitMainloop = True + + def __onHide(self): + global inTryQuitMainloop + inTryQuitMainloop = False