From 20894497698aa051f7e9bf7487b70d17551801a1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 11 May 2017 18:13:50 +0530 Subject: [PATCH] Update read percent on content load --- src/pyj/read_book/iframe.pyj | 14 +++++++++++--- src/pyj/read_book/view.pyj | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/pyj/read_book/iframe.pyj b/src/pyj/read_book/iframe.pyj index 611ab0c9f3..ff401b7549 100644 --- a/src/pyj/read_book/iframe.pyj +++ b/src/pyj/read_book/iframe.pyj @@ -250,9 +250,9 @@ class IframeBoss: if si: self.length_before += files[si]?.length or 0 self.onscroll() - self.send_message('content_loaded') + self.send_message('content_loaded', progress_frac=self.get_progress_frac()) - def get_progress_frac(self, current_name, spine_index): + def calculate_progress_frac(self, current_name, spine_index): files = self.book.manifest.files file_length = files[current_name]?.length or 0 if self.length_before is None: @@ -261,6 +261,14 @@ class IframeBoss: ans = (self.length_before + (file_length * frac)) / self.book.manifest.spine_length return ans + def get_progress_frac(self): + spine = self.book.manifest.spine + current_name = current_spine_item().name + index = spine.indexOf(current_name) + if index < 0: + return 0 + return self.calculate_progress_frac(current_name, index) + def update_cfi(self): cfi = at_current() if cfi: @@ -272,7 +280,7 @@ class IframeBoss: if cfi != self.last_cfi: self.last_cfi = cfi self.send_message('update_cfi', cfi=cfi, replace_history=self.replace_history_on_next_cfi_update, - progress_frac=self.get_progress_frac(current_name, index)) + progress_frac=self.calculate_progress_frac(current_name, index)) self.replace_history_on_next_cfi_update = True def update_toc_position(self): diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 9eb555e6ca..f9d555b5ee 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -452,8 +452,10 @@ class View: ) self.encrypted_communications = True - def on_content_loaded(self): + def on_content_loaded(self, data): self.hide_loading() + frac = data.progress_frac or 0 + self.update_read_percent(frac) # self.overlay.show() def update_font_size(self):