2
0
mirror of https://github.com/koreader/koreader synced 2024-11-10 01:10:34 +00:00
koreader/frontend/configurable.lua
2016-02-09 23:01:52 -08:00

68 lines
1.9 KiB
Lua

local Configurable = {}
function Configurable:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function Configurable:reset()
for key,value in pairs(self) do
if type(value) == "number" or type(value) == "string" then
self[key] = nil
end
end
end
function Configurable:hash(sep)
local hash = ""
for key,value in pairs(self) do
if type(value) == "number" or type(value) == "string" then
hash = hash..sep..value
end
end
return hash
end
function Configurable:loadDefaults(config_options)
-- reset configurable before loading new options
self:reset()
for i=1,#config_options do
local options = config_options[i].options
for j=1,#options do
local key = options[j].name
local settings_key = config_options.prefix.."_"..key
local default = G_reader_settings:readSetting(settings_key)
self[key] = default or options[j].default_value
if not self[key] then
self[key] = options[j].default_arg
end
end
end
end
function Configurable:loadSettings(settings, prefix)
for key,value in pairs(self) do
if type(value) == "number" or type(value) == "string"
or type(value) == "table" then
local saved_value = settings:readSetting(prefix..key)
self[key] = (saved_value == nil) and self[key] or saved_value
--Debug("Configurable:loadSettings", "key", key, "saved value",
--saved_value,"Configurable.key", self[key])
end
end
--Debug("loaded config:", dump(Configurable))
end
function Configurable:saveSettings(settings, prefix)
for key,value in pairs(self) do
if type(value) == "number" or type(value) == "string"
or type(value) == "table" then
settings:saveSetting(prefix..key, value)
end
end
end
return Configurable