From 95c570d26ce81e3dd1e0610ff6c5c0b34d75ba5a Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 1 Nov 2006 14:33:57 +0000 Subject: store subtitle data in service cache and reenable subtitles on next zap to the same service --- lib/python/Screens/InfoBarGenerics.py | 28 ++++++++++++++++------------ lib/python/Screens/Subtitles.py | 3 +-- 2 files changed, 17 insertions(+), 14 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index b69ef4e1..a85bcc97 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -1750,14 +1750,24 @@ class InfoBarSubtitleSupport(object): self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evStart: self.__serviceStarted, + iPlayableService.evUpdatedInfo: self.__updatedInfo }) def __serviceStarted(self): - # reenable if it was enabled - r = self.__subtitles_enabled + self.cached_subtitle_checked = False + self.subtitle_window.hide() self.__subtitles_enabled = False - self.__selected_subtitle = None - self.setSubtitlesEnable(r) + + 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 +1783,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) diff --git a/lib/python/Screens/Subtitles.py b/lib/python/Screens/Subtitles.py index 6a1deedb..d72ea336 100644 --- a/lib/python/Screens/Subtitles.py +++ b/lib/python/Screens/Subtitles.py @@ -25,7 +25,7 @@ class Subtitles(Screen, ConfigListScreen): else: sel = None for x in self.getSubtitleList(): - if sel and sel == x: + if sel and sel[:4] == x[:4]: #ignore Language code in compare text = _("Running") else: text = _("Enable") @@ -50,7 +50,6 @@ class Subtitles(Screen, ConfigListScreen): def enableSubtitle(self, subtitles): if self.infobar.selected_subtitle != subtitles: - print "enable subtitles", subtitles self.infobar.subtitles_enabled = False self.infobar.selected_subtitle = subtitles self.infobar.subtitles_enabled = True -- cgit v1.2.3