mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
ReaderZooming: Fix defaults handling (#7463)
It appears the fancy split settings from #6885 were not being honored at all. Also: * Made sure "pagewidth" is actually the default zoom mode again, "full" had sneaked in as the default state of the zoom type toggle). * Display human-readable values in the "Make as default" popup, instead of the raw, meaningless numerical setting. * Disable zoom options when reflow is enabled, and restore 'em properly when it's disabled. Fix #7461, #7228, #7192
This commit is contained in:
@@ -28,6 +28,18 @@ local ReaderZooming = InputContainer:new{
|
||||
"rows",
|
||||
"manual",
|
||||
},
|
||||
zoom_mode_genus_map = {
|
||||
[4] = "page",
|
||||
[3] = "content",
|
||||
[2] = "columns",
|
||||
[1] = "rows",
|
||||
[0] = "manual",
|
||||
},
|
||||
zoom_mode_type_map = {
|
||||
[2] = "",
|
||||
[1] = "width",
|
||||
[0] = "height",
|
||||
},
|
||||
-- default to nil so we can trigger ZoomModeUpdate events on start up
|
||||
zoom_mode = nil,
|
||||
DEFAULT_ZOOM_MODE = "pagewidth",
|
||||
@@ -110,13 +122,32 @@ function ReaderZooming:init()
|
||||
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")
|
||||
or self.DEFAULT_ZOOM_MODE
|
||||
or G_reader_settings:readSetting("zoom_mode")
|
||||
-- Otherwise, build it from the split genus & type settings
|
||||
if not zoom_mode then
|
||||
local zoom_mode_genus = config:readSetting("kopt_zoom_mode_genus")
|
||||
or G_reader_settings:readSetting("kopt_zoom_mode_genus")
|
||||
local zoom_mode_type = config:readSetting("kopt_zoom_mode_type")
|
||||
or G_reader_settings:readSetting("kopt_zoom_mode_type")
|
||||
if zoom_mode_genus or zoom_mode_type then
|
||||
-- Handle defaults
|
||||
zoom_mode_genus = zoom_mode_genus or 4 -- "page"
|
||||
zoom_mode_type = zoom_mode_type or 1 -- "width"
|
||||
zoom_mode_genus = self.zoom_mode_genus_map[zoom_mode_genus]
|
||||
zoom_mode_type = self.zoom_mode_type_map[zoom_mode_type]
|
||||
zoom_mode = zoom_mode_genus .. zoom_mode_type
|
||||
end
|
||||
end
|
||||
zoom_mode = util.arrayContains(self.available_zoom_modes, zoom_mode)
|
||||
and zoom_mode
|
||||
or self.DEFAULT_ZOOM_MODE
|
||||
self:setZoomMode(zoom_mode, true) -- avoid informative message on load
|
||||
|
||||
-- Don't stomp on normal_zoom_mode in ReaderKoptListener if we're reflowed...
|
||||
local is_reflowed = config:has("kopt_text_wrap") and config:readSetting("kopt_text_wrap") == 1
|
||||
|
||||
self:setZoomMode(zoom_mode, true, is_reflowed) -- avoid informative message on load
|
||||
for _, setting in ipairs(self.zoom_pan_settings) do
|
||||
self[setting] = config:readSetting(setting)
|
||||
or G_reader_settings:readSetting(setting)
|
||||
@@ -214,18 +245,8 @@ function ReaderZooming:onDefineZoom(btn, when_applied_callback)
|
||||
})[config.zoom_direction]
|
||||
local zoom_range_number = config.zoom_range_number
|
||||
local zoom_factor = config.zoom_factor
|
||||
local zoom_mode_genus = ({
|
||||
[4] = "page",
|
||||
[3] = "content",
|
||||
[2] = "columns",
|
||||
[1] = "rows",
|
||||
[0] = "manual",
|
||||
})[config.zoom_mode_genus]
|
||||
local zoom_mode_type = ({
|
||||
[2] = "",
|
||||
[1] = "width",
|
||||
[0] = "height",
|
||||
})[config.zoom_mode_type]
|
||||
local zoom_mode_genus = self.zoom_mode_genus_map[config.zoom_mode_genus]
|
||||
local zoom_mode_type = self.zoom_mode_type_map[config.zoom_mode_type]
|
||||
settings.zoom_overlap_h = config.zoom_overlap_h
|
||||
settings.zoom_overlap_v = config.zoom_overlap_v
|
||||
if btn == "set_zoom_overlap_h" then
|
||||
@@ -491,7 +512,7 @@ function ReaderZooming:genSetZoomModeCallBack(mode)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderZooming:setZoomMode(mode, no_warning)
|
||||
function ReaderZooming:setZoomMode(mode, no_warning, is_reflowed)
|
||||
if not no_warning and self.ui.view.page_scroll then
|
||||
local message
|
||||
if self.paged_modes[mode] then
|
||||
@@ -511,7 +532,8 @@ Please enable page view instead of continuous view (scroll mode).]])
|
||||
end
|
||||
end
|
||||
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", mode))
|
||||
-- Dirty hack to prevent ReaderKoptListener from stomping on normal_zoom_mode...
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", mode, is_reflowed and "koptlistener"))
|
||||
self.ui:handleEvent(Event:new("InitScrollPageStates"))
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user