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() 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 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 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")