summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2010-01-22 01:25:57 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2010-01-22 01:25:57 +0800
commit637311f1be4fa50e4ca714e6a5260b6f03c150d6 (patch)
treeb30a6c971e638fb7b94534a25dfcc64ec914bbff
parentb7f2340e8b09d274bde12d579260ad6a612081a3 (diff)
ppstream: files navigation works now
-rw-r--r--totem/plugin/ppstream.py82
1 files changed, 68 insertions, 14 deletions
diff --git a/totem/plugin/ppstream.py b/totem/plugin/ppstream.py
index 4248f5a..c21c596 100644
--- a/totem/plugin/ppstream.py
+++ b/totem/plugin/ppstream.py
@@ -333,6 +333,9 @@ class PPStream (totem.Plugin):
self.subclass_index = 0
self.ppslist = ppslist.PPSList()
+ self.current_movie = None
+ self.movie_class_path = ()
+
def load_ui (self, filename, fatal, parent, user_data):
datadir = os.path.dirname (__file__)
filename = os.path.join (datadir, filename)
@@ -1039,40 +1042,77 @@ class PPStream (totem.Plugin):
self.movies_count)
movie.model_path = treeview.get_path(it)
+ def show_files_current_page(self):
+ movie = self.current_movie
+ if self.current_treeview_name != 'files':
+ return
+
+ if movie:
+ self.set_page_max(movie.getMaxPage())
+ self.set_current_page(self.files_page + 1)
+ else:
+ self.set_page_max(1)
+ self.set_current_page(1)
+
def fill_files (self, movie):
treeview_name = 'files'
self.clear_pages (treeview_name)
treeview = self.liststore[treeview_name]
- for f in movie.getFiles(self.files_page):
- no = str(f.ci + 1) + '/' + str(movie.cn)
+ files = movie.getFiles(self.files_page)
+ num_files = len(files)
+ nr = 0
+ for f in files:
+ no = str(nr + 1) + '/' + str(num_files)
it = treeview.append ([no, f.title, self.recode_mrl (f.url), f.url])
+ nr += 1
+ self.show_files_current_page()
def show_files (self, movie):
+ if self.current_movie and self.current_movie != movie:
+ self.files_page = 0
self.current_movie = movie
if movie.getFiles(self.files_page):
self.fill_files(movie)
else:
self.clear_pages('files')
- self.fetch_files(movie)
+ self.fetch_files(movie, self.files_page)
+ self.show_files_current_page()
- def download_files (self, callback, movie, show, count):
+ def download_files (self, callback, movie, page, show, count):
thread = ProcessThread (None, self.__fetch_files,
- callback, movie, show, count)
+ callback, movie, page, show, count)
thread.start()
- def __fetch_files(self, dummy, movie, *args):
+ def __fetch_files(self, dummy, movie, page, show, count):
cls = movie.parent
assert (cls is not None)
- return self.ppslist.fetchMovie(cls, movie)
+ if not movie.baseurl:
+ return self.ppslist.fetchMovie(cls, movie)
+ return self.ppslist.fetchMoviePlayList(cls, movie, self.files_page)
- def fetch_files (self, movie, show = True):
- self.download_files (self.on_files_fetched, movie, show,
- self.movies_count)
+ def fetch_files (self, movie, page = 0, show = True):
+ self.download_files (self.on_files_fetched, movie,
+ page, show, self.movies_count)
- def on_files_fetched(self, res, movie, show, movies_count):
+ def on_files_fetched(self, res, movie, page, show, movies_count):
if res:
- files = self.ppslist.parseMovie(movie.parent, movie, res)
- movie.setFiles(files)
+ if movie.baseurl:
+ result = self.ppslist.parseMoviePlayList(movie.parent,
+ movie, res,
+ page)
+ if not result:
+ files = []
+ else:
+ files = result[0]
+ else:
+ files = self.ppslist.parseMovie(movie.parent, movie, res)
+ if not files and not movie.baseurl:
+ url = self.ppslist.parseMoviePlayListUrl(movie.parent,
+ movie, res)
+ self.download_files(self.on_files_fetched, movie,
+ page, show, movies_count)
+ else:
+ movie.setFiles(files, page)
if show:
if self.movies_count == movies_count and \
movie == self.current_movie:
@@ -1362,6 +1402,9 @@ class PPStream (totem.Plugin):
model, rows = selection.get_selected_rows ()
if not rows:
self.clear_pages ('files')
+ self.current_movie = None
+ self.files_page = 0
+ self.show_files_current_page()
return
all_files_fetched = True
@@ -1576,8 +1619,12 @@ class PPStream (totem.Plugin):
self.remove_from_favorites_button.set_sensitive (False)
if self.current_treeview_name == 'files':
self.refresh_button.set_sensitive (False)
- self.page_hbox.set_sensitive (False)
self.page_hbox.show()
+ if self.current_movie:
+ self.page_hbox.set_sensitive (True)
+ else:
+ self.page_hbox.set_sensitive (False)
+ self.show_files_current_page()
self.favorites_hbox.hide()
self.update_progress_bar ()
elif self.current_treeview_name == 'movies':
@@ -1592,6 +1639,13 @@ class PPStream (totem.Plugin):
self.favorites_hbox.show ()
self.movies_update_files_status()
self.update_progress_bar ()
+ if self.movie_class_path:
+ cls = self.get_movie_class(self.movie_class_path)
+ self.set_current_page(self.movies_page + 1)
+ self.set_page_max(cls.getMaxPage())
+ else:
+ self.set_current_page(1)
+ self.set_page_max(1)
else:
self.page_hbox.set_sensitive (False)
self.page_hbox.hide ()