X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/0ee61341634a64b426a5934065e43fdade81971d..f70fe619f352c00df9ab2bfa345164e0ca196b6b:/lib/python/Screens/InfoBarGenerics.py diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f1267afa..499d9723 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -81,6 +81,10 @@ class InfoBarShowHide: def __onHide(self): self.__state = self.STATE_HIDDEN + def doShow(self): + self.show() + self.startHideTimer() + def doTimerHide(self): self.hideTimer.stop() if self.__state == self.STATE_SHOWN: @@ -212,7 +216,7 @@ class InfoBarNumberZap: # print "You pressed number " + str(number) if number == 0: self.servicelist.recallPrevService() - self.show() + self.doShow() else: self.session.openWithCallback(self.numberEntered, NumberZap, number) @@ -283,15 +287,21 @@ class InfoBarChannelSelection: self.servicelist.moveDown() self.session.execDialog(self.servicelist) - def zapUp(self): + def zapUp(self): + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes": + if self.servicelist.inBouquet() and self.servicelist.atBegin(): + self.servicelist.prevBouquet() self.servicelist.moveUp() self.servicelist.zap() - self.show() + self.doShow() - def zapDown(self): - self.servicelist.moveDown() + def zapDown(self): + if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.inBouquet() and self.servicelist.atEnd(): + self.servicelist.nextBouquet() + else: + self.servicelist.moveDown() self.servicelist.zap() - self.show() + self.doShow() class InfoBarMenu: """ Handles a menu action, to open the (main) menu """ @@ -523,14 +533,22 @@ class InfoBarSeek: del self.fwdKeyTimer del self.rwdKeyTimer - def isSeekable(self): + def getSeek(self): service = self.session.nav.getCurrentService() if service is None: return False - if service.seek() is None: + + seek = service.seek() + + if seek is None or not seek.isCurrentlySeekable(): + return None + + return seek + + def isSeekable(self): + if self.getSeek() is None: return False - else: - return True + return True def __seekableStatusChanged(self): print "seekable status changed!" @@ -551,7 +569,7 @@ class InfoBarSeek: if service is None: return False - if service.seek() is None: + if not self.isSeekable(): if state not in [self.SEEK_STATE_PLAY, self.SEEK_STATE_PAUSE]: state = self.SEEK_STATE_PLAY @@ -597,9 +615,10 @@ class InfoBarSeek: if service is None: return - seekable = service.seek() + seekable = self.getSeek() if seekable is None: return + seekable.seekTo(90 * seektime) def seekFwd(self): @@ -670,13 +689,9 @@ class InfoBarSeek: def fwdSeekTo(self, minutes): print "Seek", minutes, "minutes forward" if minutes != 0: - service = self.session.nav.getCurrentService() - if service is None: - return - seekable = service.seek() - if seekable is None: - return - seekable.seekRelative(1, minutes * 60 * 90000) + seekable = self.getSeek() + if seekable is not None: + seekable.seekRelative(1, minutes * 60 * 90000) def rwdTimerFire(self): print "rwdTimerFire" @@ -704,6 +719,12 @@ class InfoBarSeek: def __evSOF(self): self.setSeekState(self.SEEK_STATE_PLAY) + self.doSeek(0) + + def seekRelative(self, diff): + seekable = self.getSeek() + if seekable is not None: + seekable.seekRelative(0, diff) from Screens.PVRState import PVRState @@ -775,7 +796,7 @@ class InfoBarTimeshift: { "timeshiftActivateEnd": self.activateTimeshiftEnd, # something like "pause key" "timeshiftActivateEndAndPause": self.activateTimeshiftEndAndPause # something like "backward key" - }) + }, prio=-1) # priority over record self.timeshift_enabled = 0 self.timeshift_state = 0 @@ -792,9 +813,6 @@ class InfoBarTimeshift: return service.timeshift() def startTimeshift(self): - # TODO: check for harddisk! (or do this in the interface? would make - # more sense... for example radio could be timeshifted in memory, - # and the decision can't be made here) print "enable timeshift" ts = self.getTimeshift() if ts is None: @@ -817,12 +835,21 @@ class InfoBarTimeshift: else: print "timeshift failed" - # nyi def stopTimeshift(self): print "disable timeshift" ts = self.getTimeshift() if ts is None: return + self.session.openWithCallback(self.stopTimeshiftConfirmed, MessageBox, _("Stop Timeshift?"), MessageBox.TYPE_YESNO) + + def stopTimeshiftConfirmed(self, confirmed): + if not confirmed: + return + + ts = self.getTimeshift() + if ts is None: + return + ts.stopTimeshift() self.timeshift_enabled = 0 @@ -842,6 +869,7 @@ class InfoBarTimeshift: else: self.setSeekState(self.SEEK_STATE_PLAY) ts.activateTimeshift() + self.seekRelative(0) # same as activateTimeshiftEnd, but pauses afterwards. def activateTimeshiftEndAndPause(self): @@ -910,15 +938,8 @@ class InfoBarInstantRecord: if event is not None: data = parseEvent(event) - begin = data[0] - if begin < time.time(): - begin = time.time() - - end = data[1] - if end < begin: - end = begin - - end += 3600 * 10 + begin = time.time() + end = begin + 3600 * 10 data = (begin, end, data[2], data[3], data[4]) else: