1 from Screen import Screen
2 from ChannelSelection import ChannelSelection
3 from Components.Clock import Clock
4 from Components.ActionMap import ActionMap
5 from Components.Button import Button
6 from Components.ServiceName import ServiceName
7 from Components.EventInfo import EventInfo
8 from Components.ServicePosition import ServicePosition
9 from Components.config import configfile
11 from Screens.MessageBox import MessageBox
12 from Screens.MovieSelection import MovieSelection
13 from Screens.Volume import Volume
14 from Screens.Mute import Mute
21 from Menu import MainMenu, mdom
23 class InfoBar(Screen):
29 def __init__(self, session):
30 Screen.__init__(self, session)
33 self.servicelist = self.session.instantiateDialog(ChannelSelection)
35 self.state = self.STATE_HIDDEN
37 self.volumeDialog = self.session.instantiateDialog(Volume)
38 self.muteDialog = self.session.instantiateDialog(Mute)
40 self.hideTimer = eTimer()
41 self.hideTimer.timeout.get().append(self.doTimerHide)
42 #self.hideTimer.start(1000)
44 self.hideVolTimer = eTimer()
45 self.hideVolTimer.timeout.get().append(self.volHide)
47 self["actions"] = ActionMap( [ "InfobarActions" ],
49 "switchChannelUp": self.switchChannelUp,
50 "switchChannelDown": self.switchChannelDown,
51 "mainMenu": self.mainMenu,
53 "zapDown": self.zapDown,
54 "volumeUp": self.volUp,
55 "volumeDown": self.volDown,
56 "volumeMute": self.volMute,
57 "instantRecord": self.instantRecord,
59 "toggleShow": self.toggleShow,
60 "showMovies": self.showMovies,
63 # self["okbutton"] = Button("mainMenu", [self.mainMenu])
65 self["CurrentTime"] = Clock()
66 # ServicePosition(self.session.nav, ServicePosition.TYPE_REMAINING)
69 self["ServiceName"] = ServiceName(self.session.nav)
71 self["Event_Now"] = EventInfo(self.session.nav, EventInfo.Now)
72 self["Event_Next"] = EventInfo(self.session.nav, EventInfo.Next)
74 self["Event_Now_Duration"] = EventInfo(self.session.nav, EventInfo.Now_Duration)
75 self["Event_Next_Duration"] = EventInfo(self.session.nav, EventInfo.Next_Duration)
82 print "loading mainmenu XML..."
83 menu = mdom.childNodes[0]
84 assert menu.tagName == "menu", "root element in menu must be 'menu'!"
85 self.session.open(MainMenu, menu, menu.childNodes)
87 def switchChannelUp(self):
88 self.servicelist.moveUp()
89 self.session.execDialog(self.servicelist)
91 def switchChannelDown(self):
92 self.servicelist.moveDown()
93 self.session.execDialog(self.servicelist)
98 def doTimerHide(self):
99 if self.state == self.STATE_SHOWN:
101 self.state = self.STATE_HIDDEN
103 def toggleShow(self):
104 if self.state == self.STATE_SHOWN:
106 #pls check animation support, sorry
108 self.state = self.STATE_HIDDEN
112 self.state = self.STATE_SHOWN
113 #TODO: make it customizable
114 self.hideTimer.start(5000)
117 self.servicelist.moveUp()
118 self.servicelist.zap()
121 self.servicelist.moveDown()
122 self.servicelist.zap()
125 eDVBVolumecontrol.getInstance().volumeUp()
126 self.volumeDialog.instance.show()
127 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
128 self.hideVolTimer.start(3000)
131 eDVBVolumecontrol.getInstance().volumeDown()
132 self.volumeDialog.instance.show()
133 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
134 self.hideVolTimer.start(3000)
137 self.volumeDialog.instance.hide()
140 self.instance.m_animation.startMoveAnimation(ePoint(0, 600), ePoint(0, 380), 100)
141 self.state = self.STATE_SHOWN
144 self.instance.m_animation.startMoveAnimation(ePoint(0, 380), ePoint(0, 600), 100)
145 self.state = self.STATE_HIDDEN
148 eDVBVolumecontrol.getInstance().volumeToggleMute()
149 self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
151 if (eDVBVolumecontrol.getInstance().isMuted()):
152 self.muteDialog.instance.show()
154 self.muteDialog.instance.hide()
160 def stopCurrentRecording(self):
162 self.session.nav.RecordTimer.removeEntry(self.recording)
163 self.recording = None
165 def startInstantRecording(self):
166 serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
168 # try to get event info
171 service = self.session.nav.getCurrentService()
172 info = service.info()
173 ev = info.getEvent(0)
178 # fix me, description.
179 self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 30, serviceref, epg, "instant record")
181 def recordQuestionCallback(self, answer):
185 if self.recording != None:
186 self.stopCurrentRecording()
188 self.startInstantRecording()
190 def instantRecord(self):
191 if self.recording != None:
192 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Do you want to stop the current\n(instant) recording?")
194 self.session.openWithCallback(self.recordQuestionCallback, MessageBox, "Start recording?")
196 def showMovies(self):
197 self.session.open(MovieSelection)