Merge pull request #760 from chrox/restore_zoom_mode

restore zoom mode when toggling reflow on/off
This commit is contained in:
{Qingping,Dave} Hou
2013-02-19 07:11:20 -08:00
5 changed files with 43 additions and 9 deletions

View File

@@ -134,7 +134,7 @@ KoptOptions = {
event = "RedrawCurrentPage",
},
{
event = "SetZoomMode",
event = "RestoreZoomMode",
args = {"page", nil},
},
}

View File

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

View File

@@ -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{
@@ -30,7 +28,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 +36,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
@@ -62,8 +65,8 @@ function ReaderCropping:onScreenOffsetUpdate(screen_offset)
end
end
function ReaderCropping:onSetZoomMode(mode)
if not self.cropping_zoommode then
function ReaderCropping:onSetZoomMode(mode, orig)
if orig ~= "cropping" and mode then
--DEBUG("backup zoom mode", mode)
self.orig_zoom_mode = mode
end

View File

@@ -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

View File

@@ -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