ReaderZooming: Unconditionally update the configurables on SetZoomMode (#7735)

Expand #7728 to also catch SetZoomMode (mostly for Dispatcher's sake, but other things also send it).
reviewable/pr7744/r1
NiLuJe 3 years ago committed by GitHub
parent e955a28796
commit 2067a16fa1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -156,10 +156,6 @@ function ReaderCropping:setCropZoomMode(confirmed)
self:setZoomMode(zoom_mode_type
and "content"..zoom_mode_type
or self.orig_zoom_mode)
-- Update the configurable, too
self.document.configurable.zoom_mode_genus = zoom_mode_type
and 3 -- "content"
or 4 -- "page"
self.ui:handleEvent(Event:new("InitScrollPageStates"))
else
self:setZoomMode(self.orig_zoom_mode)

@ -119,14 +119,49 @@ function ReaderZooming:init()
},
}
end
-- Build the reverse zoom_mode -> genus/type mappings
self.zoom_mode_to_genus = {}
for k, v in pairs(self.zoom_mode_genus_map) do
self.zoom_mode_to_genus[v] = k
end
self.zoom_mode_to_type = {}
for k, v in pairs(self.zoom_mode_type_map) do
self.zoom_mode_to_type[v] = k
end
end
function ReaderZooming:onReadSettings(config)
-- Update the genus/type Configurables given a specific zoom_mode...
function ReaderZooming:_updateConfigurable(zoom_mode)
-- We may need to poke at the Configurable directly, because ReaderConfig is instantiated before us,
-- so simply updating the DocSetting doesn't cut it...
-- Conditional because this is an optional engine feature (only if self.document.info.configurable is true).
local configurable = self.document and self.document.configurable
-- Technically ought to be conditional,
-- because this is an optional engine feature (only if self.document.info.configurable is true).
-- But the rest of the code (as well as most other modules) assumes this is supported on all paged engines (it is).
local configurable = self.document.configurable
-- Quick'n dirty zoom_mode to genus/type conversion...
local zgenus, ztype = zoom_mode:match("^(page)(%l*)$")
if not zgenus then
zgenus, ztype = zoom_mode:match("^(content)(%l*)$")
end
if not zgenus then
zgenus = zoom_mode
end
if not ztype then
ztype = ""
end
local zoom_mode_genus = self.zoom_mode_to_genus[zgenus]
local zoom_mode_type = self.zoom_mode_to_type[ztype]
-- Configurable keys aren't prefixed, unlike the actual settings...
configurable.zoom_mode_genus = zoom_mode_genus
configurable.zoom_mode_type = zoom_mode_type
return zoom_mode_genus, zoom_mode_type
end
function ReaderZooming:onReadSettings(config)
-- If we have a composite zoom_mode stored, use that
local zoom_mode = config:readSetting("zoom_mode")
or G_reader_settings:readSetting("zoom_mode")
@ -137,38 +172,9 @@ function ReaderZooming:onReadSettings(config)
or self.DEFAULT_ZOOM_MODE
-- Make sure the split genus & type match, to have an up-to-date ConfigDialog...
local mode_to_genus = {}
for k, v in pairs(self.zoom_mode_genus_map) do
mode_to_genus[v] = k
end
local mode_to_type = {}
for k, v in pairs(self.zoom_mode_type_map) do
mode_to_type[v] = k
end
-- Quick'n dirty zoom_mode to genus/type conversion...
local zgenus, ztype = zoom_mode:match("^(page)(%l*)$")
if not zgenus then
zgenus, ztype = zoom_mode:match("^(content)(%l*)$")
end
if not zgenus then
zgenus = zoom_mode
end
if not ztype then
ztype = ""
end
local zoom_mode_genus = mode_to_genus[zgenus]
local zoom_mode_genus, zoom_mode_type = self:_updateConfigurable(zoom_mode)
config:saveSetting("kopt_zoom_mode_genus", zoom_mode_genus)
if configurable then
-- Configurable keys aren't prefixed, unlike the actual settings...
configurable.zoom_mode_genus = zoom_mode_genus
end
local zoom_mode_type = mode_to_type[ztype]
config:saveSetting("kopt_zoom_mode_type", zoom_mode_type)
if configurable then
configurable.zoom_mode_type = zoom_mode_type
end
else
-- Otherwise, build it from the split genus & type settings
local zoom_mode_genus = config:readSetting("kopt_zoom_mode_genus")
@ -193,9 +199,7 @@ function ReaderZooming:onReadSettings(config)
-- Import legacy zoom_factor settings
if config:has("zoom_factor") and config:hasNot("kopt_zoom_factor") then
config:saveSetting("kopt_zoom_factor", config:readSetting("zoom_factor"))
if configurable then
configurable.zoom_factor = config:readSetting("kopt_zoom_factor")
end
self.document.configurable.zoom_factor = config:readSetting("kopt_zoom_factor")
config:delSetting("zoom_factor")
elseif config:has("zoom_factor") and config:has("kopt_zoom_factor") then
config:delSetting("zoom_factor")
@ -392,6 +396,7 @@ function ReaderZooming:onSetZoomMode(new_mode)
logger.info("setting zoom mode to", new_mode)
self.ui:handleEvent(Event:new("ZoomModeUpdate", new_mode))
self.zoom_mode = new_mode
self:_updateConfigurable(new_mode)
self:setZoom()
if new_mode == "manual" then
self.ui:handleEvent(Event:new("SetScrollMode", false))

Loading…
Cancel
Save