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 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
122 self["CurrentTime"] = Clock()
123 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
126 self["ServiceName"] = ServiceName(self.session.nav)
128 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
129 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
131 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
132 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
134 self.recording = None
139 print "loading mainmenu XML..."
140 menu = mdom.childNodes[0]
141 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
142 self.session.open(MainMenu, menu, menu.childNodes)
144 def keyNumberGlobal(self, number):
145 print "You pressed number " + str(number)
146 self.session.open(NumberZap, number)
148 def switchChannelUp(self):
149 self.servicelist.moveUp()
150 self.session.execDialog(self.servicelist)
152 def switchChannelDown(self):
153 self.servicelist.moveDown()
154 self.session.execDialog(self.servicelist)
159 def doTimerHide(self):
160 if self.state == self.STATE_SHOWN:
162 self.state = self.STATE_HIDDEN
164 def toggleShow(self):
165 if self.state == self.STATE_SHOWN:
167 #pls check animation support, sorry
169 self.state = self.STATE_HIDDEN
173 self.state = self.STATE_SHOWN
174 #TODO: make it customizable
175 self.hideTimer.start(5000)
178 self.servicelist.moveUp()
179 self.servicelist.zap()
182 self.servicelist.moveDown()
183 self.servicelist.zap()
186 eDVBVolumecontrol.getInstance().volumeUp()
187 self.volumeDialog.instance.show()
188 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
189 self.hideVolTimer.start(3000)
192 eDVBVolumecontrol.getInstance().volumeDown()
193 self.volumeDialog.instance.show()
194 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
195 self.hideVolTimer.start(3000)
198 self.volumeDialog.instance.hide()
201 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
202 self.state = self.STATE_SHOWN
205 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
206 self.state = self.STATE_HIDDEN
209 eDVBVolumecontrol.getInstance().volumeToggleMute()
210 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
212 if (eDVBVolumecontrol.getInstance().isMuted()):
213 self.muteDialog.instance.show()
215 self.muteDialog.instance.hide()
217 def showEPGList(self):
218 self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
224 def stopCurrentRecording(self):
226 self.session.nav.RecordTimer.removeEntry(self.recording)
227 self.recording = None
229 def startInstantRecording(self):
230 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
232 # try to get event info
235 service = self.session.nav.getCurrentService()
236 info = service.info()
237 ev = info.getEvent(0)
242 # fix me, description.
243 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 30, serviceref, epg, "instant record")
245 def recordQuestionCallback(self, answer):
249 if self.recording != None:
250 self.stopCurrentRecording()
252 self.startInstantRecording()
254 def instantRecord(self):
255 if self.recording != None:
256 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
258 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
260 def showMovies(self):
261 self.session.open(MovieSelection)