1 from Screen import Screen
2 from EpgSelection import EPGSelection
3 from ChannelSelection import ChannelSelection
4 from Components.Clock import Clock
5 from Components.ActionMap import ActionMap
6 from Components.ActionMap import NumberActionMap
7 from Components.Button import Button
8 from Components.ServiceName import ServiceName
9 from Components.EventInfo import EventInfo
10 from Components.ServicePosition import ServicePosition
11 from Components.config import configfile
12 from Components.Label import Label
14 from Screens.MessageBox import MessageBox
15 from Screens.MovieSelection import MovieSelection
16 from Screens.Volume import Volume
17 from Screens.Mute import Mute
18 from Screens.Standby import Standby
19 from Screens.AudioSelection import AudioSelection
21 from ServiceReference import ServiceReference
28 from Menu import MainMenu, mdom
30 class NumberZap(Screen):
37 print "do the action here"
40 def keyNumberGlobal(self, number):
41 self.Timer.start(3000) #reset timer
42 self.field = self.field + str(number)
43 self["number"].setText(self.field)
44 if len(self.field) >= 4:
47 def __init__(self, session, number):
48 Screen.__init__(self, session)
49 self.field = str(number)
51 self["number"] = Label(self.field)
53 self["actions"] = NumberActionMap( [ "SetupActions" ],
57 "1": self.keyNumberGlobal,
58 "2": self.keyNumberGlobal,
59 "3": self.keyNumberGlobal,
60 "4": self.keyNumberGlobal,
61 "5": self.keyNumberGlobal,
62 "6": self.keyNumberGlobal,
63 "7": self.keyNumberGlobal,
64 "8": self.keyNumberGlobal,
65 "9": self.keyNumberGlobal,
66 "0": self.keyNumberGlobal
70 self.Timer.timeout.get().append(self.keyOK)
71 self.Timer.start(3000)
74 class InfoBar(Screen):
80 def __init__(self, session):
81 Screen.__init__(self, session)
84 self.servicelist = self.session.instantiateDialog(ChannelSelection)
86 self.state = self.STATE_HIDDEN
88 self.volumeDialog = self.session.instantiateDialog(Volume)
89 self.muteDialog = self.session.instantiateDialog(Mute)
91 self.hideTimer = eTimer()
92 self.hideTimer.timeout.get().append(self.doTimerHide)
93 #self.hideTimer.start(1000)
95 self.hideVolTimer = eTimer()
96 self.hideVolTimer.timeout.get().append(self.volHide)
98 self.powerKeyTimer = eTimer()
99 self.powerKeyTimer.timeout.get().append(self.powertimer)
101 #self["actions"] = ActionMap( [ "InfobarActions" ],
102 self["actions"] = NumberActionMap( [ "InfobarActions" ],
104 "switchChannelUp": self.switchChannelUp,
105 "switchChannelDown": self.switchChannelDown,
106 "mainMenu": self.mainMenu,
108 "zapDown": self.zapDown,
109 "volumeUp": self.volUp,
110 "volumeDown": self.volDown,
111 "volumeMute": self.volMute,
112 "instantRecord": self.instantRecord,
114 "toggleShow": self.toggleShow,
115 "showMovies": self.showMovies,
117 "powerdown": self.powerdown,
118 "powerup": self.powerup,
119 "1": self.keyNumberGlobal,
120 "2": self.keyNumberGlobal,
121 "3": self.keyNumberGlobal,
122 "4": self.keyNumberGlobal,
123 "5": self.keyNumberGlobal,
124 "6": self.keyNumberGlobal,
125 "7": self.keyNumberGlobal,
126 "8": self.keyNumberGlobal,
127 "9": self.keyNumberGlobal,
128 "0": self.keyNumberGlobal,
129 "showEPGList": self.showEPGList,
131 "pauseService": self.pauseService,
132 "unPauseService": self.unPauseService,
134 "seekFwd": self.seekFwd,
135 "seekBack": self.seekBack,
137 "audioSelection": self.audioSelection,
139 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
141 self["CurrentTime"] = Clock()
142 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
145 self["ServiceName"] = ServiceName(self.session.nav)
147 self["Event_Now_StartTime"] = EventInfo(self.session.nav, EventInfo.Now_StartTime)
148 self["Event_Next_StartTime"] = EventInfo(self.session.nav, EventInfo.Next_StartTime)
150 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
151 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
153 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
154 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
156 self.recording = None
161 print "loading mainmenu XML..."
162 menu = mdom.childNodes[0]
163 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
164 self.session.open(MainMenu, menu, menu.childNodes)
166 def powertimer(self):
167 print "PowerOff - Now!"
171 self.standbyblocked = 0
172 self.powerKeyTimer.start(3000)
175 self.powerKeyTimer.stop()
176 if self.standbyblocked == 0:
177 self.standbyblocked = 1
178 self.session.open(Standby, self)
181 def keyNumberGlobal(self, number):
182 print "You pressed number " + str(number)
183 self.session.open(NumberZap, number)
185 def switchChannelUp(self):
186 self.servicelist.moveUp()
187 self.session.execDialog(self.servicelist)
189 def switchChannelDown(self):
190 self.servicelist.moveDown()
191 self.session.execDialog(self.servicelist)
196 def doTimerHide(self):
197 if self.state == self.STATE_SHOWN:
199 self.state = self.STATE_HIDDEN
201 def toggleShow(self):
202 if self.state == self.STATE_SHOWN:
204 #pls check animation support, sorry
206 self.state = self.STATE_HIDDEN
210 self.state = self.STATE_SHOWN
211 #TODO: make it customizable
212 self.hideTimer.start(5000)
215 self.servicelist.moveUp()
216 self.servicelist.zap()
219 self.servicelist.moveDown()
220 self.servicelist.zap()
223 eDVBVolumecontrol.getInstance().volumeUp()
224 self.volumeDialog.instance.show()
225 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
226 self.hideVolTimer.start(3000)
229 eDVBVolumecontrol.getInstance().volumeDown()
230 self.volumeDialog.instance.show()
231 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
232 self.hideVolTimer.start(3000)
235 self.volumeDialog.instance.hide()
238 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
239 self.state = self.STATE_SHOWN
242 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
243 self.state = self.STATE_HIDDEN
246 eDVBVolumecontrol.getInstance().volumeToggleMute()
247 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
249 if (eDVBVolumecontrol.getInstance().isMuted()):
250 self.muteDialog.instance.show()
252 self.muteDialog.instance.hide()
254 def showEPGList(self):
255 ref=self.session.nav.getCurrentlyPlayingServiceReference()
256 ptr=eEPGCache.getInstance()
257 if ptr.startTimeQuery(ref) != -1:
258 self.session.open(EPGSelection, ref)
260 print 'no epg for service', ref.toString()
263 # self.session.open(Standby, self)
267 def stopCurrentRecording(self):
269 self.session.nav.RecordTimer.removeEntry(self.recording)
270 self.recording = None
272 def startInstantRecording(self):
273 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
275 # try to get event info
278 service = self.session.nav.getCurrentService()
279 info = service.info()
280 ev = info.getEvent(0)
285 # fix me, description.
286 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
288 def recordQuestionCallback(self, answer):
292 if self.recording != None:
293 self.stopCurrentRecording()
295 self.startInstantRecording()
297 def instantRecord(self):
298 if self.recording != None:
299 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
301 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
303 def showMovies(self):
304 self.session.open(MovieSelection)
306 def pauseService(self):
307 self.session.nav.pause(1)
309 def unPauseService(self):
310 self.session.nav.pause(0)
312 def doSeek(self, dir, seektime):
313 service = self.session.nav.getCurrentService()
317 seekable = service.seek()
320 seekable.seekRelative(dir, 90 * seektime)
323 self.doSeek(+1, 10000)
326 self.doSeek(-1, 10000)
328 def audioSelection(self):
329 service = self.session.nav.getCurrentService()
330 audio = service.audioTracks()
331 n = audio.getNumberOfTracks()
333 self.session.open(AudioSelection, audio)