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
20 from ServiceReference import ServiceReference
27 from Menu import MainMenu, mdom
29 class NumberZap(Screen):
36 print "do the action here"
39 def keyNumberGlobal(self, number):
40 self.Timer.start(3000) #reset timer
41 self.field = self.field + str(number)
42 self["number"].setText(self.field)
43 if len(self.field) >= 4:
46 def __init__(self, session, number):
47 Screen.__init__(self, session)
48 self.field = str(number)
50 self["number"] = Label(self.field)
52 self["actions"] = NumberActionMap( [ "SetupActions" ],
56 "1": self.keyNumberGlobal,
57 "2": self.keyNumberGlobal,
58 "3": self.keyNumberGlobal,
59 "4": self.keyNumberGlobal,
60 "5": self.keyNumberGlobal,
61 "6": self.keyNumberGlobal,
62 "7": self.keyNumberGlobal,
63 "8": self.keyNumberGlobal,
64 "9": self.keyNumberGlobal,
65 "0": self.keyNumberGlobal
69 self.Timer.timeout.get().append(self.keyOK)
70 self.Timer.start(3000)
73 class InfoBar(Screen):
79 def __init__(self, session):
80 Screen.__init__(self, session)
83 self.servicelist = self.session.instantiateDialog(ChannelSelection)
85 self.state = self.STATE_HIDDEN
87 self.volumeDialog = self.session.instantiateDialog(Volume)
88 self.muteDialog = self.session.instantiateDialog(Mute)
90 self.hideTimer = eTimer()
91 self.hideTimer.timeout.get().append(self.doTimerHide)
92 #self.hideTimer.start(1000)
94 self.hideVolTimer = eTimer()
95 self.hideVolTimer.timeout.get().append(self.volHide)
97 self.powerKeyTimer = eTimer()
98 self.powerKeyTimer.timeout.get().append(self.powertimer)
100 #self["actions"] = ActionMap( [ "InfobarActions" ],
101 self["actions"] = NumberActionMap( [ "InfobarActions" ],
103 "switchChannelUp": self.switchChannelUp,
104 "switchChannelDown": self.switchChannelDown,
105 "mainMenu": self.mainMenu,
107 "zapDown": self.zapDown,
108 "volumeUp": self.volUp,
109 "volumeDown": self.volDown,
110 "volumeMute": self.volMute,
111 "instantRecord": self.instantRecord,
113 "toggleShow": self.toggleShow,
114 "showMovies": self.showMovies,
116 "powerdown": self.powerdown,
117 "powerup": self.powerup,
118 "1": self.keyNumberGlobal,
119 "2": self.keyNumberGlobal,
120 "3": self.keyNumberGlobal,
121 "4": self.keyNumberGlobal,
122 "5": self.keyNumberGlobal,
123 "6": self.keyNumberGlobal,
124 "7": self.keyNumberGlobal,
125 "8": self.keyNumberGlobal,
126 "9": self.keyNumberGlobal,
127 "0": self.keyNumberGlobal,
128 "showEPGList": self.showEPGList,
130 "pauseService": self.pauseService,
131 "unPauseService": self.unPauseService,
133 "seekFwd": self.seekFwd,
134 "seekBack": self.seekBack,
136 "audioSelection": self.audioSelection,
138 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
140 self["CurrentTime"] = Clock()
141 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
144 self["ServiceName"] = ServiceName(self.session.nav)
146 self["Event_Now_StartTime"] = EventInfo(self.session.nav, EventInfo.Now_StartTime)
147 self["Event_Next_StartTime"] = EventInfo(self.session.nav, EventInfo.Next_StartTime)
149 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
150 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
152 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
153 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
155 self.recording = None
160 print "loading mainmenu XML..."
161 menu = mdom.childNodes[0]
162 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
163 self.session.open(MainMenu, menu, menu.childNodes)
165 def powertimer(self):
166 print "PowerOff - Now!"
170 self.standbyblocked = 0
171 self.powerKeyTimer.start(3000)
174 self.powerKeyTimer.stop()
175 if self.standbyblocked == 0:
176 self.standbyblocked = 1
177 self.session.open(Standby, self)
180 def keyNumberGlobal(self, number):
181 print "You pressed number " + str(number)
182 self.session.open(NumberZap, number)
184 def switchChannelUp(self):
185 self.servicelist.moveUp()
186 self.session.execDialog(self.servicelist)
188 def switchChannelDown(self):
189 self.servicelist.moveDown()
190 self.session.execDialog(self.servicelist)
195 def doTimerHide(self):
196 if self.state == self.STATE_SHOWN:
198 self.state = self.STATE_HIDDEN
200 def toggleShow(self):
201 if self.state == self.STATE_SHOWN:
203 #pls check animation support, sorry
205 self.state = self.STATE_HIDDEN
209 self.state = self.STATE_SHOWN
210 #TODO: make it customizable
211 self.hideTimer.start(5000)
214 self.servicelist.moveUp()
215 self.servicelist.zap()
218 self.servicelist.moveDown()
219 self.servicelist.zap()
222 eDVBVolumecontrol.getInstance().volumeUp()
223 self.volumeDialog.instance.show()
224 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
225 self.hideVolTimer.start(3000)
228 eDVBVolumecontrol.getInstance().volumeDown()
229 self.volumeDialog.instance.show()
230 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
231 self.hideVolTimer.start(3000)
234 self.volumeDialog.instance.hide()
237 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
238 self.state = self.STATE_SHOWN
241 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
242 self.state = self.STATE_HIDDEN
245 eDVBVolumecontrol.getInstance().volumeToggleMute()
246 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
248 if (eDVBVolumecontrol.getInstance().isMuted()):
249 self.muteDialog.instance.show()
251 self.muteDialog.instance.hide()
253 def showEPGList(self):
254 ref=self.session.nav.getCurrentlyPlayingServiceReference()
255 ptr=eEPGCache.getInstance()
256 if ptr.startTimeQuery(ref) != -1:
257 self.session.open(EPGSelection, ref)
259 print 'no epg for service', ref.toString()
262 # self.session.open(Standby, self)
266 def stopCurrentRecording(self):
268 self.session.nav.RecordTimer.removeEntry(self.recording)
269 self.recording = None
271 def startInstantRecording(self):
272 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
274 # try to get event info
277 service = self.session.nav.getCurrentService()
278 info = service.info()
279 ev = info.getEvent(0)
284 # fix me, description.
285 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
287 def recordQuestionCallback(self, answer):
291 if self.recording != None:
292 self.stopCurrentRecording()
294 self.startInstantRecording()
296 def instantRecord(self):
297 if self.recording != None:
298 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
300 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
302 def showMovies(self):
303 self.session.open(MovieSelection)
305 def pauseService(self):
306 self.session.nav.pause(1)
308 def unPauseService(self):
309 self.session.nav.pause(0)
311 def doSeek(self, dir, seektime):
312 service = self.session.nav.getCurrentService()
316 seekable = service.seek()
319 seekable.seekRelative(dir, 90 * seektime)
322 self.doSeek(+1, 10000)
325 self.doSeek(-1, 10000)
327 def audioSelection(self):
328 service = self.session.nav.getCurrentService()
329 audio = service.audioTracks()
330 n = audio.getNumberOfTracks()
331 print "AUDIO TRACKS:"
333 i = audio.getTrackInfo(x)
334 print i.getDescription()