aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Sources/ServiceList.py
blob: 4d184152d36d33b383f17cc39bcfa9f1cdbab02c (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
from Source import Source
from enigma import eServiceCenter, eServiceReference

class ServiceList(Source):
	def __init__(self, root, command_func = None):
		Source.__init__(self)
		self.root = root
		self.command_func = command_func

	def getServicesAsList(self, format = "SN"):
		services = self.getServiceList()
		return services and services.getContent(format, True)

	def getServiceList(self):
		serviceHandler = eServiceCenter.getInstance()
		return serviceHandler.list(self.root)

	def validateReference(self, ref):
		return ref in self.getServicesAsList("S")

	list = property(getServicesAsList)
	lut = {"Reference": 0, "Name": 1}

	def getRoot(self):
		return self.__root

	def setRoot(self, root):
		assert isinstance(root, eServiceReference)
		self.__root = root
		self.changed()
		
	root = property(getRoot, setRoot)

	def handleCommand(self, cmd):
		print "ServiceList handle command"
		
		if not self.validateReference(cmd):
			print "Service reference did not validate!"
			return

		ref = eServiceReference(cmd)
		if self.command_func:
			self.command_func(ref)