split out movielist actions out of pvr actions
authorFelix Domke <tmbinc@elitedvb.net>
Sun, 15 Jan 2006 12:10:15 +0000 (12:10 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Sun, 15 Jan 2006 12:10:15 +0000 (12:10 +0000)
data/keymap.xml
lib/python/Screens/InfoBar.py
lib/python/Screens/InfoBarGenerics.py

index 24c36a8..b7ea52b 100644 (file)
                <key id="KEY_MUTE" mapto="delete" flags="mr" />
        </map>  
 
-       <map context="InfobarPVRActions">
+       <map context="InfobarSeekActions">
                <key id="KEY_YELLOW" mapto="pauseService" flags="m" />
                <key id="KEY_GREEN" mapto="unPauseService" flags="m" />
                <key id="KEY_RED" mapto="seekBack" flags="m" />
                
                <key id="KEY_LEFT" mapto="seekBack" flags="m" />
                <key id="KEY_RIGHT" mapto="seekFwd" flags="m" />
+       </map>
+
+       <map context="InfobarTimeshiftActions">
+               <key id="KEY_YELLOW" mapto="timeshiftStart" flags="m" />
+               <key id="KEY_TV" mapto="timeshiftStop" flags="m" />
+       </map>
 
+       <map context="InfobarMovieListActions">
                <key id="KEY_UP" mapto="up" flags="m" />
                <key id="KEY_DOWN" mapto="down" flags="m" />
                <key id="KEY_VIDEO" mapto="movieList" flags="m" />
index c2616da..f084c76 100644 (file)
@@ -13,9 +13,9 @@ from Tools.Notifications import AddNotificationWithCallback
 
 from Screens.InfoBarGenerics import InfoBarVolumeControl, InfoBarShowHide, \
        InfoBarPowerKey, InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, \
-       InfoBarEPG, InfoBarEvent, InfoBarServiceName, InfoBarPVR, InfoBarInstantRecord, \
+       InfoBarEPG, InfoBarEvent, InfoBarServiceName, InfoBarSeek, InfoBarInstantRecord, \
        InfoBarAudioSelection, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, \
-       InfoBarSubserviceSelection, InfoBarTuner
+       InfoBarSubserviceSelection, InfoBarTuner, InfoBarShowMovies, InfoBarTimeshift
 
 from Screens.HelpMenu import HelpableScreen, HelpMenu
 
@@ -63,7 +63,7 @@ class InfoBar(Screen, InfoBarVolumeControl, InfoBarShowHide, InfoBarPowerKey,
 
 class MoviePlayer(Screen, InfoBarVolumeControl, InfoBarShowHide, InfoBarPowerKey, \
                InfoBarMenu, \
-               InfoBarServiceName, InfoBarPVR, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications):
+               InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications):
                
        def __init__(self, session, service):
                Screen.__init__(self, session)
@@ -73,7 +73,7 @@ class MoviePlayer(Screen, InfoBarVolumeControl, InfoBarShowHide, InfoBarPowerKey
                                "leavePlayer": (self.leavePlayer, _("leave movie player..."))
                        })
                
-               for x in HelpableScreen, InfoBarVolumeControl, InfoBarShowHide, InfoBarPowerKey, InfoBarMenu, InfoBarServiceName, InfoBarPVR, InfoBarAudioSelection, InfoBarNotifications:
+               for x in HelpableScreen, InfoBarVolumeControl, InfoBarShowHide, InfoBarPowerKey, InfoBarMenu, InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, InfoBarNotifications:
                        x.__init__(self)
 
                self["CurrentTime"] = ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
index 0d1f874..de12c09 100644 (file)
@@ -518,8 +518,9 @@ class InfoBarServiceName:
        def __init__(self):
                self["ServiceName"] = ServiceName(self.session.nav)
 
-class InfoBarPVR:
-
+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)
@@ -539,9 +540,8 @@ class InfoBarPVR:
        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):
-               self["PVRActions"] = HelpableActionMap(self, "InfobarPVRActions", 
+               self["SeekActions"] = HelpableActionMap(self, "InfobarSeekActions", 
                        {
                                "pauseService": (self.pauseService, "pause"),
                                "unPauseService": (self.unPauseService, "continue"),
@@ -550,10 +550,6 @@ class InfoBarPVR:
                                "seekFwdUp": (self.seekFwdUp, "skip forward"),
                                "seekBack": (self.seekBack, "skip backward"),
                                "seekBackUp": (self.seekBackUp, "skip backward"),
-                                                        
-                               "movieList": (self.showMovies, "movie list"),
-                               "up": (self.showMovies, "movie list"),
-                               "down": (self.showMovies, "movie list")
                        })
 
                self.seekstate = self.SEEK_STATE_PLAY
@@ -727,6 +723,59 @@ class InfoBarPVR:
        def rwdSeekTo(self, minutes):
                self.fwdSeekTo(0 - minutes)
 
+class InfoBarShowMovies:
+
+       # i don't really like this class. 
+       # it calls a not further specified "movie list" on up/down/movieList,
+       # so this is not moe than an action map
+       def __init__(self):
+               self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions", 
+                       {
+                               "movieList": (self.showMovies, "movie list"),
+                               "up": (self.showMovies, "movie list"),
+                               "down": (self.showMovies, "movie list")
+                       })
+
+class InfoBarTimeshift:
+       def __init__(self):
+               self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions", 
+                       {
+                               "timeshiftStart": (self.startTimeshift, "start timeshift "),
+                               "timeshiftStop": (self.stopTimeshift, "stop timeshift")
+                       })
+               self.tshack = 0
+       
+       def getTimeshift(self):
+               service = self.session.nav.getCurrentService()
+               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:
+                       self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
+                       print "no ts interface"
+                       return
+               print "ok, timeshift enabled"
+               if self.tshack == 0:
+                       ts.startTimeshift()
+                       self.tshack = 1
+               else:
+                       pauseable = self.session.nav.getCurrentService().pause()
+                       pauseable.pause() # switch to record
+
+       def stopTimeshift(self):
+               print "disable timeshift"
+               ts = self.getTimeshift()
+               if ts is None:
+                       return
+               ts.stopTimeshift()
+               self.tshack = 0
+               
+
 from RecordTimer import parseEvent
 
 class InfoBarInstantRecord:
@@ -893,6 +942,7 @@ class InfoBarAdditionalInfo:
                        self.hideSubServiceIndication()
 
        def checkDolby(self, service):
+               # FIXME
                dolby = False
                audio = service.audioTracks()
                if audio is not None: