X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/efc5aca651306518e6f21a6bd7cbfa1928821b60..d0380b44396cbcd497f42eb0047b58b309596007:/lib/python/Screens/Standby.py diff --git a/lib/python/Screens/Standby.py b/lib/python/Screens/Standby.py index 4cda9d19..94a56ee4 100644 --- a/lib/python/Screens/Standby.py +++ b/lib/python/Screens/Standby.py @@ -2,6 +2,8 @@ from Screen import Screen from Components.ActionMap import ActionMap from Components.config import config from Components.AVSwitch import AVSwitch +from Components.SystemInfo import SystemInfo +from GlobalActions import globalActionMap from enigma import eDVBVolumecontrol inStandby = None @@ -12,12 +14,8 @@ class Standby(Screen): #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) @@ -44,29 +42,49 @@ class Standby(Screen): "power": self.Power }, -1) + globalActionMap.setEnabled(False) + #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() + + self.paused_service = None + self.prev_running_service = None + if self.session.current_dialog: + if self.session.current_dialog.ALLOW_SUSPEND == Screen.SUSPEND_STOPS: + #get currently playing service reference + self.prev_running_service = self.session.nav.getCurrentlyPlayingServiceReference() + #stop actual played dvb-service + self.session.nav.stopService() + elif self.session.current_dialog.ALLOW_SUSPEND == Screen.SUSPEND_PAUSES: + self.paused_service = self.session.current_dialog + self.paused_service.pauseService() + #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) + if SystemInfo["ScartSwitch"]: + self.avswitch.setInput("SCART") + else: + self.avswitch.setInput("AUX") + self.onFirstExecBegin.append(self.__onFirstExecBegin) + self.onClose.append(self.__onClose) - def createSummary(self): - return StandbySummary + def __onClose(self): + global inStandby + inStandby = None + if self.prev_running_service: + self.session.nav.playService(self.prev_running_service) + elif self.paused_service: + self.paused_service.unPauseService() + self.session.screen["Standby"].boolean = False + globalActionMap.setEnabled(True) - def __onShow(self): + def __onFirstExecBegin(self): global inStandby inStandby = self + self.session.screen["Standby"].boolean = True + config.misc.standbyCounter.value += 1 - def __onHide(self): - global inStandby - inStandby = None + def createSummary(self): + return StandbySummary class StandbySummary(Screen): skin = """ @@ -80,32 +98,40 @@ class StandbySummary(Screen): """ - def __init__(self, session, parent): - Screen.__init__(self, session) - from enigma import quitMainloop, iRecordableService from Screens.MessageBox import MessageBox from time import time +from Components.Task import job_manager inTryQuitMainloop = False class TryQuitMainloop(MessageBox): - def __init__(self, session, retvalue=1, timeout=-1): + def __init__(self, session, retvalue=1, timeout=-1, default_yes = True): self.retval=retvalue - recordings = len(session.nav.getRecordings()) + recordings = session.nav.getRecordings() + jobs = len(job_manager.getPendingJobs()) self.connected = False + reason = "" next_rec_time = -1 if not recordings: - next_rec_time = session.nav.RecordTimer.getNextRecordingTime() + next_rec_time = session.nav.RecordTimer.getNextRecordingTime() if recordings or (next_rec_time > 0 and (next_rec_time - time()) < 360): + reason = _("Recording(s) are in progress or coming up in few seconds!") + '\n' + if jobs: + if jobs == 1: + job = job_manager.getPendingJobs()[0] + reason += "%s: %s (%d%%)\n" % (job.getStatustext(), job.name, int(100*job.progress/float(job.end))) + else: + reason += (_("%d jobs are running in the background!") % jobs) + '\n' + if reason: 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) + MessageBox.__init__(self, session, reason+_("Really shutdown now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes) 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) + MessageBox.__init__(self, session, reason+_("Really reboot now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes) 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) + MessageBox.__init__(self, session, reason+_("Really restart now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes) self.skinName = "MessageBox" session.nav.record_event.append(self.getRecordEvent) self.connected = True @@ -119,7 +145,7 @@ class TryQuitMainloop(MessageBox): def getRecordEvent(self, recservice, event): if event == iRecordableService.evEnd: recordings = self.session.nav.getRecordings() - if not len(recordings): # no more recordings exist + if not 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