Support customized subtitles.
[vuplus_dvbapp] / lib / python / Screens / InfoBarGenerics.py
old mode 100644 (file)
new mode 100755 (executable)
index 93a4788..186b07a
@@ -47,10 +47,12 @@ from Menu import MainMenu, mdom
 class InfoBarDish:
        def __init__(self):
                self.dishDialog = self.session.instantiateDialog(Dish)
+               self.dishDialog.setAnimationMode(0)
 
 class InfoBarUnhandledKey:
        def __init__(self):
                self.unhandledKeyDialog = self.session.instantiateDialog(UnhandledKey)
+               self.unhandledKeyDialog.setAnimationMode(0)
                self.hideUnhandledKeySymbolTimer = eTimer()
                self.hideUnhandledKeySymbolTimer.callback.append(self.unhandledKeyDialog.hide)
                self.checkUnusedTimer = eTimer()
@@ -687,6 +689,7 @@ class InfoBarRdsDecoder:
        """provides RDS and Rass support/display"""
        def __init__(self):
                self.rds_display = self.session.instantiateDialog(RdsInfoDisplay)
+               self.rds_display.setAnimationMode(0)
                self.rass_interactive = None
 
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
@@ -772,7 +775,7 @@ class InfoBarSeek:
 
                self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,
                        {
-                               "playpauseService": self.playpauseService,
+                               "playpauseService": (self.playpauseService, _("Pause/Continue")),
                                "pauseService": (self.pauseService, _("pause")),
                                "unPauseService": (self.unPauseService, _("continue")),
 
@@ -1105,6 +1108,7 @@ class InfoBarPVRState:
        def __init__(self, screen=PVRState, force_show = False):
                self.onPlayStateChanged.append(self.__playStateChanged)
                self.pvrStateDialog = self.session.instantiateDialog(screen)
+               self.pvrStateDialog.setAnimationMode(0)
                self.onShow.append(self._mayShow)
                self.onHide.append(self.pvrStateDialog.hide)
                self.force_show = force_show
@@ -1318,6 +1322,9 @@ class InfoBarExtensions:
                                "extensions": (self.showExtensionSelection, _("view extensions...")),
                        }, 1) # lower priority
 
+               for p in plugins.getPlugins(PluginDescriptor.WHERE_EXTENSIONSINGLE):
+                       p(self)
+
        def addExtension(self, extension, key = None, type = EXTENSION_SINGLE):
                self.list.append((type, extension, key))
 
@@ -1459,6 +1466,7 @@ class InfoBarPiP:
                        self.session.pipshown = False
                else:
                        self.session.pip = self.session.instantiateDialog(PictureInPicture)
+                       self.session.pip.setAnimationMode(0)
                        self.session.pip.show()
                        newservice = self.session.nav.getCurrentlyPlayingServiceReference()
                        if self.session.pip.playService(newservice):
@@ -1654,6 +1662,11 @@ class InfoBarInstantRecord:
                dir = preferredInstantRecordPath()
                if not dir or not fileExists(dir, 'w'):
                        dir = defaultMoviePath()
+
+               if not fileExists("/hdd", 0):
+                       print "not found /hdd"
+                       system("ln -s /media/hdd /hdd")
+#
                try:
                        stat = os_stat(dir)
                except:
@@ -1823,6 +1836,67 @@ class InfoBarSubserviceSelection:
                else:
                        del self.selectedSubservice
 
+from Components.Sources.HbbtvApplication import HbbtvApplication
+gHbbtvApplication = HbbtvApplication()
+class InfoBarRedButton:
+       def __init__(self):
+               if not (config.misc.rcused.value == 1):
+                       self["RedButtonActions"] = HelpableActionMap(self, "InfobarRedButtonActions",
+                               {
+                                       "activateRedButton": (self.activateRedButton, _("Red button...")),
+                               })
+                       self["HbbtvApplication"] = gHbbtvApplication
+               else:
+                       self["HbbtvApplication"] = Boolean(fixed=0)
+                       self["HbbtvApplication"].name = "" #is this a hack?
+                       
+               self.onHBBTVActivation = [ ]
+               self.onRedButtonActivation = [ ]
+               self.onReadyForAIT = [ ]
+               self.__et = ServiceEventTracker(screen=self, eventmap=
+                       {
+                               iPlayableService.evHBBTVInfo: self.detectedHbbtvApplication,
+                               iPlayableService.evUpdatedInfo: self.updateInfomation
+                       })
+
+       def updateAIT(self, orgId=0):
+               for x in self.onReadyForAIT:
+                       try:
+                               x(orgId)
+                       except Exception, ErrMsg: 
+                               print ErrMsg
+                               #self.onReadyForAIT.remove(x)
+
+       def updateInfomation(self):
+               try:
+                       self["HbbtvApplication"].setApplicationName("")
+                       self.updateAIT()
+               except Exception, ErrMsg:
+                       pass
+               
+       def detectedHbbtvApplication(self):
+               service = self.session.nav.getCurrentService()
+               info = service and service.info()
+               try:
+                       for x in info.getInfoObject(iServiceInformation.sHBBTVUrl):
+                               print x
+                               if x[0] in (-1, 1):
+                                       self.updateAIT(x[3])
+                                       self["HbbtvApplication"].setApplicationName(x[1])
+                                       break
+               except Exception, ErrMsg:
+                       pass
+
+       def activateRedButton(self):
+               service = self.session.nav.getCurrentService()
+               info = service and service.info()
+               if info and info.getInfoString(iServiceInformation.sHBBTVUrl) != "":
+                       for x in self.onHBBTVActivation:
+                               x()
+               elif False: # TODO: other red button services
+                       for x in self.onRedButtonActivation:
+                               x()
+
 class InfoBarAdditionalInfo:
        def __init__(self):
 
@@ -2161,6 +2235,7 @@ class InfoBarSubtitleSupport(object):
        def __init__(self):
                object.__init__(self)
                self.subtitle_window = self.session.instantiateDialog(SubtitleDisplay)
+               self.subtitle_window.setAnimationMode(0)
                self.__subtitles_enabled = False
 
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
@@ -2179,8 +2254,7 @@ class InfoBarSubtitleSupport(object):
                        self.__selected_subtitle = None
 
        def __updatedInfo(self):
-               if not self.cached_subtitle_checked:
-                       self.cached_subtitle_checked = True
+               if not self.__selected_subtitle:
                        subtitle = self.getCurrentServiceSubtitle()
                        self.setSelectedSubtitle(subtitle and subtitle.getCachedSubtitle())
                        if self.__selected_subtitle:
@@ -2201,7 +2275,7 @@ class InfoBarSubtitleSupport(object):
                else:
                        if subtitle:
                                subtitle.disableSubtitles(self.subtitle_window.instance)
-                       self.__selected_subtitle = False
+                       self.__selected_subtitle = None
                        self.__subtitles_enabled = False
                        self.subtitle_window.hide()