enable/disable pip with blue button in extensions menu
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 49d82477b1be75fe2a07fa7c0049ca682ab1b703..e3caa6e81a583785b0ed647ff37ecb35b5bc597f 100644 (file)
@@ -12,6 +12,7 @@ from Components.ProgressBar import *
 from Components.ServiceEventTracker import ServiceEventTracker
 from Components.Sources.CurrentService import CurrentService
 from Components.Sources.EventInfo import EventInfo
+from Components.Sources.RadioText import RadioText
 from Components.Sources.FrontendStatus import FrontendStatus
 from Components.Sources.Boolean import Boolean
 from Components.Sources.Clock import Clock
@@ -84,7 +85,9 @@ class InfoBarShowHide:
        
        def startHideTimer(self):
                if self.__state == self.STATE_SHOWN and not self.__locked:
-                       self.hideTimer.start(5000, True)
+                       idx = config.usage.infobar_timeout.index
+                       if idx:
+                               self.hideTimer.start(idx*1000, True)
 
        def __onHide(self):
                self.__state = self.STATE_HIDDEN
@@ -189,7 +192,8 @@ class InfoBarNumberZap:
 #              print "You pressed number " + str(number)
                if number == 0:
                        self.servicelist.recallPrevService()
-                       self.doShow()
+                       if config.usage.show_infobar_on_zap.value:
+                               self.doShow()
                else:
                        self.session.openWithCallback(self.numberEntered, NumberZap, number)
 
@@ -246,7 +250,6 @@ class InfoBarChannelSelection:
                #instantiate forever
                self.servicelist = self.session.instantiateDialog(ChannelSelection)
                
-               print "__init__: servicelist is", self.servicelist
                if config.misc.initialchannelselection.value:
                        self.onShown.append(self.firstRun)
 
@@ -277,7 +280,6 @@ class InfoBarChannelSelection:
                self.onShown.remove(self.firstRun)
                config.misc.initialchannelselection.value = False
                config.misc.initialchannelselection.save()
-               print "servicelist is", self.servicelist
                self.switchChannelDown()
 
        def historyBack(self):
@@ -313,7 +315,8 @@ class InfoBarChannelSelection:
                else:
                        self.servicelist.moveUp()
                self.servicelist.zap()
-               self.doShow()
+               if config.usage.show_infobar_on_zap.value:
+                       self.doShow()
 
        def zapDown(self):
                if self.servicelist.inBouquet():
@@ -331,7 +334,8 @@ class InfoBarChannelSelection:
                else:
                        self.servicelist.moveDown()
                self.servicelist.zap()
-               self.doShow()
+               if config.usage.show_infobar_on_zap.value:
+                       self.doShow()
 
 class InfoBarMenu:
        """ Handles a menu action, to open the (main) menu """
@@ -527,6 +531,11 @@ class InfoBarEvent:
                self["Event_Now"] = EventInfo(self.session.nav, EventInfo.NOW)
                self["Event_Next"] = EventInfo(self.session.nav, EventInfo.NEXT)
 
+class InfoBarRadioText:
+       """provides radio (RDS) text info display"""
+       def __init__(self):
+               self["RadioText"] = RadioText(self.session.nav)
+
 class InfoBarServiceName:
        def __init__(self):
                self["CurrentService"] = CurrentService(self.session.nav)
@@ -800,13 +809,14 @@ class InfoBarSeek:
        def checkSkipShowHideLock(self):
                wantlock = self.seekstate != self.SEEK_STATE_PLAY
                
-               if self.lockedBecauseOfSkipping and not wantlock:
-                       self.unlockShow()
-                       self.lockedBecauseOfSkipping = False
+               if config.usage.show_infobar_on_zap.value:
+                       if self.lockedBecauseOfSkipping and not wantlock:
+                               self.unlockShow()
+                               self.lockedBecauseOfSkipping = False
                
-               if wantlock and not self.lockedBecauseOfSkipping:
-                       self.lockShow()
-                       self.lockedBecauseOfSkipping = True
+                       if wantlock and not self.lockedBecauseOfSkipping:
+                               self.lockShow()
+                               self.lockedBecauseOfSkipping = True
 
        def __evEOF(self):
                if self.seekstate != self.SEEK_STATE_PLAY:
@@ -926,8 +936,8 @@ class InfoBarTimeshift:
                print "enable timeshift"
                ts = self.getTimeshift()
                if ts is None:
-#                      self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
-#                      print "no ts interface"
+                       self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
+                       print "no ts interface"
                        return 0;
                
                if self.timeshift_enabled:
@@ -1136,10 +1146,12 @@ class InfoBarSubtitles:
                return "Enable Subtitles: " + name
 
        def enableSubtitle(self, subtitles):
-               print "enable subitles", subtitles
-               self.selected_subtitle = subtitles
-               self.subtitles_enabled = True
-               
+               if self.selected_subtitle != subtitles:
+                       print "enable subtitles", subtitles
+                       self.subtitles_enabled = False
+                       self.selected_subtitle = subtitles
+                       self.subtitles_enabled = True
+
        def subtitlesEnabled(self):
                return self.subtitles_enabled
                
@@ -1150,11 +1162,10 @@ class InfoBarSubtitles:
 class InfoBarPiP:
        def __init__(self):
                self.session.pipshown = False
-               
-               self.addExtension((self.getShowHideName, self.showPiP, self.available), "1")
-               self.addExtension((self.getMoveName, self.movePiP, self.pipShown), "2")
-               self.addExtension((self.getSwapName, self.swapPiP, self.pipShown), "3")
 
+               self.addExtension((self.getShowHideName, self.showPiP, self.available), "blue")
+               self.addExtension((self.getMoveName, self.movePiP, self.pipShown), "green")
+               self.addExtension((self.getSwapName, self.swapPiP, self.pipShown), "yellow")
        
        def available(self):
                return True
@@ -1403,7 +1414,6 @@ class InfoBarAudioSelection:
                        self.audioChannel.selectChannel(mode[1])
                del self.audioChannel
 
-               
 class InfoBarSubserviceSelection:
        def __init__(self):
                self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions",
@@ -1453,6 +1463,8 @@ class InfoBarSubserviceSelection:
                                if newservice.valid():
                                        del subservices
                                        del service
+                                       if config.usage.show_infobar_on_zap.value:
+                                               self.doShow()
                                        self.session.nav.playService(newservice)
 
        def subserviceSelection(self):
@@ -1484,6 +1496,8 @@ class InfoBarSubserviceSelection:
                                        self.session.open(SubservicesQuickzap, service[2])
                        else:
                                self["SubserviceQuickzapAction"].setEnabled(True)
+                               if config.usage.show_infobar_on_zap.value:
+                                       self.doShow()
                                self.session.nav.playService(service[1])
 
 class InfoBarAdditionalInfo:
@@ -1776,7 +1790,7 @@ class InfoBarSubtitleSupport(object):
        
        def setSubtitlesEnable(self, enable=True):
                subtitle = self.getCurrentServiceSubtitle()
-               if enable and self.__selected_subtitle:
+               if enable and self.__selected_subtitle is not None:
                        if subtitle and not self.__subtitles_enabled:
                                subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle)
                                self.subtitle_window.show()