diff --git a/frontend/ui/reader/readerpaging.lua b/frontend/ui/reader/readerpaging.lua index 828ab6be1..2fd6d864e 100644 --- a/frontend/ui/reader/readerpaging.lua +++ b/frontend/ui/reader/readerpaging.lua @@ -65,6 +65,14 @@ function ReaderPaging:init() self.number_of_pages = self.ui.document.info.number_of_pages end +function ReaderPaging:onReadSettings(config) + self:gotoPage(config:readSetting("last_page") or 1) +end + +function ReaderPaging:onCloseDocument() + self.ui.doc_settings:saveSetting("last_page", self.current_page) +end + -- wrapper for bounds checking function ReaderPaging:gotoPage(number) if number == self.current_page then @@ -83,10 +91,6 @@ function ReaderPaging:gotoPage(number) return true end -function ReaderPaging:onReadSettings(config) - self:gotoPage(config:readSetting("last_page") or 1) -end - function ReaderPaging:onZoomModeUpdate(new_mode) -- we need to remember zoom mode to handle page turn event self.zoom_mode = new_mode @@ -159,10 +163,6 @@ function ReaderPaging:onGotoPageRel(diff) return true end -function ReaderPaging:onCloseDocument() - self.ui.doc_settings:saveSetting("last_page", self.current_page) -end - function ReaderPaging:onTapForward() self:onGotoPageRel(1) return true diff --git a/frontend/ui/reader/readerzooming.lua b/frontend/ui/reader/readerzooming.lua index f2324d175..b7a911fbd 100644 --- a/frontend/ui/reader/readerzooming.lua +++ b/frontend/ui/reader/readerzooming.lua @@ -42,14 +42,32 @@ ReaderZooming = InputContainer:new{ }, }, zoom = 1.0, - zoom_mode = "free", + -- default to nil so we can trigger ZoomModeUpdate events on start up + zoom_mode = nil, + DEFAULT_ZOOM_MODE = "page", current_page = 1, rotation = 0 } +function ReaderZooming:onReadSettings(config) + -- @TODO config file from old code base uses globalzoom_mode + -- instead of zoom_mode, we need to handle this imcompatibility + -- 04.12 2012 (houqp) + local zoom_mode = config:readSetting("zoom_mode") + if not zoom_mode then + zoom_mode = self.DEFAULT_ZOOM_MODE + end + self:onSetZoomMode(zoom_mode) +end + +function ReaderZooming:onCloseDocument() + self.ui.doc_settings:saveSetting("zoom_mode", self.zoom_mode) +end + function ReaderZooming:onSetDimensions(dimensions) -- we were resized self.dimen = dimensions + self:setZoom() end function ReaderZooming:onRotationUpdate(rotation) @@ -57,11 +75,42 @@ function ReaderZooming:onRotationUpdate(rotation) self:setZoom() end +function ReaderZooming:onZoom(direction) + DEBUG("zoom", direction) + if direction == "in" then + self.zoom = self.zoom * 1.333333 + elseif direction == "out" then + self.zoom = self.zoom * 0.75 + end + DEBUG("zoom is now at", self.zoom) + self:onSetZoomMode("free") + self.view:onZoomUpdate(self.zoom) + return true +end + +function ReaderZooming:onSetZoomMode(new_mode) + if self.zoom_mode ~= new_mode then + DEBUG("setting zoom mode to", new_mode) + self.zoom_mode = new_mode + self:setZoom() + self.ui:handleEvent(Event:new("ZoomModeUpdate", new_mode)) + end + return true +end + +function ReaderZooming:onPageUpdate(new_page_no) + self.current_page = new_page_no + self:setZoom() +end + function ReaderZooming:setZoom() -- nothing to do in free zoom mode if self.zoom_mode == "free" then return end + if not self.dimen then + self.dimen = self.ui.dimen + end -- check if we're in bbox mode and work on bbox if that's the case local page_size = {} if self.zoom_mode == "content" @@ -98,30 +147,4 @@ function ReaderZooming:setZoom() self.view:onZoomUpdate(self.zoom) end -function ReaderZooming:onZoom(direction) - DEBUG("zoom", direction) - if direction == "in" then - self.zoom = self.zoom * 1.333333 - elseif direction == "out" then - self.zoom = self.zoom * 0.75 - end - DEBUG("zoom is now at", self.zoom) - self:onSetZoomMode("free") - self.view:onZoomUpdate(self.zoom) - return true -end - -function ReaderZooming:onSetZoomMode(new_mode) - if self.zoom_mode ~= new_mode then - DEBUG("setting zoom mode to", new_mode) - self.zoom_mode = new_mode - self:setZoom() - self.ui:handleEvent(Event:new("ZoomModeUpdate", new_mode)) - end - return true -end -function ReaderZooming:onPageUpdate(new_page_no) - self.current_page = new_page_no - self:setZoom() -end diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index fad05ace1..dc0a2c1a2 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -69,6 +69,13 @@ function ReaderUI:init() if self.document.info.has_pages then -- for page specific controller + -- if needed, insert a paging container + local pager = ReaderPaging:new{ + dialog = self.dialog, + view = self[1], + ui = self + } + table.insert(self, pager) -- zooming controller local zoomer = ReaderZooming:new{ dialog = self.dialog, @@ -83,13 +90,6 @@ function ReaderUI:init() ui = self } table.insert(self, panner) - -- if needed, insert a paging container - local pager = ReaderPaging:new{ - dialog = self.dialog, - view = self[1], - ui = self - } - table.insert(self, pager) else -- rolling controller local roller = ReaderRolling:new{