1 from Screens.Screen import Screen
2 from Components.ActionMap import NumberActionMap
3 from Components.Label import Label
5 from Screens.ChoiceBox import ChoiceBox
6 from Screens.MessageBox import MessageBox
7 from InfoBarGenerics import InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarTimeshift, InfoBarSeek, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport
9 class SubservicesQuickzap(InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, Screen):
10 def __init__(self, session, subservices):
11 Screen.__init__(self, session)
12 for x in [InfoBarShowHide, InfoBarMenu, InfoBarServiceName, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport, InfoBarExtensions]:
15 self.restoreService = self.session.nav.getCurrentlyPlayingServiceReference()
17 self["CurrentSubserviceNumber"] = Label("")
18 self.currentSubserviceNumberLabel = self["CurrentSubserviceNumber"]
20 self.updateSubservices()
21 self.currentlyPlayingSubservice = 0
23 self.onLayoutFinish.append(self.playSubservice)
25 self["actions"] = NumberActionMap( [ "InfobarSubserviceQuickzapActions", "NumberActions", "DirectionActions", "ColorActions" ],
27 "up": self.showSelection,
28 "down": self.showSelection,
29 "right": self.nextSubservice,
30 "left": self.previousSubservice,
31 "green": self.showSelection,
32 "exit": self.quitQuestion,
33 "1": self.keyNumberGlobal,
34 "2": self.keyNumberGlobal,
35 "3": self.keyNumberGlobal,
36 "4": self.keyNumberGlobal,
37 "5": self.keyNumberGlobal,
38 "6": self.keyNumberGlobal,
39 "7": self.keyNumberGlobal,
40 "8": self.keyNumberGlobal,
41 "9": self.keyNumberGlobal,
42 "0": self.keyNumberGlobal
47 def updateSubservices(self):
48 self.service = self.session.nav.getCurrentService()
49 self.subservices = self.service and self.service.subServices()
50 self.n = self.subservices and self.subservices.getNumberOfSubservices()
52 def nextSubservice(self):
53 self.updateSubservices()
54 if self.currentlyPlayingSubservice == self.n - 1:
55 self.playSubservice(0)
57 self.playSubservice(self.currentlyPlayingSubservice + 1)
59 def previousSubservice(self):
60 self.updateSubservices()
61 if self.currentlyPlayingSubservice == 0:
62 self.playSubservice(self.n - 1)
64 self.playSubservice(self.currentlyPlayingSubservice - 1)
66 def getSubserviceIndex(self, service):
67 self.updateSubservices()
68 for x in range(self.n):
69 if service == self.subservices.getSubservice(x):
72 def keyNumberGlobal(self, number):
73 print number, "pressed"
74 self.updateSubservices()
76 self.playSubservice(self.lastservice)
77 elif number <= self.n - 1:
78 self.playSubservice(number)
80 def showSelection(self):
81 self.updateSubservices()
83 for x in range(self.n):
84 i = self.subservices.getSubservice(x)
85 tlist.append((i.getName(), x))
87 keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * self.n
88 self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = self.currentlyPlayingSubservice, keys = keys)
90 def subserviceSelected(self, service):
91 print "playing subservice number", service
92 if service is not None:
93 self.playSubservice(service[1])
98 def quitQuestion(self):
99 self.session.openWithCallback(self.quit, MessageBox, _("Really exit the subservices quickzap?"))
101 def quit(self, answer):
103 self.session.nav.playService(self.restoreService)
106 def playSubservice(self, number = 0):
107 newservice = self.subservices.getSubservice(number)
108 if newservice.valid():
111 self.lastservice = self.currentlyPlayingSubservice
112 self.session.nav.playService(newservice)
113 self.currentlyPlayingSubservice = number
114 self.currentSubserviceNumberLabel.setText(str(number))