X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3be2d2d8f0250000c2b5300266abf3776844643e..7b46919af63cfcb6adbe72d8d4183a203dfcfce7:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 58abce15..85e2794f 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -39,7 +39,7 @@ class InfoBarVolumeControl: a corresponding dialog""" def __init__(self): config.audio = ConfigSubsection() - config.audio.volume = configElement("config.audio.volume", configSequence, [5], configsequencearg.get("INTEGER", (0, 100))) + config.audio.volume = configElement("config.audio.volume", configSequence, [100], configsequencearg.get("INTEGER", (0, 100))) self["VolumeActions"] = ActionMap( ["InfobarVolumeActions"] , { @@ -69,7 +69,7 @@ class InfoBarVolumeControl: self.volumeDialog.instance.show() self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume()) self.volSave() - self.hideVolTimer.start(3000) + self.hideVolTimer.start(3000, True) def volDown(self): if (eDVBVolumecontrol.getInstance().isMuted()): @@ -78,7 +78,7 @@ class InfoBarVolumeControl: self.volumeDialog.instance.show() self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume()) self.volSave() - self.hideVolTimer.start(3000) + self.hideVolTimer.start(3000, True) def volHide(self): self.volumeDialog.instance.hide() @@ -119,7 +119,7 @@ class InfoBarShowHide: self.hideTimer = eTimer() self.hideTimer.timeout.get().append(self.doTimerHide) - self.hideTimer.start(5000) + self.hideTimer.start(5000, True) def delHideTimer(self): del self.hideTimer @@ -129,8 +129,7 @@ class InfoBarShowHide: def show(self): self.state = self.STATE_SHOWN - self.hideTimer.stop() - self.hideTimer.start(5000) + self.hideTimer.start(5000, True) def doTimerHide(self): self.hideTimer.stop() @@ -167,7 +166,7 @@ class NumberZap(Screen): self.close(int(self["number"].getText())) def keyNumberGlobal(self, number): - self.Timer.start(3000) #reset timer + self.Timer.start(3000, True) #reset timer self.field = self.field + str(number) self["number"].setText(self.field) if len(self.field) >= 4: @@ -199,7 +198,7 @@ class NumberZap(Screen): self.Timer = eTimer() self.Timer.timeout.get().append(self.keyOK) - self.Timer.start(3000) + self.Timer.start(3000, True) class InfoBarPowerKey: """ PowerKey stuff - handles the powerkey press and powerkey release actions""" @@ -221,7 +220,7 @@ class InfoBarPowerKey: def powerdown(self): self.standbyblocked = 0 - self.powerKeyTimer.start(3000) + self.powerKeyTimer.start(3000, True) def powerup(self): self.powerKeyTimer.stop() @@ -255,7 +254,12 @@ class InfoBarNumberZap: def keyNumberGlobal(self, number): # print "You pressed number " + str(number) - self.session.openWithCallback(self.numberEntered, NumberZap, number) + if number == 0: + self.session.nav.zapLast() + self.instance.show() + self.show() + else: + self.session.openWithCallback(self.numberEntered, NumberZap, number) def numberEntered(self, retval): # print self.servicelist @@ -400,7 +404,7 @@ class InfoBarTuner: self["ber_progress"] = ProgressBar() self.timer = eTimer() self.timer.timeout.get().append(self.updateTunerInfo) - self.timer.start(500) + self.timer.start(1000) def calc(self,val): if not val: @@ -452,12 +456,18 @@ class InfoBarPVR: SEEK_STATE_FF_2X = (0, 2, 0, 0) SEEK_STATE_FF_4X = (0, 4, 0, 0) SEEK_STATE_FF_8X = (0, 8, 0, 0) - SEEK_STATE_FF_32X = (0, 0, 0, 32) - SEEK_STATE_FF_64X = (0, 0, 0, 64) + SEEK_STATE_FF_32X = (0, 4, 0, 32) + SEEK_STATE_FF_64X = (0, 4, 0, 64) + SEEK_STATE_FF_128X = (0, 4, 0, 128) SEEK_STATE_BACK_4X = (0, 0, 0, -4) SEEK_STATE_BACK_32X = (0, 0, 0, -32) SEEK_STATE_BACK_64X = (0, 0, 0, -64) + SEEK_STATE_BACK_128X = (0, 0, 0, -128) + + SEEK_STATE_SM_HALF = (0, 0, 2, 0) + SEEK_STATE_SM_QUARTER = (0, 0, 4, 0) + SEEK_STATE_SM_EIGHTH = (0, 0, 8, 0) """handles PVR specific actions like seeking, pause""" def __init__(self): @@ -474,13 +484,20 @@ class InfoBarPVR: self.seekTimer = eTimer() self.seekTimer.timeout.get().append(self.seekTimerFired) self.skipinterval = 500 # 500ms skip interval + self.onClose.append(self.delSeekTimer) + + def delSeekTimer(self): + del self.seekTimer def seekTimerFired(self): - print "skip", self.skipmode - if self.skipmode > 0: - self.doSeek(+1, self.skipmode * self.skipinterval) - else: - self.doSeek(-1, -self.skipmode * self.skipinterval) + self.seekbase += self.skipmode * self.skipinterval + + # check if we bounced against the beginning of the file + if self.seekbase < 0: + self.seekbase = 0; + self.setSeekState(self.SEEK_STATE_PLAY) + + self.doSeek(self.seekbase) def setSeekState(self, state): oldstate = self.seekstate @@ -492,7 +509,6 @@ class InfoBarPVR: return pauseable = service.pause() - print "newstate: ", self.seekstate for i in range(4): if oldstate[i] != self.seekstate[i]: @@ -504,6 +520,21 @@ class InfoBarPVR: self.seekTimer.stop() else: self.seekTimer.start(500) + + service = self.session.nav.getCurrentService() + if service is None: + return + + seekable = service.seek() + if seekable is None: + return + + if skipmode: + seekable.setTrickmode(1) + else: + seekable.setTrickmode(0) + + self.seekbase = seekable.getPlayPosition()[1] / 90 def pauseService(self): self.setSeekState(self.SEEK_STATE_PAUSE); @@ -511,7 +542,7 @@ class InfoBarPVR: def unPauseService(self): self.setSeekState(self.SEEK_STATE_PLAY); - def doSeek(self, dir, seektime): + def doSeek(self, seektime): service = self.session.nav.getCurrentService() if service is None: return @@ -519,38 +550,50 @@ class InfoBarPVR: seekable = service.seek() if seekable is None: return - seekable.seekRelative(dir, 90 * seektime) + seekable.seekTo(90 * seektime) def seekFwd(self): lookup = { self.SEEK_STATE_PLAY: self.SEEK_STATE_FF_2X, - self.SEEK_STATE_PAUSE: self.SEEK_STATE_PLAY, + self.SEEK_STATE_PAUSE: self.SEEK_STATE_SM_EIGHTH, self.SEEK_STATE_FF_2X: self.SEEK_STATE_FF_4X, self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_8X, self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_32X, self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_64X, - self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_64X, + self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_128X, + self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_128X, self.SEEK_STATE_BACK_4X: self.SEEK_STATE_PLAY, self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_4X, - self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_32X + self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_32X, + self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_64X, + self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_HALF, + self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_HALF, + self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_SM_QUARTER } self.setSeekState(lookup[self.seekstate]); def seekBack(self): lookup = { self.SEEK_STATE_PLAY: self.SEEK_STATE_BACK_4X, - self.SEEK_STATE_PAUSE: self.SEEK_STATE_BACK_4X, + self.SEEK_STATE_PAUSE: self.SEEK_STATE_PAUSE, self.SEEK_STATE_FF_2X: self.SEEK_STATE_PLAY, self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_2X, self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_4X, self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_8X, self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_32X, + self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_64X, self.SEEK_STATE_BACK_4X: self.SEEK_STATE_BACK_32X, self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_64X, - self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_64X + self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_128X, + self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_128X, + self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_QUARTER, + self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_EIGHTH, + self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_PAUSE } self.setSeekState(lookup[self.seekstate]); +from RecordTimer import parseEvent + class InfoBarInstantRecord: """Instant Record - handles the instantRecord action in order to start/stop instant records""" @@ -571,19 +614,25 @@ class InfoBarInstantRecord: def startInstantRecording(self): serviceref = self.session.nav.getCurrentlyPlayingServiceReference() - + # try to get event info - epg = None + event = None try: service = self.session.nav.getCurrentService() info = service.info() ev = info.getEvent(0) - epg = ev + event = ev except: pass + if event is not None: + data = parseEvent(event) + data = (data[0], data[1] + 3600 * 10, data[2], data[3], data[4]) + else: + data = (time.time(), time.time() + 3600 * 10, "instant record", "", None) + # fix me, description. - self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record") + self.recording = self.session.nav.recordWithTimer(serviceref, *data) self.recording.dontSave = True #self["BlinkingPoint"].setConnect(lambda: self.recording.isRunning())