1 from HTMLComponent import *
2 from GUIComponent import *
3 from Tools.FuzzyDate import FuzzyTime
4 from ServiceReference import ServiceReference
6 from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation
8 from enigma import eServiceReference, eServiceCenter, \
9 eServiceCenterPtr, iListableServicePtr, \
10 iStaticServiceInformationPtr
27 def MovieListEntry(serviceref, serviceHandler):
28 if serviceref.flags & eServiceReference.mustDescent:
31 info = serviceHandler.info(serviceref)
34 # ignore service which refuse to info
37 len = info.getLength(serviceref)
39 len = "%d:%02d" % (len / 60, len % 60)
43 begin = info.getInfo(serviceref, iServiceInformation.sTimeCreate)
44 res = [ (serviceref, begin) ]
46 res.append((0, 0, 0, 560, 30, 0, RT_HALIGN_LEFT, info.getName(serviceref)))
48 description = info.getInfoString(serviceref, iServiceInformation.sDescription)
53 begin_string = t[0] + ", " + t[1]
55 res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 30, 560, 20, 1, RT_HALIGN_LEFT, description))
56 res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 50, 270, 20, 1, RT_HALIGN_LEFT, begin_string))
57 res.append((eListboxPythonMultiContent.TYPE_TEXT, 290, 50, 270, 20, 1, RT_HALIGN_RIGHT, len))
61 class MovieList(HTMLComponent, GUIComponent):
62 def __init__(self, root):
63 GUIComponent.__init__(self)
64 self.l = eListboxPythonMultiContent()
67 self.l.setFont(0, gFont("Regular", 30))
68 self.l.setFont(1, gFont("Regular", 18))
70 def moveToIndex(self, index):
71 self.instance.moveSelectionTo(index)
73 def getCurrentIndex(self):
74 return self.instance.getCurrentIndex()
77 return self.l.getCurrentSelection()[0]
79 def GUIcreate(self, parent):
80 self.instance = eListbox(parent)
81 self.instance.setContent(self.l)
82 self.instance.setItemHeight(75)
85 self.instance.setContent(None)
88 def reload(self, root = None):
93 self.l.setList(self.list)
95 def removeService(self, service):
96 for l in self.list[:]:
97 if l[0][0] == service:
99 self.l.setList(self.list)
101 def load(self, root):
102 # this lists our root service, then building a
108 serviceHandler = eServiceCenter.getInstance()
109 list = serviceHandler.list(root)
112 raise "listing of movies failed"
122 # now process them...
123 for ref in movieList:
124 a = MovieListEntry(ref, serviceHandler)
128 self.list.sort(key=lambda x: -x[0][1])
130 def moveTo(self, serviceref):
134 if str(ServiceReference(x[0][0])) == str(ServiceReference(serviceref)):
137 self.instance.moveSelectionTo(found)
140 self.instance.moveSelection(self.instance.moveDown)