aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/MovieList.py
blob: 2e010ab6964897ad640c62739ddc5e2db1591702 (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
101
102
103
104
105
from HTMLComponent import *
from GUIComponent import *
from Tools.FuzzyDate import FuzzyTime

from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation

from enigma import eServiceReference, eServiceCenter, \
	eServiceCenterPtr, iListableServicePtr, \
	iStaticServiceInformationPtr

RT_HALIGN_LEFT = 0
RT_HALIGN_RIGHT = 1
RT_HALIGN_CENTER = 2
RT_HALIGN_BLOCK = 4

RT_VALIGN_TOP = 0
RT_VALIGN_CENTER = 8
RT_VALIGN_BOTTOM = 16

RT_WRAP = 32


#
# | name of movie              |
#
def MovieListEntry(serviceref, serviceHandler):
	res = [ serviceref ]

	info = serviceHandler.info(serviceref)
	
	if info is None:
		# ignore service which refuse to info
		return
	
	len = info.getLength(serviceref)
	if len:
		len = "%d:%02d" % (len / 60, len % 60)
	else:
		len = "?:??"
	
	res.append((0, 0, 400, 30, 0, RT_HALIGN_LEFT, info.getName(serviceref)))
	
	description = info.getInfoString(serviceref, iServiceInformation.sDescription)
	begin = info.getInfo(serviceref, iServiceInformation.sTimeCreate)
	
	begin_string = ""
	if begin > 0:
		t = FuzzyTime(begin)
		begin_string = t[0] + ", " + t[1]
	
	res.append((0, 30, 200, 20, 1, RT_HALIGN_LEFT, description))
	res.append((0, 50, 200, 20, 1, RT_HALIGN_LEFT, begin_string))
	res.append((200, 50, 200, 20, 1, RT_HALIGN_RIGHT, len))
	
	return res

class MovieList(HTMLComponent, GUIComponent):
	def __init__(self, root):
		GUIComponent.__init__(self)
		self.l = eListboxPythonMultiContent()
		self.load(root)
		self.l.setList(self.list)
		self.l.setFont(0, gFont("Arial", 30))
		self.l.setFont(1, gFont("Arial", 18))
	
	def getCurrent(self):
		return self.l.getCurrentSelection()
	
	def GUIcreate(self, parent):
		self.instance = eListbox(parent)
		self.instance.setContent(self.l)
		self.instance.setItemHeight(75)
	
	def GUIdelete(self):
		self.instance.setContent(None)
		self.instance = None

	def load(self, root):
		# this lists our root service, then building a 
		# nice list
		
		self.list = [ ]
		self.root = root
		
		serviceHandler = eServiceCenter.getInstance()
		list = serviceHandler.list(root)
		
		if list is None:
			raise "listing of movies failed"

		movieList = [ ]
		while 1:
			s = list.getNext()
			if not s.valid():
				del list
				break
			movieList.append(s)
		
		# now process them...
		for ref in movieList:
			self.list.append(MovieListEntry(ref, serviceHandler))

	def reload(self):
		self.load(self.root)
		self.l.setList(self.list)