From f4614db988b031d51ed60813cea738988a3e26e0 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 19 Feb 2013 15:03:44 +0800 Subject: [PATCH 1/4] set zoom mode to content after manual cropping --- frontend/ui/bbox.lua | 2 +- frontend/ui/reader/readercropping.lua | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/frontend/ui/bbox.lua b/frontend/ui/bbox.lua index e38d0f669..0cfd7bd07 100644 --- a/frontend/ui/bbox.lua +++ b/frontend/ui/bbox.lua @@ -131,7 +131,7 @@ function BBoxWidget:onConfirmCrop() self.ui:handleEvent(Event:new("BBoxUpdate"), self.page_bbox) self.document.bbox[self.pageno] = self.page_bbox self.document.bbox[math.oddEven(self.pageno)] = self.page_bbox - self.ui:handleEvent(Event:new("ExitPageCrop")) + self.ui:handleEvent(Event:new("ExitPageCrop", true)) end function BBoxWidget:onCancelCrop() diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index 3a74cdecf..b30b263cb 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -30,7 +30,7 @@ function ReaderCropping:onPageCrop(mode) return true end -function ReaderCropping:onExitPageCrop() +function ReaderCropping:onExitPageCrop(confirmed) self.document.configurable.text_wrap = self.orig_reflow_mode self.view:recalculate() -- Exiting should have the same look and feel with entering. @@ -38,7 +38,12 @@ function ReaderCropping:onExitPageCrop() self.document.configurable.text_wrap = 1 self.view:recalculate() else - self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode)) + if confirmed then + -- if original zoom mode is not "content", set zoom mode to "content" + self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode:find("content") and self.orig_zoom_mode or "content")) + else + self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode)) + end end UIManager.repaint_all = true return true @@ -63,8 +68,8 @@ function ReaderCropping:onScreenOffsetUpdate(screen_offset) end function ReaderCropping:onSetZoomMode(mode) - if not self.cropping_zoommode then - --DEBUG("backup zoom mode", mode) + if not self.cropping_zoommode and mode then + DEBUG("backup zoom mode", mode) self.orig_zoom_mode = mode end end From 25d8d24775fd63737c78a9b68045d5c27c56eca2 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 19 Feb 2013 15:05:35 +0800 Subject: [PATCH 2/4] cleanup: remove debug info --- frontend/ui/reader/readercropping.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index b30b263cb..df32b7272 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -69,7 +69,7 @@ end function ReaderCropping:onSetZoomMode(mode) if not self.cropping_zoommode and mode then - DEBUG("backup zoom mode", mode) + --DEBUG("backup zoom mode", mode) self.orig_zoom_mode = mode end end From 666bb3d8aea225a31045ba89b5ac15c37927e8ba Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 19 Feb 2013 19:16:42 +0800 Subject: [PATCH 3/4] restore zoom mode when toggling reflow on/off --- frontend/document/koptinterface.lua | 2 +- frontend/ui/reader/readerkopt.lua | 22 ++++++++++++++++++++++ frontend/ui/readerui.lua | 9 +++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 frontend/ui/reader/readerkopt.lua diff --git a/frontend/document/koptinterface.lua b/frontend/document/koptinterface.lua index 8200a08b0..b659b70b9 100644 --- a/frontend/document/koptinterface.lua +++ b/frontend/document/koptinterface.lua @@ -134,7 +134,7 @@ KoptOptions = { event = "RedrawCurrentPage", }, { - event = "SetZoomMode", + event = "RestoreZoomMode", args = {"page", nil}, }, } diff --git a/frontend/ui/reader/readerkopt.lua b/frontend/ui/reader/readerkopt.lua new file mode 100644 index 000000000..a2e81f456 --- /dev/null +++ b/frontend/ui/reader/readerkopt.lua @@ -0,0 +1,22 @@ + +ReaderKoptinterface = InputContainer:new{} + +function ReaderKoptinterface:onReadSettings(config) + self.normal_zoom_mode = config:readSetting("zoom_mode") or "page" + if self.document.configurable.text_wrap == 1 then + self.ui:handleEvent(Event:new("SetZoomMode", "page", "koptinterface")) + else + self.ui:handleEvent(Event:new("SetZoomMode", self.normal_zoom_mode, "koptinterface")) + end +end + +function ReaderKoptinterface:onRestoreZoomMode(zoom_mode) + self.ui:handleEvent(Event:new("SetZoomMode", zoom_mode or self.normal_zoom_mode, "koptinterface")) + return true +end + +function ReaderKoptinterface:onSetZoomMode(zoom_mode, orig) + if orig ~= "koptinterface" then + self.normal_zoom_mode = zoom_mode + end +end diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 52177e84e..c92edae01 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -12,6 +12,7 @@ require "ui/reader/readertypeset" require "ui/reader/readermenu" require "ui/reader/readerconfig" require "ui/reader/readercropping" +require "ui/reader/readerkopt" --[[ This is an abstraction for a reader interface @@ -158,6 +159,14 @@ function ReaderUI:init() ui = self } table.insert(self, config_dialog) + -- koptinterface controller + local koptinterface = ReaderKoptinterface:new{ + dialog = self.dialog, + view = self[1], + ui = self, + document = self.document, + } + table.insert(self, koptinterface) end --DEBUG(self.doc_settings) -- we only read settings after all the widgets are initialized From a962f494860455ba7aeb0fb45f80d9778e88506b Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 19 Feb 2013 19:37:02 +0800 Subject: [PATCH 4/4] cleanup: use additional param in favor of flag variable --- frontend/ui/reader/readercropping.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index df32b7272..734052f3c 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -6,7 +6,6 @@ function ReaderCropping:onPageCrop(mode) if mode == "auto" then return end self.orig_reflow_mode = self.document.configurable.text_wrap self.ui:handleEvent(Event:new("CloseConfig")) - self.cropping_zoommode = true self.cropping_offset = true if self.orig_reflow_mode == 1 then self.document.configurable.text_wrap = 0 @@ -14,9 +13,8 @@ function ReaderCropping:onPageCrop(mode) -- mode, just force readerview to recalculate visible_area self.view:recalculate() else - self.ui:handleEvent(Event:new("SetZoomMode", "page")) + self.ui:handleEvent(Event:new("SetZoomMode", "page", "cropping")) end - self.cropping_zoommode = false local ubbox = self.document:getPageBBox(self.current_page) --DEBUG("used page bbox", ubbox) self.crop_bbox = BBoxWidget:new{ @@ -67,8 +65,8 @@ function ReaderCropping:onScreenOffsetUpdate(screen_offset) end end -function ReaderCropping:onSetZoomMode(mode) - if not self.cropping_zoommode and mode then +function ReaderCropping:onSetZoomMode(mode, orig) + if orig ~= "cropping" and mode then --DEBUG("backup zoom mode", mode) self.orig_zoom_mode = mode end