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 self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
230 self.session.open(Standby)
234 def stopCurrentRecording(self):
236 self.session.nav.RecordTimer.removeEntry(self.recording)
237 self.recording = None
239 def startInstantRecording(self):
240 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
242 # try to get event info
245 service = self.session.nav.getCurrentService()
246 info = service.info()
247 ev = info.getEvent(0)
252 # fix me, description.
253 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
255 def recordQuestionCallback(self, answer):
259 if self.recording != None:
260 self.stopCurrentRecording()
262 self.startInstantRecording()
264 def instantRecord(self):
265 if self.recording != None:
266 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
268 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
270 def showMovies(self):
271 self.session.open(MovieSelection)
273 def pauseService(self):
274 self.session.nav.pause(1)
276 def unPauseService(self):
277 self.session.nav.pause(0)