9085b1e44c1da94dc23bbafd3fa92c2c03859d77
[vuplus_dvbapp-plugin] / webinterface / src / WebComponents / Sources / AudioTracks.py
1 from Components.Sources.Source import Source
2 from Tools.ISO639 import LanguageCodes
3
4 class AudioTracks(Source):
5         GET = 0
6         SET = 1
7
8         text = "False"
9
10         def __init__(self, session, func=GET):
11                 self.cmd = None
12                 self.session = session
13                 self.func = func
14                 Source.__init__(self)
15
16         def handleCommand(self, cmd):
17                 self.cmd = cmd
18
19         def setAudioTrack(self):
20                 if self.cmd is not None:
21                         service = self.session.nav.getCurrentService()
22                         audio = service and service.audioTracks()
23                         try:
24                                 cmd = int(self.cmd)
25                         except ValueError:
26                                 cmd = -1
27
28                         print "COMMAND is %s" % self.cmd
29                         if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > cmd and cmd >= 0:
30                                 audio.selectTrack(cmd)
31                                 return "Success"
32                         else:
33                                 return "Error"
34                 else:
35                         return "Error"
36
37         def getAudioTracks(self):
38                 service = self.session.nav.getCurrentService()
39                 audio = service and service.audioTracks()
40                 n = audio and audio.getNumberOfTracks() or 0
41
42                 tracklist = []
43
44                 #check for standby
45                 if audio is not None and service is not None:
46                         currentTrack = audio.getCurrentTrack()
47
48                         if n > 0:
49                                 print "[AudioTracks.py] got %s Audiotracks!" % (n)
50
51                                 for x in range(n):
52                                         i = audio.getTrackInfo(x)
53
54                                         language = i.getLanguage()
55                                         description = i.getDescription()
56                                         pid = i.getPID()
57
58                                         if LanguageCodes.has_key(language):
59                                                 language = LanguageCodes[language][0]
60
61                                         if len(description):
62                                                 description += " (" + language + ")"
63                                         else:
64                                                 description = language
65
66                                         if x == currentTrack:
67                                                 active = "True"
68                                         else:
69                                                 active = "False"
70
71                                         tracklist.append((description, x, pid, active))
72
73                 return tracklist
74
75         text = property(setAudioTrack)
76         list = property(getAudioTracks)
77         lut = {"Description": 0, "Id": 1, "Pid": 2, "Active": 3}