- add movie selector
[enigma2.git] / lib / python / Components / MovieList.py
1 from HTMLComponent import *
2 from GUIComponent import *
3
4 from enigma import eListboxPythonMultiContent, eListbox, gFont
5
6 from enigma import eServiceReference, eServiceCenter, \
7         eServiceCenterPtr, iListableServicePtr, \
8         iStaticServiceInformationPtr
9
10
11
12 RT_HALIGN_LEFT = 0
13 RT_HALIGN_RIGHT = 1
14 RT_HALIGN_CENTER = 2
15 RT_HALIGN_BLOCK = 4
16
17 RT_VALIGN_TOP = 0
18 RT_VALIGN_CENTER = 8
19 RT_VALIGN_BOTTOM = 16
20
21 RT_WRAP = 32
22
23
24 #
25 # | name of movie              |
26 #
27 def MovieListEntry(serviceref, serviceHandler):
28         res = [ serviceref ]
29
30         info = iStaticServiceInformationPtr()
31
32         if serviceHandler.info(serviceref, info):
33                 # ignore service which refuse to info
34                 del info
35                 return
36         
37         res.append((0, 0, 400, 30, 0, RT_HALIGN_LEFT, info.getName(serviceref)))
38         res.append((0, 30, 200, 20, 1, RT_HALIGN_LEFT, "Toller Film"))
39         res.append((0, 50, 200, 20, 1, RT_HALIGN_LEFT, "Aufgenommen: irgendwann"))
40         res.append((200, 50, 200, 20, 1, RT_HALIGN_RIGHT, "1232MB"))
41         
42         return res
43
44 class MovieList(HTMLComponent, GUIComponent):
45         def __init__(self, root):
46                 GUIComponent.__init__(self)
47                 self.l = eListboxPythonMultiContent()
48                 self.load(root)
49                 self.l.setList(self.list)
50                 self.l.setFont(0, gFont("Arial", 30))
51                 self.l.setFont(1, gFont("Arial", 18))
52         
53         def getCurrent(self):
54                 return self.l.getCurrentSelection()
55         
56         def GUIcreate(self, parent):
57                 self.instance = eListbox(parent)
58                 self.instance.setContent(self.l)
59                 self.instance.setItemHeight(75)
60         
61         def GUIdelete(self):
62                 self.instance.setContent(None)
63                 self.instance = None
64
65         def load(self, root):
66                 # this lists our root service, then building a 
67                 # nice list
68                 
69                 self.list = [ ]
70                 
71                 serviceHandler = eServiceCenterPtr()
72                 eServiceCenter.getInstance(serviceHandler)
73                 list = iListableServicePtr()
74                 
75                 if serviceHandler.list(root, list):
76                         raise "listing of movies failed"
77
78                 movieList = [ ]
79                 while 1:
80                         s = eServiceReference()
81                         if list.getNext(s):
82                                 del s
83                                 del list
84                                 break
85                         movieList.append(s)
86                 
87                 # now process them...
88                 for ref in movieList:
89                         self.list.append(MovieListEntry(ref, serviceHandler))