show green button and subservices-text only when subservices are available (showing...
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index ddfac4a04e9538ca0f23bf1d7ceabebaf4d6c64f..cd9719bde1088ca889ace5cbaf73841585fd6388 100644 (file)
@@ -1,7 +1,7 @@
 from Screen import Screen
 from Components.ActionMap import ActionMap, HelpableActionMap
 from Components.ActionMap import NumberActionMap
-from Components.Label import Label
+from Components.Label import *
 from Components.config import configfile, configsequencearg
 from Components.config import config, configElement, ConfigSubsection, configSequence
 from ChannelSelection import ChannelSelection
@@ -443,7 +443,7 @@ class InfoBarInstantRecord:
                self.recording = None
                
                self["BlinkingPoint"] = BlinkingPixmapConditional()
-               self.onShown.append(self["BlinkingPoint"].hidePixmap)
+               self.onShown.append(self["BlinkingPoint"].hideWidget)
                self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording)
                
        def stopCurrentRecording(self): 
@@ -512,6 +512,26 @@ class InfoBarAudioSelection:
                if n > 0:
                        self.session.open(AudioSelection, audio)
 
+from Screens.SubserviceSelection import SubserviceSelection
+
+class InfoBarSubserviceSelection:
+       def __init__(self):
+               self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions",
+                       {
+                               "subserviceSelection": (self.subserviceSelection, "Subservice list..."),
+                       })
+
+       def subserviceSelection(self):
+               service = self.session.nav.getCurrentService()
+               subservices = service.subServices()
+               n = subservices.getNumberOfSubservices()
+               if n > 0:
+                       self.session.openWithCallback(self.subserviceSelected, SubserviceSelection, subservices)
+
+       def subserviceSelected(self, service):
+               if not service is None:
+                       self.session.nav.playService(service)
+
 class InfoBarAdditionalInfo:
        def __init__(self):
                self["DolbyActive"] = PixmapConditional()
@@ -528,9 +548,15 @@ class InfoBarAdditionalInfo:
                
                self["ButtonRed"] = Pixmap()
                self["ButtonRedText"] = Label(_("Record"))
-               self["ButtonGreen"] = Pixmap()
-               self["ButtonYellow"] = Pixmap()
-               self["ButtonBlue"] = Pixmap()
+               self["ButtonGreen"] = PixmapConditional()
+               self["ButtonGreen"].setConnect(lambda: self.session.nav.getCurrentService().subServices().getNumberOfSubservices() > 0)
+#              self["ButtonGreenText"] = Label(text = _("Subservices"))
+               self["ButtonGreenText"] = LabelConditional(text = _("Subservices"), withTimer = True)
+               self["ButtonGreenText"].setConnect(lambda: self.session.nav.getCurrentService().subServices().getNumberOfSubservices() > 0)
+#              self["ButtonGreenText"].hide()
+#              self["ButtonGreen"].hidePixmap()
+#              self["ButtonYellow"] = Pixmap()
+#              self["ButtonBlue"] = Pixmap()
 
 class InfoBarNotifications:
        def __init__(self):