experimentally merge audio + subtitle streams selection dialogs into one
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index ca9ba550e834d500a9a728e9a10282abdfb0a89b..a6b22e5c27088e6a2138eb6e33f359e7a46d4087 100644 (file)
@@ -487,7 +487,7 @@ class InfoBarEPG:
                self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
                        {
                                "showEventInfo": (self.openEventView, _("show EPG...")),
-                               "showEventInfoPlugin": (self.showEventInfoPlugins, _("show single service EPG...")),
+                               "showEventInfoPlugin": (self.showEventInfoPlugins, _("list of EPG views...")),
                                "showInfobarOrEpgWhenInfobarAlreadyVisible": self.showEventInfoWhenNotVisible,
                        })
 
@@ -1110,15 +1110,21 @@ class InfoBarPVRState:
                        self.pvrStateDialog.hide()
                else:
                        self._mayShow()
-                       
 
 class InfoBarTimeshiftState(InfoBarPVRState):
        def __init__(self):
                InfoBarPVRState.__init__(self, screen=TimeshiftState, force_show = True)
+               self.__hideTimer = eTimer()
+               self.__hideTimer.callback.append(self.__hideTimeshiftState)
 
        def _mayShow(self):
-               if self.execing and self.timeshift_enabled and self.seekstate != self.SEEK_STATE_PLAY:
+               if self.execing and self.timeshift_enabled:
                        self.pvrStateDialog.show()
+                       if self.seekstate == self.SEEK_STATE_PLAY and not self.shown:
+                               self.__hideTimer.start(5*1000, True)
+
+       def __hideTimeshiftState(self):
+               self.pvrStateDialog.hide()
 
 class InfoBarShowMovies:
 
@@ -1666,126 +1672,11 @@ class InfoBarAudioSelection:
                        })
 
        def audioSelection(self):
-               service = self.session.nav.getCurrentService()
-               self.audioTracks = audio = service and service.audioTracks()
-               n = audio and audio.getNumberOfTracks() or 0
-               tlist = []
-               if n > 0:
-                       self.audioChannel = service.audioChannel()
-
-                       idx = 0
-                       while idx < n:
-                               cnt = 0
-                               i = audio.getTrackInfo(idx)
-                               languages = i.getLanguage().split('/')
-                               description = i.getDescription()
-                               language = ""
-
-                               for lang in languages:
-                                       if cnt:
-                                               language += ' / '
-                                       if LanguageCodes.has_key(lang):
-                                               language += LanguageCodes[lang][0]
-                                       else:
-                                               language += lang
-                                       cnt += 1
-
-                               if len(description):
-                                       description += " (" + language + ")"
-                               else:
-                                       description = language
-
-                               tlist.append((description, idx))
-                               idx += 1
-
-                       tlist.sort(key=lambda x: x[0])
-
-                       selectedAudio = self.audioTracks.getCurrentTrack()
-
-                       selection = 0
-
-                       for x in tlist:
-                               if x[1] != selectedAudio:
-                                       selection += 1
-                               else:
-                                       break
-
-                       availableKeys = []
-                       usedKeys = []
-
-                       if SystemInfo["CanDownmixAC3"]:
-                               flist = [(_("AC3 downmix") + " - " +(_("Off"), _("On"))[config.av.downmix_ac3.value and 1 or 0], "CALLFUNC", self.changeAC3Downmix),
-                                       ((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode")]
-                               usedKeys.extend(["red", "green"])
-                               availableKeys.extend(["yellow", "blue"])
-                               selection += 2
-                       else:
-                               flist = [((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode")]
-                               usedKeys.extend(["red"])
-                               availableKeys.extend(["green", "yellow", "blue"])
-                               selection += 1
-
-                       if hasattr(self, "runPlugin"):
-                               class PluginCaller:
-                                       def __init__(self, fnc, *args):
-                                               self.fnc = fnc
-                                               self.args = args
-                                       def __call__(self, *args, **kwargs):
-                                               self.fnc(*self.args)
-
-                               Plugins = [ (p.name, PluginCaller(self.runPlugin, p)) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_AUDIOMENU) ]
-
-                               for p in Plugins:
-                                       selection += 1
-                                       flist.append((p[0], "CALLFUNC", p[1]))
-                                       if availableKeys:
-                                               usedKeys.append(availableKeys[0])
-                                               del availableKeys[0]
-                                       else:
-                                               usedKeys.append("")
-
-                       flist.append(("--", ""))
-                       usedKeys.append("")
-                       selection += 1
-
-                       keys = usedKeys + [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" ] + [""] * n
-                       self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = flist + tlist, selection = selection, keys = keys, skin_name = "AudioTrackSelection")
-               else:
-                       del self.audioTracks
-
-       def changeAC3Downmix(self, arg):
-               choicelist = self.session.current_dialog["list"]
-               list = choicelist.list
-               t = list[0][1]
-               list[0][1]=(t[0], t[1], t[2], t[3], t[4], t[5], t[6],
-                       _("AC3 downmix") + " - " + (_("On"), _("Off"))[config.av.downmix_ac3.value and 1 or 0])
-               choicelist.setList(list)
-               if config.av.downmix_ac3.value:
-                       config.av.downmix_ac3.value = False
-               else:
-                       config.av.downmix_ac3.value = True
-               config.av.downmix_ac3.save()
-
-       def audioSelected(self, audio):
-               if audio is not None:
-                       if isinstance(audio[1], str):
-                               if audio[1] == "mode":
-                                       keys = ["red", "green", "yellow"]
-                                       selection = self.audioChannel.getCurrentChannel()
-                                       tlist = ((_("left"), 0), (_("stereo"), 1), (_("right"), 2))
-                                       self.session.openWithCallback(self.modeSelected, ChoiceBox, title=_("Select audio mode"), list = tlist, selection = selection, keys = keys, skin_name ="AudioModeSelection")
-                       else:
-                               del self.audioChannel
-                               if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > audio[1]:
-                                       self.audioTracks.selectTrack(audio[1])
-               else:
-                       del self.audioChannel
-               del self.audioTracks
-
-       def modeSelected(self, mode):
-               if mode is not None:
-                       self.audioChannel.selectChannel(mode[1])
-               del self.audioChannel
+               from Screens.AudioSelection import AudioSelection
+               self.session.openWithCallback(self.audioSelected, AudioSelection, infobar=self)
+               
+       def audioSelected(self, ret=None):
+               print "[infobar::audioSelected]", ret
 
 class InfoBarSubserviceSelection:
        def __init__(self):