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
24 from Menu import MainMenu, mdom
26 class NumberZap(Screen):
33 print "do the action here"
36 def keyNumberGlobal(self, number):
37 self.Timer.start(3000) #reset timer
38 self.field = self.field + str(number)
39 self["number"].setText(self.field)
41 def __init__(self, session, number):
42 Screen.__init__(self, session)
43 self.field = str(number)
45 self["number"] = Label(self.field)
47 self["actions"] = NumberActionMap( [ "SetupActions" ],
51 "1": self.keyNumberGlobal,
52 "2": self.keyNumberGlobal,
53 "3": self.keyNumberGlobal,
54 "4": self.keyNumberGlobal,
55 "5": self.keyNumberGlobal,
56 "6": self.keyNumberGlobal,
57 "7": self.keyNumberGlobal,
58 "8": self.keyNumberGlobal,
59 "9": self.keyNumberGlobal,
60 "0": self.keyNumberGlobal
64 self.Timer.timeout.get().append(self.keyOK)
65 self.Timer.start(3000)
68 class InfoBar(Screen):
74 def __init__(self, session):
75 Screen.__init__(self, session)
78 self.servicelist = self.session.instantiateDialog(ChannelSelection)
80 self.state = self.STATE_HIDDEN
82 self.volumeDialog = self.session.instantiateDialog(Volume)
83 self.muteDialog = self.session.instantiateDialog(Mute)
85 self.hideTimer = eTimer()
86 self.hideTimer.timeout.get().append(self.doTimerHide)
87 #self.hideTimer.start(1000)
89 self.hideVolTimer = eTimer()
90 self.hideVolTimer.timeout.get().append(self.volHide)
92 #self["actions"] = ActionMap( [ "InfobarActions" ],
93 self["actions"] = NumberActionMap( [ "InfobarActions" ],
95 "switchChannelUp": self.switchChannelUp,
96 "switchChannelDown": self.switchChannelDown,
97 "mainMenu": self.mainMenu,
99 "zapDown": self.zapDown,
100 "volumeUp": self.volUp,
101 "volumeDown": self.volDown,
102 "volumeMute": self.volMute,
103 "instantRecord": self.instantRecord,
105 "toggleShow": self.toggleShow,
106 "showMovies": self.showMovies,
108 "1": self.keyNumberGlobal,
109 "2": self.keyNumberGlobal,
110 "3": self.keyNumberGlobal,
111 "4": self.keyNumberGlobal,
112 "5": self.keyNumberGlobal,
113 "6": self.keyNumberGlobal,
114 "7": self.keyNumberGlobal,
115 "8": self.keyNumberGlobal,
116 "9": self.keyNumberGlobal,
117 "0": self.keyNumberGlobal,
118 "showEPGList": self.showEPGList,
120 "pauseService": self.pauseService,
121 "unPauseService": self.unPauseService,
123 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
125 self["CurrentTime"] = Clock()
126 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
129 self["ServiceName"] = ServiceName(self.session.nav)
131 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
132 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
134 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
135 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
137 self.recording = None
142 print "loading mainmenu XML..."
143 menu = mdom.childNodes[0]
144 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
145 self.session.open(MainMenu, menu, menu.childNodes)
147 def keyNumberGlobal(self, number):
148 print "You pressed number " + str(number)
149 self.session.open(NumberZap, number)
151 def switchChannelUp(self):
152 self.servicelist.moveUp()
153 self.session.execDialog(self.servicelist)
155 def switchChannelDown(self):
156 self.servicelist.moveDown()
157 self.session.execDialog(self.servicelist)
162 def doTimerHide(self):
163 if self.state == self.STATE_SHOWN:
165 self.state = self.STATE_HIDDEN
167 def toggleShow(self):
168 if self.state == self.STATE_SHOWN:
170 #pls check animation support, sorry
172 self.state = self.STATE_HIDDEN
176 self.state = self.STATE_SHOWN
177 #TODO: make it customizable
178 self.hideTimer.start(5000)
181 self.servicelist.moveUp()
182 self.servicelist.zap()
185 self.servicelist.moveDown()
186 self.servicelist.zap()
189 eDVBVolumecontrol.getInstance().volumeUp()
190 self.volumeDialog.instance.show()
191 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
192 self.hideVolTimer.start(3000)
195 eDVBVolumecontrol.getInstance().volumeDown()
196 self.volumeDialog.instance.show()
197 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
198 self.hideVolTimer.start(3000)
201 self.volumeDialog.instance.hide()
204 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
205 self.state = self.STATE_SHOWN
208 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
209 self.state = self.STATE_HIDDEN
212 eDVBVolumecontrol.getInstance().volumeToggleMute()
213 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
215 if (eDVBVolumecontrol.getInstance().isMuted()):
216 self.muteDialog.instance.show()
218 self.muteDialog.instance.hide()
220 def showEPGList(self):
221 self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
227 def stopCurrentRecording(self):
229 self.session.nav.RecordTimer.removeEntry(self.recording)
230 self.recording = None
232 def startInstantRecording(self):
233 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
235 # try to get event info
238 service = self.session.nav.getCurrentService()
239 info = service.info()
240 ev = info.getEvent(0)
245 # fix me, description.
246 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
248 def recordQuestionCallback(self, answer):
252 if self.recording != None:
253 self.stopCurrentRecording()
255 self.startInstantRecording()
257 def instantRecord(self):
258 if self.recording != None:
259 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
261 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
263 def showMovies(self):
264 self.session.open(MovieSelection)
266 def pauseService(self):
267 self.session.nav.pause(1)
269 def unPauseService(self):
270 self.session.nav.pause(0)