diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-04-03 08:12:07 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-04-03 08:12:07 +0000 |
| commit | 2cacfb04d1bff4047534b63618c3744346f65fd5 (patch) | |
| tree | 5d5057dc47f9daaa50a17dee1838322cc4afac50 /lib/python | |
| parent | af5dfb0ec911f152f909530cf29c9e2ba74e2c1f (diff) | |
| download | enigma2-2cacfb04d1bff4047534b63618c3744346f65fd5.tar.gz enigma2-2cacfb04d1bff4047534b63618c3744346f65fd5.zip | |
faster loading of movie list (done by initially not loading the file length and updating the file lengths after displaying the list in the background
(timer driven))
Diffstat (limited to 'lib/python')
| -rw-r--r-- | lib/python/Components/MovieList.py | 15 | ||||
| -rw-r--r-- | lib/python/Screens/MovieSelection.py | 14 |
2 files changed, 27 insertions, 2 deletions
diff --git a/lib/python/Components/MovieList.py b/lib/python/Components/MovieList.py index a921b8df..681dec2b 100644 --- a/lib/python/Components/MovieList.py +++ b/lib/python/Components/MovieList.py @@ -13,7 +13,7 @@ from enigma import eServiceReference, eServiceCenter, \ # # | name of movie | # -def MovieListEntry(serviceref, serviceHandler): +def MovieListEntry(serviceref, serviceHandler, withLength = False): if serviceref.flags & eServiceReference.mustDescent: return None @@ -23,7 +23,10 @@ def MovieListEntry(serviceref, serviceHandler): # ignore service which refuse to info return None - len = info.getLength(serviceref) + if withLength: + len = info.getLength(serviceref) + else: + len = 0 if len > 0: len = "%d:%02d" % (len / 60, len % 60) else: @@ -91,6 +94,14 @@ class MovieList(HTMLComponent, GUIComponent): self.list.remove(l) self.l.setList(self.list) + def __len__(self): + return len(self.list) + + def updateLengthOfIndex(self, index): + serviceHandler = eServiceCenter.getInstance() + self.list[index] = MovieListEntry(self.list[index][0][0], serviceHandler, True) + self.l.invalidateEntry(index) + def load(self, root): # this lists our root service, then building a # nice list diff --git a/lib/python/Screens/MovieSelection.py b/lib/python/Screens/MovieSelection.py index 17da5ff3..91620ea2 100644 --- a/lib/python/Screens/MovieSelection.py +++ b/lib/python/Screens/MovieSelection.py @@ -77,6 +77,7 @@ class MovieSelection(Screen): self["waitingtext"] = Label(_("Please wait... Loading list...")) self["list"] = MovieList(None) + self.list = self["list"] self.selectedmovie = selectedmovie #self["okbutton"] = Button("ok", [self.channelSelected]) @@ -91,6 +92,9 @@ class MovieSelection(Screen): self["actions"].csel = self self.onShown.append(self.go) + self.lengthTimer = eTimer() + self.lengthTimer.timeout.get().append(self.updateLengthData) + def go(self): # ouch. this should redraw our "Please wait..."-text. # this is of course not the right way to do this. @@ -103,6 +107,16 @@ class MovieSelection(Screen): self["waitingtext"].instance.hide() self["freeDiskSpace"].update() + + self.lengthTimer.start(10, 1) + self.lengthPosition = 0 + self.lengthLength = len(self["list"]) + + def updateLengthData(self): + self.list.updateLengthOfIndex(self.lengthPosition) + self.lengthPosition += 1 + if self.lengthPosition < self.lengthLength: + self.lengthTimer.start(10, 1) def moveTo(self): self["list"].moveTo(self.selectedmovie) |
