follow api changes
authorFelix Domke <tmbinc@elitedvb.net>
Thu, 26 Jan 2006 13:30:26 +0000 (13:30 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Thu, 26 Jan 2006 13:30:26 +0000 (13:30 +0000)
lib/python/Components/Button.py
lib/python/Components/EventInfo.py
lib/python/Screens/ChannelSelection.py
lib/python/Screens/InfoBar.py
lib/python/Screens/InfoBarGenerics.py
lib/python/Screens/Makefile.am
lib/python/Tools/FuzzyDate.py

index d9226b6dbeaf516a9d1e2ad928cc7c1805fe7149..cb4b42139550fad53e2be63be7407480741166bc 100644 (file)
@@ -17,11 +17,9 @@ class Button(HTMLComponent, GUIComponent, VariableText):
                return 0
        
        def disable(self):
-#              self.instance.hide()
                pass
        
        def enable(self):
-#              self.instance.show()
                pass
 
 # html:
index 36a5aa4d55285d6d5f1f8a01be61b231898049f7..de16a1737fcf75a470284a03811eaf671cdda9f0 100644 (file)
@@ -13,13 +13,13 @@ class EventInfo(PerServiceDisplay):
        Next_StartTime = 5
        
        def __init__(self, navcore, now_or_next):
-               # listen to evUpdatedEventInfo and evStopService
-               # note that evStopService will be called once to establish a known state
+               # listen to evUpdatedEventInfo and evEnd
+               # note that evEnd will be called once to establish a known state
                self.now_or_next = now_or_next
                PerServiceDisplay.__init__(self, navcore, 
                        { 
-                               pNavigation.evUpdatedEventInfo: self.ourEvent, 
-                               pNavigation.evStopService: self.stopEvent 
+                               iPlayableService.evUpdatedEventInfo: self.ourEvent, 
+                               iPlayableService.evEnd: self.stopEvent 
                        })
 
        def ourEvent(self):
@@ -53,8 +53,8 @@ class EventInfoProgress(PerServiceDisplayProgress, EventInfo):
                self.now_or_next = now_or_next
                PerServiceDisplayProgress.__init__(self, navcore, 
                        { 
-                               pNavigation.evUpdatedEventInfo: self.ourEvent, 
-                               pNavigation.evStopService: self.stopEvent 
+                               iPlayableService.evUpdatedEventInfo: self.ourEvent, 
+                               iPlayableService.evEnd: self.stopEvent 
                        })
 
        def update(self, ev):
index 89bc2154d8d393cd69ff9c74426f447b2027ffbd..d66353c96235b9cd5da1a467f4b00fef30aa59d7 100644 (file)
@@ -694,13 +694,13 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                                "cancel": self.cancel,
                                "ok": self.channelSelected,
                        })
-               self.onShown.append(self.onShow)
+               self.onShown.append(self.__onShown)
 
                self.lastChannelRootTimer = eTimer()
-               self.lastChannelRootTimer.timeout.get().append(self.onCreate)
+               self.lastChannelRootTimer.timeout.get().append(self.__onCreate)
                self.lastChannelRootTimer.start(100,True)
 
-       def onCreate(self):
+       def __onCreate(self):
                self.setTvMode()
                self.servicePathTV = [ ]
                self.restoreRoot()
@@ -709,7 +709,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                        self.setCurrentSelection(lastservice)
                        self.session.nav.playService(lastservice)
 
-       def onShow(self):
+       def __onShown(self):
                self.recallBouquetMode()
                ref = self.session.nav.getCurrentlyPlayingServiceReference()
                if ref is not None and ref.valid() and ref.getPath() == "":
@@ -887,7 +887,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                        self.servicelist.setCurrent(lastservice)
                        self.session.nav.playService(lastservice)
                        self.servicelist.setPlayableIgnoreService(lastservice)
-               self.info.instance.show()
+               self.info.show()
 
        def channelSelected(self): # just return selected service
                ref = self.getCurrentSelection()
@@ -907,7 +907,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                        self.saveRoot()
 
        def closeRadio(self):
-               self.info.instance.hide()
+               self.info.hide()
                #set previous tv service
                lastservice=eServiceReference(config.tv.lastservice.value)
                self.session.nav.playService(lastservice)
