You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koreader/frontend/ui/data/settings_migration.lua

41 lines
1.5 KiB
Lua

--[[
Centralizes migration concerns for LuaSettings & DocSettings
--]]
local DocSettings = require("docsettings")
local LuaSettings = require("luasettings")
local logger = require("logger")
local SettingsMigration = {}
-- Shockingly, handles settings migration
-- NOTE: supports LuaSettings & DocSettings objects as input, as both implement the same API
function SettingsMigration:migrateSettings(config)
-- Figure out what kind of object we were passed, to make the logging more precise
local cfg_mt_idx = getmetatable(config).__index
local cfg_class
if cfg_mt_idx == DocSettings then
cfg_class = "book"
elseif cfg_mt_idx == LuaSettings then
cfg_class = "global"
else
-- Input object isn't a supported *Settings class, warn & abort instead of going kablooey.
logger.warn("Passed an unsupported object class to SettingsMigration!")
return
end
-- Fine-grained CRe margins (#4945)
local old_margins = config:readSetting("copt_page_margins")
if old_margins then
logger.info("Migrating old", cfg_class, "CRe margin settings: L", old_margins[1], "T", old_margins[2], "R", old_margins[3], "B", old_margins[4])
-- Format was: {left, top, right, bottom}
config:saveSetting("copt_h_page_margins", {old_margins[1], old_margins[3]})
config:saveSetting("copt_t_page_margin", old_margins[2])
config:saveSetting("copt_b_page_margin", old_margins[4])
-- Wipe it
config:delSetting("copt_page_margins")
end
end
return SettingsMigration