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["actions"] = ActionMap( [ "InfobarActions" ],
96 self["actions"] = NumberActionMap( [ "InfobarActions" ],
98 "switchChannelUp": self.switchChannelUp,
99 "switchChannelDown": self.switchChannelDown,
100 "mainMenu": self.mainMenu,
102 "zapDown": self.zapDown,
103 "volumeUp": self.volUp,
104 "volumeDown": self.volDown,
105 "volumeMute": self.volMute,
106 "instantRecord": self.instantRecord,
108 "toggleShow": self.toggleShow,
109 "showMovies": self.showMovies,
111 "1": self.keyNumberGlobal,
112 "2": self.keyNumberGlobal,
113 "3": self.keyNumberGlobal,
114 "4": self.keyNumberGlobal,
115 "5": self.keyNumberGlobal,
116 "6": self.keyNumberGlobal,
117 "7": self.keyNumberGlobal,
118 "8": self.keyNumberGlobal,
119 "9": self.keyNumberGlobal,
120 "0": self.keyNumberGlobal,
121 "showEPGList": self.showEPGList,
123 "pauseService": self.pauseService,
124 "unPauseService": self.unPauseService,
126 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
128 self["CurrentTime"] = Clock()
129 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
132 self["ServiceName"] = ServiceName(self.session.nav)
134 self["Event_Now_StartTime"] = EventInfo(self.session.nav, EventInfo.Now_StartTime)
135 self["Event_Next_StartTime"] = EventInfo(self.session.nav, EventInfo.Next_StartTime)
137 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
138 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
140 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
141 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
143 self.recording = None
148 print "loading mainmenu XML..."
149 menu = mdom.childNodes[0]
150 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
151 self.session.open(MainMenu, menu, menu.childNodes)
153 def keyNumberGlobal(self, number):
154 print "You pressed number " + str(number)
155 self.session.open(NumberZap, number)
157 def switchChannelUp(self):
158 self.servicelist.moveUp()
159 self.session.execDialog(self.servicelist)
161 def switchChannelDown(self):
162 self.servicelist.moveDown()
163 self.session.execDialog(self.servicelist)
168 def doTimerHide(self):
169 if self.state == self.STATE_SHOWN:
171 self.state = self.STATE_HIDDEN
173 def toggleShow(self):
174 if self.state == self.STATE_SHOWN:
176 #pls check animation support, sorry
178 self.state = self.STATE_HIDDEN
182 self.state = self.STATE_SHOWN
183 #TODO: make it customizable
184 self.hideTimer.start(5000)
187 self.servicelist.moveUp()
188 self.servicelist.zap()
191 self.servicelist.moveDown()
192 self.servicelist.zap()
195 eDVBVolumecontrol.getInstance().volumeUp()
196 self.volumeDialog.instance.show()
197 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
198 self.hideVolTimer.start(3000)
201 eDVBVolumecontrol.getInstance().volumeDown()
202 self.volumeDialog.instance.show()
203 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
204 self.hideVolTimer.start(3000)
207 self.volumeDialog.instance.hide()
210 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
211 self.state = self.STATE_SHOWN
214 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
215 self.state = self.STATE_HIDDEN
218 eDVBVolumecontrol.getInstance().volumeToggleMute()
219 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
221 if (eDVBVolumecontrol.getInstance().isMuted()):
222 self.muteDialog.instance.show()
224 self.muteDialog.instance.hide()
226 def showEPGList(self):
227 ref=self.session.nav.getCurrentlyPlayingServiceReference()
228 ptr=eEPGCache.getInstance()
229 if ptr.startTimeQuery(ref) != -1:
230 self.session.open(EPGSelection, ref)
232 print 'no epg for service', ref.toString()
235 self.session.open(Standby)
239 def stopCurrentRecording(self):
241 self.session.nav.RecordTimer.removeEntry(self.recording)
242 self.recording = None
244 def startInstantRecording(self):
245 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
247 # try to get event info
250 service = self.session.nav.getCurrentService()
251 info = service.info()
252 ev = info.getEvent(0)
257 # fix me, description.
258 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
260 def recordQuestionCallback(self, answer):
264 if self.recording != None:
265 self.stopCurrentRecording()
267 self.startInstantRecording()
269 def instantRecord(self):
270 if self.recording != None:
271 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
273 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
275 def showMovies(self):
276 self.session.open(MovieSelection)
278 def pauseService(self):
279 self.session.nav.pause(1)
281 def unPauseService(self):
282 self.session.nav.pause(0)