@@ -917,7 +917,7 @@ class SimpleChannelSelection(ChannelSelectionBase):
        def __init__(self, session, title):
                ChannelSelectionBase.__init__(self, session)
                self.title = title
-               self.onShown.append(self.onExecCallback)
+               self.onShown.append(self.__onExecCallback)
 
                self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions"],
                        {
@@ -927,7 +927,7 @@ class SimpleChannelSelection(ChannelSelectionBase):
                                "keyTV": self.setModeTv,
                        })
 
-       def onExecCallback(self):
+       def __onExecCallback(self):
                self.session.currentDialog.instance.setTitle(self.title)
                self.setModeTv()
 
index 147f891bcd5b3dec0133da8883fe6db6c7d8ebe1..51e77a8b6e469bb13a674847acc8cd5092ac5080 100644 (file)
@@ -16,7 +16,7 @@ from Screens.InfoBarGenerics import InfoBarShowHide, \
        InfoBarEPG, InfoBarEvent, InfoBarServiceName, InfoBarSeek, InfoBarInstantRecord, \
        InfoBarAudioSelection, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, \
        InfoBarSubserviceSelection, InfoBarTuner, InfoBarShowMovies, InfoBarTimeshift,  \
-       InfoBarServiceNotifications
+       InfoBarServiceNotifications, InfoBarPVRState
 
 from Screens.HelpMenu import HelpableScreen, HelpMenu
 
@@ -65,7 +65,7 @@ class InfoBar(Screen, InfoBarShowHide, InfoBarPowerKey,
 class MoviePlayer(Screen, InfoBarShowHide, InfoBarPowerKey, \
                InfoBarMenu, \
                InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications,
-               InfoBarServiceNotifications):
+               InfoBarServiceNotifications, InfoBarPVRState):
                
        def __init__(self, session, service):
                Screen.__init__(self, session)
