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!"
164 self.powerKeyTimer.start(3000)
167 self.powerKeyTimer.stop()
168 self.session.open(Standby, self)
170 def keyNumberGlobal(self, number):
171 print "You pressed number " + str(number)
172 self.session.open(NumberZap, number)
174 def switchChannelUp(self):
175 self.servicelist.moveUp()
176 self.session.execDialog(self.servicelist)
178 def switchChannelDown(self):
179 self.servicelist.moveDown()
180 self.session.execDialog(self.servicelist)
185 def doTimerHide(self):
186 if self.state == self.STATE_SHOWN:
188 self.state = self.STATE_HIDDEN
190 def toggleShow(self):
191 if self.state == self.STATE_SHOWN:
193 #pls check animation support, sorry
195 self.state = self.STATE_HIDDEN
199 self.state = self.STATE_SHOWN
200 #TODO: make it customizable
201 self.hideTimer.start(5000)
204 self.servicelist.moveUp()
205 self.servicelist.zap()
208 self.servicelist.moveDown()
209 self.servicelist.zap()
212 eDVBVolumecontrol.getInstance().volumeUp()
213 self.volumeDialog.instance.show()
214 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
215 self.hideVolTimer.start(3000)
218 eDVBVolumecontrol.getInstance().volumeDown()
219 self.volumeDialog.instance.show()
220 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
221 self.hideVolTimer.start(3000)
224 self.volumeDialog.instance.hide()
227 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
228 self.state = self.STATE_SHOWN
231 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
232 self.state = self.STATE_HIDDEN
235 eDVBVolumecontrol.getInstance().volumeToggleMute()
236 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
238 if (eDVBVolumecontrol.getInstance().isMuted()):
239 self.muteDialog.instance.show()
241 self.muteDialog.instance.hide()
243 def showEPGList(self):
244 ref=self.session.nav.getCurrentlyPlayingServiceReference()
245 ptr=eEPGCache.getInstance()
246 if ptr.startTimeQuery(ref) != -1:
247 self.session.open(EPGSelection, ref)
249 print 'no epg for service', ref.toString()
252 # self.session.open(Standby, self)
256 def stopCurrentRecording(self):
258 self.session.nav.RecordTimer.removeEntry(self.recording)
259 self.recording = None
261 def startInstantRecording(self):
262 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
264 # try to get event info
267 service = self.session.nav.getCurrentService()
268 info = service.info()
269 ev = info.getEvent(0)
274 # fix me, description.
275 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
277 def recordQuestionCallback(self, answer):
281 if self.recording != None:
282 self.stopCurrentRecording()
284 self.startInstantRecording()
286 def instantRecord(self):
287 if self.recording != None:
288 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
290 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
292 def showMovies(self):
293 self.session.open(MovieSelection)
295 def pauseService(self):
296 self.session.nav.pause(1)
298 def unPauseService(self):
299 self.session.nav.pause(0)