From 0e122b12bf25b8da0dd93f9d870675112f760d2c Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 27 Jun 2012 00:59:22 +0800 Subject: [PATCH 1/4] read settings after readerui widgets initialization --- frontend/ui/readerui.lua | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 1e1e6dc24..fad05ace1 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -42,7 +42,6 @@ function ReaderUI:init() end self.doc_settings = DocSettings:open(self.document.file) - DEBUG(self.doc_settings) -- a view container (so it must be child #1!) self[1] = ReaderView:new{ @@ -91,10 +90,6 @@ function ReaderUI:init() ui = self } table.insert(self, pager) - if not self.start_pos then - self.start_pos = 1 - end - pager:gotoPage(self.start_pos) else -- rolling controller local roller = ReaderRolling:new{ @@ -103,10 +98,10 @@ function ReaderUI:init() ui = self } table.insert(self, roller) - if not self.start_pos then - self.start_pos = 0 - end - roller:gotoPercent(self.start_pos) + --if not self.start_pos then + --self.start_pos = 0 + --end + --roller:gotoPercent(self.start_pos) -- font menu local font_menu = ReaderFont:new{ dialog = self.dialog, @@ -115,6 +110,9 @@ function ReaderUI:init() } table.insert(self, font_menu) end + --DEBUG(self.doc_settings) + -- we only read settings after all the widgets are initialized + self:handleEvent(Event:new("ReadSettings", self.doc_settings)) -- notify childs of dimensions self:handleEvent(Event:new("SetDimensions", self.dimen)) end From 59592e862eb6bc818f32eff33ca3cecd8ff6f5c8 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 27 Jun 2012 00:59:47 +0800 Subject: [PATCH 2/4] read font settings on readsettings event --- frontend/ui/reader/readerfont.lua | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 23e5f02b4..51fa71744 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -26,21 +26,24 @@ ReaderFont = InputContainer:new{ } function ReaderFont:init() - self.font_face = self.ui.doc_settings:readSetting("font_face") - if not self.font_face then - self.font_face = self.ui.document:getFontFace() - end - - self.font_size = self.ui.doc_settings:readSetting("font_size") - if not self.font_size then - self.font_size = self.ui.document:getFontSize() - end end function ReaderFont:onSetDimensions(dimen) self.dimen = dimen end +function ReaderFont:onReadSettings(config) + self.font_face = config:readSetting("font_face") + if not self.font_face then + self.font_face = self.ui.document:getFontFace() + end + + self.font_size = config:readSetting("font_size") + if not self.font_size then + self.font_size = self.ui.document:getFontSize() + end +end + function ReaderFont:onShowFontMenu() -- build menu item_table local face_list = cre.getFontFaces() From 1c216b64582549fe44abe66fb514ca84a7c003a3 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 27 Jun 2012 01:00:21 +0800 Subject: [PATCH 3/4] add last read page/percent setting support --- frontend/ui/reader/readerpaging.lua | 9 +++++++++ frontend/ui/reader/readerrolling.lua | 17 +++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/ui/reader/readerpaging.lua b/frontend/ui/reader/readerpaging.lua index 0549542b8..9d93ed606 100644 --- a/frontend/ui/reader/readerpaging.lua +++ b/frontend/ui/reader/readerpaging.lua @@ -29,6 +29,7 @@ function ReaderPaging:gotoPage(number) end if number > self.number_of_pages or number < 1 then + DEBUG("wrong page number: "..number.."!") return false end DEBUG("going to page number", number) @@ -39,6 +40,10 @@ function ReaderPaging:gotoPage(number) return true end +function ReaderPaging:onReadSettings(config) + self:gotoPage(config:readSetting("last_page") or 1) +end + function ReaderPaging:onPageUpdate(new_page_no) self.current_page = new_page_no end @@ -59,3 +64,7 @@ function ReaderPaging:onGotoPageRel(diff) self:gotoPage(self.current_page + diff) return true end + +function ReaderPaging:onCloseDocument() + self.ui.doc_settings:saveSetting("last_page", self.current_page) +end diff --git a/frontend/ui/reader/readerrolling.lua b/frontend/ui/reader/readerrolling.lua index 9784d7317..648766abf 100644 --- a/frontend/ui/reader/readerrolling.lua +++ b/frontend/ui/reader/readerrolling.lua @@ -31,10 +31,6 @@ function ReaderRolling:init() self.old_doc_height = self.doc_height end -function ReaderRolling:onPosUpdate(new_pos) - self.current_pos = new_pos -end - function ReaderRolling:gotoPos(new_pos) if new_pos == self.current_pos then return end if new_pos < 0 then new_pos = 0 end @@ -46,6 +42,14 @@ function ReaderRolling:gotoPercent(new_percent) self:gotoPos(new_percent * self.doc_height / 10000) end +function ReaderRolling:onReadSettings(config) + self:gotoPercent(config:readSetting("last_percent") or 0) +end + +function ReaderRolling:onPosUpdate(new_pos) + self.current_pos = new_pos +end + -- remember to signal this event the document has been zoomed, -- font has been changed, or line height has been changed. function ReaderRolling:onUpdatePos() @@ -84,3 +88,8 @@ function ReaderRolling:onZoom() --@TODO re-read doc_height info after font or lineheight changes 05.06 2012 (houqp) self:onUpdatePos() end + +function ReaderRolling:onCloseDocument() + self.ui.doc_settings:saveSetting("last_percent", + 10000 * self.current_pos / self.doc_height) +end From ac385783edc1ac2c27d0b1fb1a88b1f870dfb9f5 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 27 Jun 2012 16:26:06 +0800 Subject: [PATCH 4/4] remove menu item shortcut for k4 --- reader.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/reader.lua b/reader.lua index c641d6e75..f0f17c16d 100755 --- a/reader.lua +++ b/reader.lua @@ -8,7 +8,6 @@ require "ui/infomessage" require "document/document" require "alt_getopt" - function showReader(file, pass) local document = DocumentRegistry:openDocument(file) if not document then @@ -105,6 +104,12 @@ if optarg["G"] ~= nil then globalgamma = optarg["G"] end + +if Device.isKindle4() then + -- remove menu item shortcut for K4 + Menu.is_enable_shortcut = false +end + -- set up reader's setting: font G_reader_settings = DocSettings:open(".reader") fontmap = G_reader_settings:readSetting("fontmap")