from Tools.FuzzyDate import FuzzyTime
from ServiceReference import ServiceReference
from Components.MultiContent import MultiContentEntryText
+from Components.config import config
from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation, \
RT_HALIGN_LEFT, RT_HALIGN_RIGHT, eServiceReference, eServiceCenter
SORT_ALPHANUMERIC = 1
SORT_RECORDED = 2
- LISTTYPE_ORIGINAL = 0
- LISTTYPE_COMPACT_DESCRIPTION = 1
- LISTTYPE_COMPACT = 2
- LISTTYPE_MINIMAL = 3
+ LISTTYPE_ORIGINAL = 1
+ LISTTYPE_COMPACT_DESCRIPTION = 2
+ LISTTYPE_COMPACT = 3
+ LISTTYPE_MINIMAL = 4
- HIDE_DESCRIPTION = 0
- SHOW_DESCRIPTION = 1
+ HIDE_DESCRIPTION = 1
+ SHOW_DESCRIPTION = 2
- def __init__(self, root, list_type, sort_type, descr_state):
+ def __init__(self, root, list_type=None, sort_type=None, descr_state=None):
GUIComponent.__init__(self)
- self.list_type = list_type
- self.descr_state = descr_state
- self.sort_type = sort_type
+ self.list_type = list_type or self.LISTTYPE_ORIGINAL
+ self.descr_state = descr_state or self.HIDE_DESCRIPTION
+ self.sort_type = sort_type or self.SORT_RECORDED
self.l = eListboxPythonMultiContent()
self.tags = set()
if len <= 0: #recalc len when not already done
cur_idx = self.l.getCurrentSelectionIndex()
x = self.list[cur_idx]
- len = x[1].getLength(x[0]) #recalc the movie length...
+ if config.usage.load_length_of_movies_in_moviellist.value:
+ len = x[1].getLength(x[0]) #recalc the movie length...
+ else:
+ len = 0 #dont recalc movielist to speedup loading the list
self.list[cur_idx] = (x[0], x[1], x[2], len) #update entry in list... so next time we don't need to recalc
if len > 0:
len = "%d:%02d" % (len / 60, len % 60)
else:
- len = "?:??"
+ len = ""
res = [ None ]
txt = info.getName(serviceref)
service = ServiceReference(info.getInfoString(serviceref, iServiceInformation.sServiceref))
description = info.getInfoString(serviceref, iServiceInformation.sDescription)
-
+ tags = info.getInfoString(serviceref, iServiceInformation.sTags)
+
begin_string = ""
if begin > 0:
t = FuzzyTime(begin)
if self.list_type == MovieList.LISTTYPE_ORIGINAL:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-182, 30), font = 0, flags = RT_HALIGN_LEFT, text=txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
+ if self.tags:
+ res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = tags))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(200, 50), size=(200, 20), font = 1, flags = RT_HALIGN_LEFT, text = service.getServiceName()))
+ else:
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(0, 30), size=(width, 20), font=1, flags=RT_HALIGN_LEFT, text=description))
- res.append(MultiContentEntryText(pos=(0, 50), size=(width-270, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
- res.append(MultiContentEntryText(pos=(width-200, 50), size=(200, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
+ res.append(MultiContentEntryText(pos=(0, 50), size=(200, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
+ res.append(MultiContentEntryText(pos=(width-200, 50), size=(198, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
elif self.list_type == MovieList.LISTTYPE_COMPACT_DESCRIPTION:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-120, 20), font = 0, flags = RT_HALIGN_LEFT, text = txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-212, 20), size=(154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(0, 20), size=(width-212, 17), font=1, flags=RT_HALIGN_LEFT, text=description))
res.append(MultiContentEntryText(pos=(width-120, 6), size=(120, 20), font=1, flags=RT_HALIGN_RIGHT, text=begin_string))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-212, 20), size=(154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(width-58, 20), size=(58, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
elif self.list_type == MovieList.LISTTYPE_COMPACT:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-77, 20), font = 0, flags = RT_HALIGN_LEFT, text = txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
- res.append(MultiContentEntryText(pos=(0, 20), size=(width-200, 17), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
+ if self.tags:
+ res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = tags))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_LEFT, text = service.getServiceName()))
+ else:
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
+ res.append(MultiContentEntryText(pos=(0, 20), size=(200, 17), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
res.append(MultiContentEntryText(pos=(width-75, 0), size=(75, 20), font=0, flags=RT_HALIGN_RIGHT, text=len))
else:
assert(self.list_type == MovieList.LISTTYPE_MINIMAL)
instance.setContent(self.l)
instance.selectionChanged.get().append(self.selectionChanged)
+ def preWidgetRemove(self, instance):
+ instance.setContent(None)
+ instance.selectionChanged.get().remove(self.selectionChanged)
+
def reload(self, root = None, filter_tags = None):
if root is not None:
self.load(root, filter_tags)
if this_tags == ['']:
this_tags = []
this_tags = set(this_tags)
+ tags |= this_tags
# filter_tags is either None (which means no filter at all), or
# a set. In this case, all elements of filter_tags must be present,
if filter_tags is not None and not this_tags.issuperset(filter_tags):
continue
- tags |= this_tags
self.list.append((serviceref, info, begin, -1))
if self.sort_type == MovieList.SORT_ALPHANUMERIC:
ref = x[0]
info = self.serviceHandler.info(ref)
name = info and info.getName(ref)
- return name and name.lower() or ""
+ return (name and name.lower() or "", -x[2])
def moveTo(self, serviceref):
count = 0
for x in self.list:
if x[0] == serviceref:
self.instance.moveSelectionTo(count)
- break
+ return True
count += 1
-
+ return False
+
def moveDown(self):
self.instance.moveSelection(self.instance.moveDown)