aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Sources/StreamService.py
blob: 4f4e78e85a4ee97e6f46e47efc6da9e630c62a7b (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
from Source import Source
from Components.Element import cached
from enigma import eServiceReference, getBestPlayableServiceReference

class StreamService(Source):
	def __init__(self, navcore):
		Source.__init__(self)
		self.ref = None
		self.__service = None
		self.navcore = navcore

	def serviceEvent(self, event):
		pass

	@cached
	def getService(self):
		return self.__service

	service = property(getService)

	def handleCommand(self, cmd):
		print "StreamService handle command", cmd
		self.ref = eServiceReference(cmd)

	def recordEvent(self, service, event):
		if service is self.__service:
			return
		print "RECORD event for us:", service
		self.changed((self.CHANGED_ALL, ))

	def execBegin(self):
		print "StreamService execBegin", self.ref.toString()
		if self.ref.flags & eServiceReference.isGroup:
			playref = getBestPlayableServiceReference(self.ref, eServiceReference())
			if playref:
				self.ref = playref
		self.__service = self.navcore.recordService(self.ref)
		self.navcore.record_event.append(self.recordEvent)
		if self.__service is not None:
			self.__service.prepareStreaming()
			self.__service.start()

	def execEnd(self):
		print "StreamService execEnd", self.ref.toString()
		self.navcore.record_event.remove(self.recordEvent)
		if self.__service is not None:
			self.navcore.stopRecordService(self.__service)
			self.__service = None