@@ -78,7 +78,7 @@ class MoviePlayer(Screen, InfoBarShowHide, InfoBarPowerKey, \
                for x in HelpableScreen, InfoBarShowHide, InfoBarPowerKey, InfoBarMenu, \
                                InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, \
                                InfoBarAudioSelection, InfoBarNotifications, \
-                               InfoBarServiceNotifications:
+                               InfoBarServiceNotifications, InfoBarPVRState:
                        x.__init__(self)
 
                self["CurrentTime"] = ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
index 2da8a4bd04df032633cf2822e05acc3752123fa4..f40feb3f82f72f155a2a5f11c9d764daca8b9ee9 100644 (file)
@@ -41,7 +41,7 @@ from Menu import MainMenu, mdom
 class InfoBarDish:
        def __init__(self):
                self.dishDialog = self.session.instantiateDialog(Dish)
-               self.onShown.append(self.dishDialog.instance.show)
+               self.onShown.append(self.dishDialog.show)
 
 class InfoBarShowHide:
        """ InfoBar show/hide control, accepts toggleShow and hide actions, might start
@@ -58,49 +58,56 @@ class InfoBarShowHide:
                                "hide": self.hide,
                        })
 
-               self.state = self.STATE_SHOWN
+               self.__state = self.STATE_SHOWN
+               self.__locked = 0
                
                self.onExecBegin.append(self.show)
-               self.onClose.append(self.delHideTimer)
                
                self.hideTimer = eTimer()
                self.hideTimer.timeout.get().append(self.doTimerHide)
                self.hideTimer.start(5000, True)
+               
+               self.onShow.append(self.__onShow)
+               self.onHide.append(self.__onHide)
 
-       def delHideTimer(self):
-               del self.hideTimer
+       def __onShow(self):
+               self.__state = self.STATE_SHOWN
+               self.startHideTimer()
+       
+       def startHideTimer(self):
+               if self.__state == self.STATE_SHOWN and not self.__locked:
+                       self.hideTimer.start(5000, True)
 
-       def hide(self): 
-               self.instance.hide()
-               
-       def show(self):
-               self.state = self.STATE_SHOWN
-               self.hideTimer.start(5000, True)
+       def __onHide(self):
+               self.__state = self.STATE_HIDDEN
 
        def doTimerHide(self):
                self.hideTimer.stop()
-               if self.state == self.STATE_SHOWN:
-                       self.instance.hide()
-                       self.state = self.STATE_HIDDEN
+               if self.__state == self.STATE_SHOWN:
+                       self.hide()
 
        def toggleShow(self):
-               if self.state == self.STATE_SHOWN:
-                       self.instance.hide()
-                       #pls check animation support, sorry
-#                      self.startHide()
+               if self.__state == self.STATE_SHOWN:
+                       self.hide()
                        self.hideTimer.stop()
-                       self.state = self.STATE_HIDDEN
-               elif self.state == self.STATE_HIDDEN:
-                       self.instance.show()
+               elif self.__state == self.STATE_HIDDEN:
                        self.show()
-                       
-       def startShow(self):
-               self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
-               self.state = self.STATE_SHOWN
+
+       def lockShow(self):
+               self.__locked = self.__locked + 1
+               self.show()
        
-       def startHide(self):
-               self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
-               self.state = self.STATE_HIDDEN
+       def unlockShow(self):
+               self.__locked = self.__locked - 1
+               self.startHideTimer()
+
+#      def startShow(self):
+#              self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
+#              self.__state = self.STATE_SHOWN
+#      
+#      def startHide(self):
+#              self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
+#              self.__state = self.STATE_HIDDEN
 
 class NumberZap(Screen):
        def quit(self):
@@ -202,7 +209,6 @@ class InfoBarNumberZap:
 #              print "You pressed number " + str(number)
                if number == 0:
                        self.servicelist.recallPrevService()
-                       self.instance.show()
                        self.show()
                else:
                        self.session.openWithCallback(self.numberEntered, NumberZap, number)
@@ -265,27 +271,25 @@ class InfoBarChannelSelection:
                                "zapUp": (self.zapUp, _("next channel")),
                                "zapDown": (self.zapDown, _("previous channel")),
                        })
-                       
-       def switchChannelUp(self):      
+
+       def switchChannelUp(self):
                self.servicelist.moveUp()
                self.session.execDialog(self.servicelist)
 
-       def switchChannelDown(self):    
+       def switchChannelDown(self):
                self.servicelist.moveDown()
                self.session.execDialog(self.servicelist)
 
        def     zapUp(self):
                self.servicelist.moveUp()
                self.servicelist.zap()
-               self.instance.show()
                self.show()
 
        def     zapDown(self):
                self.servicelist.moveDown()
                self.servicelist.zap()
-               self.instance.show()
                self.show()
-               
+
 class InfoBarMenu:
        """ Handles a menu action, to open the (main) menu """
        def __init__(self):
@@ -451,30 +455,33 @@ class InfoBarServiceName:
 class InfoBarSeek:
        """handles actions like seeking, pause"""
        
-       # ispause, isff, issm, skip
-       SEEK_STATE_PLAY = (0, 0, 0, 0)
-       SEEK_STATE_PAUSE = (1, 0, 0, 0)
-       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, 4, 0, 32)
-       SEEK_STATE_FF_64X = (0, 4, 0, 64)
-       SEEK_STATE_FF_128X = (0, 4, 0, 128)
+       # ispause, isff, issm
+       SEEK_STATE_PLAY = (0, 0, 0, "")
+       SEEK_STATE_PAUSE = (1, 0, 0, "||")
+       SEEK_STATE_FF_2X = (0, 2, 0, ">> 2x")
+       SEEK_STATE_FF_4X = (0, 4, 0, ">> 4x")
+       SEEK_STATE_FF_8X = (0, 8, 0, ">> 8x")
+       SEEK_STATE_FF_32X = (0, 32, 0, ">> 32x")
+       SEEK_STATE_FF_64X = (0, 64, 0, ">> 64x")
+       SEEK_STATE_FF_128X = (0, 128, 0, ">> 128x")
        
-       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_BACK_4X = (0, -4, 0, "<< 4x")
+       SEEK_STATE_BACK_32X = (0, -32, 0, "<< 32x")
+       SEEK_STATE_BACK_64X = (0, -64, 0, "<< 64x")
+       SEEK_STATE_BACK_128X = (0, -128, 0, "<< 128x")
        
-       SEEK_STATE_SM_HALF = (0, 0, 2, 0)
-       SEEK_STATE_SM_QUARTER = (0, 0, 4, 0)
-       SEEK_STATE_SM_EIGHTH = (0, 0, 8, 0)
+       SEEK_STATE_SM_HALF = (0, 0, 2, "/2")
+       SEEK_STATE_SM_QUARTER = (0, 0, 4, "/4")
+       SEEK_STATE_SM_EIGHTH = (0, 0, 8, "/8")
        
        def __init__(self):
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
                        {
-                               pNavigation.evSeekableStatusChanged: self.__seekableStatusChanged,
-                               pNavigation.evNewService: self.__serviceStarted
+                               iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged,
+                               iPlayableService.evStart: self.__serviceStarted,
+                               
+                               iPlayableService.evEOF: self.__evEOF,
+                               iPlayableService.evSOF: self.__evSOF,
                        })
                self["SeekActions"] = HelpableActionMap(self, "InfobarSeekActions", 
                        {
@@ -489,10 +496,7 @@ class InfoBarSeek:
                        # give them a little more priority to win over color buttons
 
                self.seekstate = self.SEEK_STATE_PLAY
-               self.seekTimer = eTimer()
-               self.seekTimer.timeout.get().append(self.seekTimerFired)
-               self.skipinterval = 500 # 500ms skip interval
-               self.onClose.append(self.delSeekTimer)
+               self.onClose.append(self.delTimer)
                
                self.fwdtimer = False
                self.fwdKeyTimer = eTimer()
@@ -501,6 +505,10 @@ class InfoBarSeek:
                self.rwdtimer = False
                self.rwdKeyTimer = eTimer()
                self.rwdKeyTimer.timeout.get().append(self.rwdTimerFire)
+               
+               self.onPlayStateChanged = [ ]
+               
+               self.lockedBecauseOfSkipping = False
        
        def up(self):
                pass
@@ -508,21 +516,10 @@ class InfoBarSeek:
        def down(self):
                pass
        
-       def delSeekTimer(self):
-               del self.seekTimer
+       def delTimer(self):
                del self.fwdKeyTimer
                del self.rwdKeyTimer
        
-       def seekTimerFired(self):
-               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 isSeekable(self):
                service = self.session.nav.getCurrentService()
                if service is None:
@@ -547,7 +544,6 @@ class InfoBarSeek:
 
        def setSeekState(self, state):
                service = self.session.nav.getCurrentService()
-               self.seekTimer.stop()
                
                if service is None:
                        return False
@@ -565,35 +561,17 @@ class InfoBarSeek:
                oldstate = self.seekstate
                self.seekstate = state
                
-               for i in range(4):
+               for i in range(3):
                        if oldstate[i] != self.seekstate[i]:
-                               (self.session.nav.pause, pauseable.setFastForward, pauseable.setSlowMotion, self.setSkipMode)[i](self.seekstate[i])
+                               (self.session.nav.pause, pauseable.setFastForward, pauseable.setSlowMotion)[i](self.seekstate[i])
 
-               return True
-               
-       def setSkipMode(self, skipmode):
-               print "setskipmode", skipmode
-               self.skipmode = skipmode
-               if skipmode == 0:
-                       self.seekTimer.stop()
-               else:
-                       self.seekTimer.start(500)
-               
-               service = self.session.nav.getCurrentService()
-               if service is None:
-                       return
+               for c in self.onPlayStateChanged:
+                       c(self.seekstate)
                
-               seekable = service.seek()
-               if seekable is None:
-                       return
+               self.checkSkipShowHideLock()
 
-               if skipmode:
-                       seekable.setTrickmode(1)
-               else:
-                       seekable.setTrickmode(0)
+               return True
                
-               self.seekbase = seekable.getPlayPosition()[1] / 90
-       
        def pauseService(self):
                if self.seekstate == self.SEEK_STATE_PAUSE:
                        print "pause, but in fact unpause"
@@ -706,6 +684,36 @@ class InfoBarSeek:
        def rwdSeekTo(self, minutes):
                print "rwdSeekTo"
                self.fwdSeekTo(0 - minutes)
+       
+       def checkSkipShowHideLock(self):
+               wantlock = self.seekstate != self.SEEK_STATE_PLAY
+               
+               if self.lockedBecauseOfSkipping and not wantlock:
+                       self.unlockShow()
+                       self.lockedBecauseOfSkipping = False
+               
+               if wantlock and not self.lockedBecauseOfSkipping:
+                       self.lockShow()
+                       self.lockedBecauseOfSkipping = True
+
+       def __evEOF(self):
+               self.setSeekState(self.SEEK_STATE_PAUSE)
+       
+       def __evSOF(self):
+               self.setSeekState(self.SEEK_STATE_PLAY)
+
+from Screens.PVRState import PVRState
+
+class InfoBarPVRState:
+       def __init__(self):
+               self.onPlayStateChanged.append(self.__playStateChanged)
+               self.pvrStateDialog = self.session.instantiateDialog(PVRState)
+               self.onShow.append(self.pvrStateDialog.show)
+               self.onHide.append(self.pvrStateDialog.hide)
+       
+       def __playStateChanged(self, state):
+               playstateString = state[3]
+               self.pvrStateDialog["state"].setText(playstateString)
 
 class InfoBarShowMovies:
 
@@ -768,7 +776,7 @@ class InfoBarTimeshift:
 
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
                        {
-                               pNavigation.evSeekableStatusChanged: self.__seekableStatusChanged
+                               iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged
                        })
        
        def getTimeshift(self):
@@ -1051,13 +1059,13 @@ class InfoBarAdditionalInfo:
 
        def gotServiceEvent(self, ev):
                service = self.session.nav.getCurrentService()
-               if ev == pNavigation.evUpdatedEventInfo:
+               if ev == iPlayableService.evUpdatedEventInfo:
                        self.checkSubservices(service)
                        self.checkFormat(service)
-               elif ev == pNavigation.evUpdatedInfo:
+               elif ev == iPlayableService.evUpdatedInfo:
                        self.checkCrypted(service)
                        self.checkDolby(service)
-               elif ev == pNavigation.evStopService:
+               elif ev == iPlayableService.evEnd:
                        self.hideSubServiceIndication()
                        self["CryptActive"].hideWidget()
                        self["DolbyActive"].hideWidget()
@@ -1087,7 +1095,7 @@ class InfoBarServiceNotifications:
        def __init__(self):
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
                        {
-                               pNavigation.evEnd: self.serviceHasEnded
+                               iPlayableService.evEnd: self.serviceHasEnded
                        })
 
        def serviceHasEnded(self):
index 95f3a04e5cf62ec0ec27db219f26bf7ad9d9bfad..2629315f9fc9694edfb8142011935d0818a1942b 100644 (file)
@@ -8,4 +8,5 @@ install_PYTHON = \
        EpgSelection.py EventView.py Mute.py Standby.py ServiceInfo.py \
        AudioSelection.py InfoBarGenerics.py HelpMenu.py Wizard.py __init__.py \
        Dish.py SubserviceSelection.py LanguageSelection.py StartWizard.py \
-       TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py
+       TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py PVRState.py
+
index c5055baf133dd7ec53e2101777a1928a695d10c9..121b85b84f92a1ecb2f5dad68aa8bb8ed47a9f6a 100644 (file)
@@ -22,18 +22,18 @@ def FuzzyTime(t):
        return (date, timeres)
 
 if __name__ == "__main__":
-       print "now:    %s %s" % FuzzyDate(time.time())
-       print "1 day:  %s %s" % FuzzyDate(time.time() + 86400)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *2)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *3)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *4)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *5)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *6)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *7)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *8)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *9)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *10)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *11)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *12)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *13)
-       print "2 days: %s %s" % FuzzyDate(time.time() + 86400 *14)
+       print "now:    %s %s" % FuzzyTime(time.time())
+       print "1 day:  %s %s" % FuzzyTime(time.time() + 86400)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *2)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *3)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *4)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *5)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *6)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *7)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *8)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *9)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *10)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *11)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *12)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *13)
+       print "2 days: %s %s" % FuzzyTime(time.time() + 86400 *14)