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.Button import Button
7 from Components.ServiceName import ServiceName
8 from Components.EventInfo import EventInfo
9 from Components.ServicePosition import ServicePosition
10 from Components.config import configfile
12 from Screens.MessageBox import MessageBox
13 from Screens.MovieSelection import MovieSelection
14 from Screens.Volume import Volume
15 from Screens.Mute import Mute
22 from Menu import MainMenu, mdom
24 class InfoBar(Screen):
30 def __init__(self, session):
31 Screen.__init__(self, session)
34 self.servicelist = self.session.instantiateDialog(ChannelSelection)
36 self.state = self.STATE_HIDDEN
38 self.volumeDialog = self.session.instantiateDialog(Volume)
39 self.muteDialog = self.session.instantiateDialog(Mute)
41 self.hideTimer = eTimer()
42 self.hideTimer.timeout.get().append(self.doTimerHide)
43 #self.hideTimer.start(1000)
45 self.hideVolTimer = eTimer()
46 self.hideVolTimer.timeout.get().append(self.volHide)
48 self["actions"] = ActionMap( [ "InfobarActions" ],
50 "switchChannelUp": self.switchChannelUp,
51 "switchChannelDown": self.switchChannelDown,
52 "mainMenu": self.mainMenu,
54 "zapDown": self.zapDown,
55 "volumeUp": self.volUp,
56 "volumeDown": self.volDown,
57 "volumeMute": self.volMute,
58 "instantRecord": self.instantRecord,
60 "toggleShow": self.toggleShow,
61 "showMovies": self.showMovies,
63 "showEPGList": self.showEPGList
65 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
67 self["CurrentTime"] = Clock()
68 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
71 self["ServiceName"] = ServiceName(self.session.nav)
73 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
74 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
76 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
77 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
84 print "loading mainmenu XML..."
85 menu = mdom.childNodes[0]
86 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
87 self.session.open(MainMenu, menu, menu.childNodes)
89 def switchChannelUp(self):
90 self.servicelist.moveUp()
91 self.session.execDialog(self.servicelist)
93 def switchChannelDown(self):
94 self.servicelist.moveDown()
95 self.session.execDialog(self.servicelist)
100 def doTimerHide(self):
101 if self.state == self.STATE_SHOWN:
103 self.state = self.STATE_HIDDEN
105 def toggleShow(self):
106 if self.state == self.STATE_SHOWN:
108 #pls check animation support, sorry
110 self.state = self.STATE_HIDDEN
114 self.state = self.STATE_SHOWN
115 #TODO: make it customizable
116 self.hideTimer.start(5000)
119 self.servicelist.moveUp()
120 self.servicelist.zap()
123 self.servicelist.moveDown()
124 self.servicelist.zap()
127 eDVBVolumecontrol.getInstance().volumeUp()
128 self.volumeDialog.instance.show()
129 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
130 self.hideVolTimer.start(3000)
133 eDVBVolumecontrol.getInstance().volumeDown()
134 self.volumeDialog.instance.show()
135 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
136 self.hideVolTimer.start(3000)
139 self.volumeDialog.instance.hide()
142 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
143 self.state = self.STATE_SHOWN
146 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
147 self.state = self.STATE_HIDDEN
150 eDVBVolumecontrol.getInstance().volumeToggleMute()
151 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
153 if (eDVBVolumecontrol.getInstance().isMuted()):
154 self.muteDialog.instance.show()
156 self.muteDialog.instance.hide()
158 def showEPGList(self):
159 # TODO hier irgendwie EPGSelection benutzen und setRoot benutzen um nen service zu uebergeben
160 # self.session.nav.getCurrentlyPlayingServiceReference() sollte das wohl sein
161 print "hier soll mal ne EPGList aufgehen"
167 def stopCurrentRecording(self):
169 self.session.nav.RecordTimer.removeEntry(self.recording)
170 self.recording = None
172 def startInstantRecording(self):
173 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
175 # try to get event info
178 service = self.session.nav.getCurrentService()
179 info = service.info()
180 ev = info.getEvent(0)
185 # fix me, description.
186 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 30, serviceref, epg, "instant record")
188 def recordQuestionCallback(self, answer):
192 if self.recording != None:
193 self.stopCurrentRecording()
195 self.startInstantRecording()
197 def instantRecord(self):
198 if self.recording != None:
199 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
201 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
203 def showMovies(self):
204 self.session.open(MovieSelection)