looking for the sleep timer? just forgot to add it to the infobar :)
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index b69ef4e1e0981f4f18d06be215468f396d2b0416..62d4e969be45715602cdaa8b67443c5862e342a9 100644 (file)
@@ -32,6 +32,7 @@ from Screens.MinuteInput import MinuteInput
 from Screens.TimerSelection import TimerSelection
 from Screens.PictureInPicture import PictureInPicture
 from Screens.SubtitleDisplay import SubtitleDisplay
+from Screens.SleepTimerEdit import SleepTimerEdit
 from ServiceReference import ServiceReference
 
 from Tools import Notifications
@@ -1120,7 +1121,6 @@ class InfoBarPlugins:
        def __init__(self):
                self.addExtension(extension = self.getPluginList, type = InfoBarExtensions.EXTENSION_LIST)
                
-               
        def getPluginName(self, name):
                return name
                
@@ -1133,6 +1133,20 @@ class InfoBarPlugins:
        def runPlugin(self, plugin):
                plugin(session = self.session)
 
+# depends on InfoBarExtensions
+class InfoBarSleepTimer:
+       def __init__(self):
+               self.addExtension((self.getSleepTimerName, self.showSleepTimerSetup, self.available), "1")      
+               
+       def available(self):
+               return True
+
+       def getSleepTimerName(self):
+               return _("Sleep Timer")
+
+       def showSleepTimerSetup(self):
+               self.session.open(SleepTimerEdit)
+
 # depends on InfoBarExtensions
 class InfoBarPiP:
        def __init__(self):
@@ -1342,9 +1356,8 @@ class InfoBarAudioSelection:
                                language = i.getLanguage()
                                description = i.getDescription()
        
-                               if len(language) == 3:
-                                       if language in LanguageCodes:
-                                               language = LanguageCodes[language][0]
+                               if LanguageCodes.has_key(language):
+                                       language = LanguageCodes[language][0]
        
                                if len(description):
                                        description += " (" + language + ")"
@@ -1749,15 +1762,26 @@ class InfoBarSubtitleSupport(object):
 
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
                        {
-                               iPlayableService.evStart: self.__serviceStarted,
+                               iPlayableService.evEnd: self.__serviceStopped,
+                               iPlayableService.evUpdatedInfo: self.__updatedInfo
                        })
+               self.cached_subtitle_checked = False
 
-       def __serviceStarted(self):
-               # reenable if it was enabled
-               r = self.__subtitles_enabled
+       def __serviceStopped(self):
+               self.subtitle_window.hide()
                self.__subtitles_enabled = False
-               self.__selected_subtitle = None
-               self.setSubtitlesEnable(r)
+               self.cached_subtitle_checked = False
+
+       def __updatedInfo(self):
+               if not self.cached_subtitle_checked:
+                       subtitle = self.getCurrentServiceSubtitle()
+                       self.cached_subtitle_checked = True
+                       if subtitle:
+                               self.__selected_subtitle = subtitle.getCachedSubtitle()
+                       if self.__selected_subtitle:
+                               subtitle.enableSubtitles(self.subtitle_window.instance, self.selected_subtitle)
+                               self.subtitle_window.show()
+                               self.__subtitles_enabled = True
 
        def getCurrentServiceSubtitle(self):
                service = self.session.nav.getCurrentService()
@@ -1773,17 +1797,11 @@ class InfoBarSubtitleSupport(object):
                else:
                        if subtitle:
                                subtitle.disableSubtitles(self.subtitle_window.instance)
-
-                       self.subtitle_window.hide()
                        self.__subtitles_enabled = False
+                       self.subtitle_window.hide()
 
        def setSelectedSubtitle(self, subtitle):
-               if self.__selected_subtitle != subtitle and self.subtitles_enabled:
-                       # kick
-                       self.__selected_subtitle = subtitle
-                       self.__serviceStarted()
-               else:
-                       self.__selected_subtitle = subtitle
+               self.__selected_subtitle = subtitle
 
        subtitles_enabled = property(lambda self: self.__subtitles_enabled, setSubtitlesEnable)
        selected_subtitle = property(lambda self: self.__selected_subtitle, setSelectedSubtitle)