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"] = EventInfo(self.session.nav, EventInfo.Now)
135 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
137 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
138 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
140 self.recording = None
145 print "loading mainmenu XML..."
146 menu = mdom.childNodes[0]
147 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
148 self.session.open(MainMenu, menu, menu.childNodes)
150 def keyNumberGlobal(self, number):
151 print "You pressed number " + str(number)
152 self.session.open(NumberZap, number)
154 def switchChannelUp(self):
155 self.servicelist.moveUp()
156 self.session.execDialog(self.servicelist)
158 def switchChannelDown(self):
159 self.servicelist.moveDown()
160 self.session.execDialog(self.servicelist)
165 def doTimerHide(self):
166 if self.state == self.STATE_SHOWN:
168 self.state = self.STATE_HIDDEN
170 def toggleShow(self):
171 if self.state == self.STATE_SHOWN:
173 #pls check animation support, sorry
175 self.state = self.STATE_HIDDEN
179 self.state = self.STATE_SHOWN
180 #TODO: make it customizable
181 self.hideTimer.start(5000)
184 self.servicelist.moveUp()
185 self.servicelist.zap()
188 self.servicelist.moveDown()
189 self.servicelist.zap()
192 eDVBVolumecontrol.getInstance().volumeUp()
193 self.volumeDialog.instance.show()
194 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
195 self.hideVolTimer.start(3000)
198 eDVBVolumecontrol.getInstance().volumeDown()
199 self.volumeDialog.instance.show()
200 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
201 self.hideVolTimer.start(3000)
204 self.volumeDialog.instance.hide()
207 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
208 self.state = self.STATE_SHOWN
211 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
212 self.state = self.STATE_HIDDEN
215 eDVBVolumecontrol.getInstance().volumeToggleMute()
216 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
218 if (eDVBVolumecontrol.getInstance().isMuted()):
219 self.muteDialog.instance.show()
221 self.muteDialog.instance.hide()
223 def showEPGList(self):
224 self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
227 self.session.open(Standby)
231 def stopCurrentRecording(self):
233 self.session.nav.RecordTimer.removeEntry(self.recording)
234 self.recording = None
236 def startInstantRecording(self):
237 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
239 # try to get event info
242 service = self.session.nav.getCurrentService()
243 info = service.info()
244 ev = info.getEvent(0)
249 # fix me, description.
250 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
252 def recordQuestionCallback(self, answer):
256 if self.recording != None:
257 self.stopCurrentRecording()
259 self.startInstantRecording()
261 def instantRecord(self):
262 if self.recording != None:
263 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
265 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
267 def showMovies(self):
268 self.session.open(MovieSelection)
270 def pauseService(self):
271 self.session.nav.pause(1)
273 def unPauseService(self):
274 self.session.nav.pause(0)