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
25 from Menu import MainMenu, mdom
27 class NumberZap(Screen):
34 print "do the action here"
37 def keyNumberGlobal(self, number):
38 self.Timer.start(3000) #reset timer
39 self.field = self.field + str(number)
40 self["number"].setText(self.field)
41 if len(self.field) >= 4:
44 def __init__(self, session, number):
45 Screen.__init__(self, session)
46 self.field = str(number)
48 self["number"] = Label(self.field)
50 self["actions"] = NumberActionMap( [ "SetupActions" ],
54 "1": self.keyNumberGlobal,
55 "2": self.keyNumberGlobal,
56 "3": self.keyNumberGlobal,
57 "4": self.keyNumberGlobal,
58 "5": self.keyNumberGlobal,
59 "6": self.keyNumberGlobal,
60 "7": self.keyNumberGlobal,
61 "8": self.keyNumberGlobal,
62 "9": self.keyNumberGlobal,
63 "0": self.keyNumberGlobal
67 self.Timer.timeout.get().append(self.keyOK)
68 self.Timer.start(3000)
71 class InfoBar(Screen):
77 def __init__(self, session):
78 Screen.__init__(self, session)
81 self.servicelist = self.session.instantiateDialog(ChannelSelection)
83 self.state = self.STATE_HIDDEN
85 self.volumeDialog = self.session.instantiateDialog(Volume)
86 self.muteDialog = self.session.instantiateDialog(Mute)
88 self.hideTimer = eTimer()
89 self.hideTimer.timeout.get().append(self.doTimerHide)
90 #self.hideTimer.start(1000)
92 self.hideVolTimer = eTimer()
93 self.hideVolTimer.timeout.get().append(self.volHide)
95 self.powerKeyTimer = eTimer()
96 self.powerKeyTimer.timeout.get().append(self.powertimer)
98 #self["actions"] = ActionMap( [ "InfobarActions" ],
99 self["actions"] = NumberActionMap( [ "InfobarActions" ],
101 "switchChannelUp": self.switchChannelUp,
102 "switchChannelDown": self.switchChannelDown,
103 "mainMenu": self.mainMenu,
105 "zapDown": self.zapDown,
106 "volumeUp": self.volUp,
107 "volumeDown": self.volDown,
108 "volumeMute": self.volMute,
109 "instantRecord": self.instantRecord,
111 "toggleShow": self.toggleShow,
112 "showMovies": self.showMovies,
114 "powerdown": self.powerdown,
115 "powerup": self.powerup,
116 "1": self.keyNumberGlobal,
117 "2": self.keyNumberGlobal,
118 "3": self.keyNumberGlobal,
119 "4": self.keyNumberGlobal,
120 "5": self.keyNumberGlobal,
121 "6": self.keyNumberGlobal,
122 "7": self.keyNumberGlobal,
123 "8": self.keyNumberGlobal,
124 "9": self.keyNumberGlobal,
125 "0": self.keyNumberGlobal,
126 "showEPGList": self.showEPGList,
128 "pauseService": self.pauseService,
129 "unPauseService": self.unPauseService,
131 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
133 self["CurrentTime"] = Clock()
134 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
137 self["ServiceName"] = ServiceName(self.session.nav)
139 self["Event_Now_StartTime"] = EventInfo(self.session.nav, EventInfo.Now_StartTime)
140 self["Event_Next_StartTime"] = EventInfo(self.session.nav, EventInfo.Next_StartTime)
142 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
143 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
145 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
146 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
148 self.recording = None
153 print "loading mainmenu XML..."
154 menu = mdom.childNodes[0]
155 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
156 self.session.open(MainMenu, menu, menu.childNodes)
158 def powertimer(self):
159 print "PowerOff - Now!"
163 self.powerKeyTimer.start(3000)
166 self.powerKeyTimer.stop()
167 self.session.open(Standby, self)
169 def keyNumberGlobal(self, number):
170 print "You pressed number " + str(number)
171 self.session.open(NumberZap, number)
173 def switchChannelUp(self):
174 self.servicelist.moveUp()
175 self.session.execDialog(self.servicelist)
177 def switchChannelDown(self):
178 self.servicelist.moveDown()
179 self.session.execDialog(self.servicelist)
184 def doTimerHide(self):
185 if self.state == self.STATE_SHOWN:
187 self.state = self.STATE_HIDDEN
189 def toggleShow(self):
190 if self.state == self.STATE_SHOWN:
192 #pls check animation support, sorry
194 self.state = self.STATE_HIDDEN
198 self.state = self.STATE_SHOWN
199 #TODO: make it customizable
200 self.hideTimer.start(5000)
203 self.servicelist.moveUp()
204 self.servicelist.zap()
207 self.servicelist.moveDown()
208 self.servicelist.zap()
211 eDVBVolumecontrol.getInstance().volumeUp()
212 self.volumeDialog.instance.show()
213 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
214 self.hideVolTimer.start(3000)
217 eDVBVolumecontrol.getInstance().volumeDown()
218 self.volumeDialog.instance.show()
219 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
220 self.hideVolTimer.start(3000)
223 self.volumeDialog.instance.hide()
226 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
227 self.state = self.STATE_SHOWN
230 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
231 self.state = self.STATE_HIDDEN
234 eDVBVolumecontrol.getInstance().volumeToggleMute()
235 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
237 if (eDVBVolumecontrol.getInstance().isMuted()):
238 self.muteDialog.instance.show()
240 self.muteDialog.instance.hide()
242 def showEPGList(self):
243 ref=self.session.nav.getCurrentlyPlayingServiceReference()
244 ptr=eEPGCache.getInstance()
245 if ptr.startTimeQuery(ref) != -1:
246 self.session.open(EPGSelection, ref)
248 print 'no epg for service', ref.toString()
251 # self.session.open(Standby, self)
255 def stopCurrentRecording(self):
257 self.session.nav.RecordTimer.removeEntry(self.recording)
258 self.recording = None
260 def startInstantRecording(self):
261 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
263 # try to get event info
266 service = self.session.nav.getCurrentService()
267 info = service.info()
268 ev = info.getEvent(0)
273 # fix me, description.
274 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
276 def recordQuestionCallback(self, answer):
280 if self.recording != None:
281 self.stopCurrentRecording()
283 self.startInstantRecording()
285 def instantRecord(self):
286 if self.recording != None:
287 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
289 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
291 def showMovies(self):
292 self.session.open(MovieSelection)
294 def pauseService(self):
295 self.session.nav.pause(1)
297 def unPauseService(self):
298 self.session.nav.pause(0)