diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-22 01:25:57 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-22 01:25:57 +0800 |
commit | 637311f1be4fa50e4ca714e6a5260b6f03c150d6 (patch) | |
tree | b30a6c971e638fb7b94534a25dfcc64ec914bbff | |
parent | b7f2340e8b09d274bde12d579260ad6a612081a3 (diff) |
ppstream: files navigation works now
-rw-r--r-- | totem/plugin/ppstream.py | 82 |
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 () |