config rewrite. some extensions still need to be updated.
[enigma2.git] / lib / python / Screens / InfoBar.py
1 from Screen import Screen
2
3 from Screens.MovieSelection import MovieSelection
4 from Screens.ChannelSelection import ChannelSelectionRadio
5 from Screens.MessageBox import MessageBox
6 from Screens.Ci import CiHandler
7 from ServiceReference import ServiceReference
8
9 from Components.Sources.Clock import Clock
10 from Components.ActionMap import ActionMap, HelpableActionMap
11 from Components.config import config
12
13 from Tools.Notifications import AddNotificationWithCallback
14
15 from Screens.InfoBarGenerics import InfoBarShowHide, \
16         InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, \
17         InfoBarEPG, InfoBarEvent, InfoBarServiceName, InfoBarSeek, InfoBarInstantRecord, \
18         InfoBarAudioSelection, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, \
19         InfoBarSubserviceSelection, InfoBarTuner, InfoBarShowMovies, InfoBarTimeshift,  \
20         InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView, \
21         InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, \
22         InfoBarSubtitleSupport, InfoBarPiP, InfoBarSubtitles, InfoBarPlugins
23
24 from Screens.HelpMenu import HelpableScreen, HelpMenu
25
26 from enigma import *
27
28 import time
29
30 class InfoBar(InfoBarShowHide,
31         InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarEPG,
32         InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarAudioSelection, 
33         HelpableScreen, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish,
34         InfoBarSubserviceSelection, InfoBarTuner, InfoBarTimeshift, InfoBarSeek,
35         InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions,
36         InfoBarPiP, InfoBarSubtitles, InfoBarPlugins,
37         InfoBarSubtitleSupport, Screen):
38         
39         ALLOW_SUSPEND = True
40
41         def __init__(self, session):
42                 Screen.__init__(self, session)
43
44                 CiHandler.setSession(session)
45
46                 self["actions"] = HelpableActionMap(self, "InfobarActions",
47                         {
48                                 "showMovies": (self.showMovies, _("Play recorded movies...")),
49                                 "showRadio": (self.showRadio, _("Show the radio player...")),
50                                 "showTv": (self.showTv, _("Show the tv player...")),
51                         }, prio=2)
52                 
53                 for x in HelpableScreen, \
54                                 InfoBarShowHide, \
55                                 InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarEPG, \
56                                 InfoBarEvent, InfoBarServiceName, InfoBarInstantRecord, InfoBarAudioSelection, \
57                                 InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarSubserviceSelection, \
58                                 InfoBarTuner, InfoBarTimeshift, InfoBarSeek, InfoBarSummarySupport, InfoBarTimeshiftState, \
59                                 InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarSubtitles, InfoBarSubtitleSupport, \
60                                 InfoBarPlugins:
61                         x.__init__(self)
62
63                 self.helpList.append((self["actions"], "InfobarActions", [("showMovies", _("view recordings..."))]))
64                 self.helpList.append((self["actions"], "InfobarActions", [("showRadio", _("hear radio..."))]))
65
66                 self["CurrentTime"] = Clock()
67
68         def showTv(self):
69                 self.showTvChannelList(True)
70
71         def showRadio(self):
72                 if config.usage.e1like_radio_mode.value:
73                         self.showRadioChannelList(True)
74                 else:
75                         self.session.open(ChannelSelectionRadio)
76
77         def showMovies(self):
78                 self.session.openWithCallback(self.movieSelected, MovieSelection)
79
80         def movieSelected(self, service):
81                 if service is not None:
82                         self.session.open(MoviePlayer, service)
83
84 class MoviePlayer(InfoBarShowHide, \
85                 InfoBarMenu, \
86                 InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications,
87                 InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarSimpleEventView,
88                 InfoBarSummarySupport, InfoBarTeletextPlugin, InfoBarSubtitleSupport, Screen):
89
90         ENABLE_RESUME_SUPPORT = True
91         ALLOW_SUSPEND = True
92                 
93         def __init__(self, session, service):
94                 Screen.__init__(self, session)
95                 
96                 self["actions"] = HelpableActionMap(self, "MoviePlayerActions",
97                         {
98                                 "leavePlayer": (self.leavePlayer, _("leave movie player..."))
99                         })
100                 
101                 for x in HelpableScreen, InfoBarShowHide, InfoBarMenu, \
102                                 InfoBarServiceName, InfoBarSeek, InfoBarShowMovies, \
103                                 InfoBarAudioSelection, InfoBarNotifications, InfoBarSimpleEventView, \
104                                 InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, \
105                                 InfoBarSummarySupport, InfoBarTeletextPlugin, InfoBarSubtitleSupport:
106                         x.__init__(self)
107
108                 self.lastservice = self.session.nav.getCurrentlyPlayingServiceReference()
109                 self.session.nav.playService(service)
110
111         def leavePlayer(self):
112                 self.is_closing = True
113                 self.session.openWithCallback(self.leavePlayerConfirmed, MessageBox, _("Stop playing this movie?"))
114         
115         def leavePlayerConfirmed(self, answer):
116                 if answer == True:
117                         self.session.nav.playService(self.lastservice)
118                         self.close()
119                         
120         def showMovies(self):
121                 ref = self.session.nav.getCurrentlyPlayingServiceReference()
122                 self.session.openWithCallback(self.movieSelected, MovieSelection, ref)
123
124         def movieSelected(self, service):
125                 if service is not None:
126                         self.session.nav.playService(service)