From daf754d0f4f6b7d030def1500b3b3d50905e9409 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sat, 6 Feb 2016 13:01:45 -0800 Subject: [PATCH 1/2] minor(readerhinting): access document directly instead of from ui --- frontend/apps/reader/modules/readerhinting.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/apps/reader/modules/readerhinting.lua b/frontend/apps/reader/modules/readerhinting.lua index c8abd2601..3da24910f 100644 --- a/frontend/apps/reader/modules/readerhinting.lua +++ b/frontend/apps/reader/modules/readerhinting.lua @@ -7,8 +7,8 @@ local ReaderHinting = EventListener:new{ function ReaderHinting:onHintPage() if not self.view.hinting then return true end for i=1, DHINTCOUNT do - if self.view.state.page + i <= self.ui.document.info.number_of_pages then - self.ui.document:hintPage( + if self.view.state.page + i <= self.document.info.number_of_pages then + self.document:hintPage( self.view.state.page + i, self.zoom:getZoom(self.view.state.page + i), self.view.state.rotation, From 2f0544b1b7b99740e4d1ede955233da06cf83d5c Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 7 Feb 2016 14:03:53 -0800 Subject: [PATCH 2/2] refactor(statistics): avoid magic 0.1 schedule with PostRender event --- frontend/apps/reader/readerui.lua | 7 +++++-- plugins/statistics.koplugin/main.lua | 13 +++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 2ace6e595..646fd8ef8 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -259,11 +259,14 @@ function ReaderUI:init() self:registerPostInitCallback(function() self.document:loadDocument() - -- read additional settings after the document has been loaded - -- (but not rendered yet) + -- used to read additional settings after the document has been + -- loaded (but not rendered yet) self:handleEvent(Event:new("PreRenderDocument", self.doc_settings)) self.document:render() + + -- CREngine only reports correct page count after rendering is done + self:handleEvent(Event:new("PostRenderDocument", self.doc_settings)) end) -- typeset controller self:registerModule("typeset", ReaderTypeset:new{ diff --git a/plugins/statistics.koplugin/main.lua b/plugins/statistics.koplugin/main.lua index 87b723f34..8be4dbb52 100755 --- a/plugins/statistics.koplugin/main.lua +++ b/plugins/statistics.koplugin/main.lua @@ -58,9 +58,7 @@ function ReaderStatistics:initData(config) if self.is_enabled then local book_properties = self:getBookProperties() self:savePropertiesInToData(book_properties) - if config.data.stats then - self.data = config.data.stats - else + if not self.data then --first time merge data self:inplaceMigration(); end @@ -490,9 +488,12 @@ function ReaderStatistics:saveSettings(fields) end function ReaderStatistics:onReadSettings(config) - -- delay initialization for accurate total pages count of the doc - UIManager:scheduleIn(0.1, function() self:initData(config) end) + self.data = config.data.stats end -return ReaderStatistics +function ReaderStatistics:onPostRenderDocument() + -- we have correct page count now, do the actual initialization work + self:initData() +end +return ReaderStatistics