aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Screens/ServiceInfo.py
blob: d32c3e85b3d54c96df000aff40a468fc4a0d4ae2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
from Components.HTMLComponent import *
from Components.GUIComponent import *
from Screen import Screen
from Components.ActionMap import ActionMap
from Components.Label import Label
from Components.MenuList import MenuList
from ServiceReference import ServiceReference
from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation

RT_HALIGN_LEFT = 0

def ServiceInfoListEntry(a, b):
	res = [ ]

	#PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
	res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""))
	res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 150, 25, 0, RT_HALIGN_LEFT, a))
	res.append((eListboxPythonMultiContent.TYPE_TEXT, 170, 0, 150, 25, 0, RT_HALIGN_LEFT, b))

	return res

class ServiceInfoList(HTMLComponent, GUIComponent):
	def __init__(self, source):
		GUIComponent.__init__(self)
		self.l = eListboxPythonMultiContent()
		self.list = source
		self.l.setList(self.list)
		self.l.setFont(0, gFont("Regular", 23))

	def GUIcreate(self, parent):
		self.instance = eListbox(parent)
		self.instance.setContent(self.l)
		self.instance.setItemHeight(25)

	def GUIdelete(self):
		self.instance.setContent(None)
		self.instance = None

class ServiceInfo(Screen):
	def __init__(self, session):
		Screen.__init__(self, session)
		
		self["actions"] = ActionMap(["OkCancelActions"],
		{
			"ok": self.close,
			"cancel": self.close
		}, -1)
		
		service = session.nav.getCurrentService()
		if service is not None:
			self.info = service.info()
		else:
			self.info = None

		if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
			name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
		else:
			name = "N/A"
		Labels = ( ("Name",  name),
				   ("Provider", self.getValue(iServiceInformation.sProvider)),
				   ("VideoPID", self.getValue(iServiceInformation.sVideoPID)),
				   ("AudioPID", self.getValue(iServiceInformation.sAudioPID)),
				   ("PCRPID", self.getValue(iServiceInformation.sPCRPID)),
				   ("PMTPID", self.getValue(iServiceInformation.sPMTPID)),
				   ("TXTPID", self.getValue(iServiceInformation.sTXTPID)),
				   ("Videoformat", self.getValue(iServiceInformation.sAspect)),
				   ("TSID", self.getValue(iServiceInformation.sTSID)),
				   ("ONID", self.getValue(iServiceInformation.sONID)),
				   ("SID", self.getValue(iServiceInformation.sSID)),
				   ("Namespace", self.getValue(iServiceInformation.sNamespace)))
	
		tlist = [ ]

		for item in Labels:
			value = item[1]
			tlist.append(ServiceInfoListEntry(item[0]+":", value))		

		self["infolist"] = ServiceInfoList(tlist)

	def getValue(self, what):
		if self.info is None:
			return ""
		
		v = self.info.getInfo(what)
		if v == -2:
			v = self.info.getInfoString(what)
		elif v != -1:
			if what in [iServiceInformation.sVideoPID, 
					iServiceInformation.sAudioPID, iServiceInformation.sPCRPID, iServiceInformation.sPMTPID, 
					iServiceInformation.sTXTPID, iServiceInformation.sTSID, iServiceInformation.sONID,
					iServiceInformation.sSID]:
				v = "0x%04x (%dd)" % (v, v)
			elif what in [iServiceInformation.sNamespace]:
				v = "0x%08x" % (v)
			else:
				v = str(v)
		else:
			v = "N/A"

		return v