mirror of https://github.com/koreader/koreader
reset configurable before loading new options
parent
5157a67ce2
commit
bd0ba69d08
@ -1,49 +1,66 @@
|
|||||||
local Configurable = {}
|
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)
|
function Configurable:hash(sep)
|
||||||
local hash = ""
|
local hash = ""
|
||||||
local excluded = {multi_threads = true,}
|
local excluded = {multi_threads = true,}
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string" then
|
||||||
and not excluded[key] then
|
hash = hash..sep..value
|
||||||
hash = hash..sep..value
|
end
|
||||||
end
|
end
|
||||||
end
|
return hash
|
||||||
return hash
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:loadDefaults(config_options)
|
function Configurable:loadDefaults(config_options)
|
||||||
for i=1,#config_options do
|
-- reset configurable before loading new options
|
||||||
local options = config_options[i].options
|
self:reset()
|
||||||
for j=1,#config_options[i].options do
|
for i=1,#config_options do
|
||||||
local key = config_options[i].options[j].name
|
local options = config_options[i].options
|
||||||
self[key] = config_options[i].options[j].default_value
|
for j=1,#config_options[i].options do
|
||||||
if not self[key] then
|
local key = config_options[i].options[j].name
|
||||||
self[key] = config_options[i].options[j].default_arg
|
self[key] = config_options[i].options[j].default_value
|
||||||
end
|
if not self[key] then
|
||||||
end
|
self[key] = config_options[i].options[j].default_arg
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:loadSettings(settings, prefix)
|
function Configurable:loadSettings(settings, prefix)
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string"
|
||||||
or type(value) == "table" then
|
or type(value) == "table" then
|
||||||
local saved_value = settings:readSetting(prefix..key)
|
local saved_value = settings:readSetting(prefix..key)
|
||||||
self[key] = (saved_value == nil) and self[key] or saved_value
|
self[key] = (saved_value == nil) and self[key] or saved_value
|
||||||
--Debug("Configurable:loadSettings", "key", key, "saved value", saved_value,"Configurable.key", self[key])
|
--Debug("Configurable:loadSettings", "key", key, "saved value",
|
||||||
end
|
--saved_value,"Configurable.key", self[key])
|
||||||
end
|
end
|
||||||
--Debug("loaded config:", dump(Configurable))
|
end
|
||||||
|
--Debug("loaded config:", dump(Configurable))
|
||||||
end
|
end
|
||||||
|
|
||||||
function Configurable:saveSettings(settings, prefix)
|
function Configurable:saveSettings(settings, prefix)
|
||||||
for key,value in pairs(self) do
|
for key,value in pairs(self) do
|
||||||
if type(value) == "number" or type(value) == "string"
|
if type(value) == "number" or type(value) == "string"
|
||||||
or type(value) == "table" then
|
or type(value) == "table" then
|
||||||
settings:saveSetting(prefix..key, value)
|
settings:saveSetting(prefix..key, value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return Configurable
|
return Configurable
|
||||||
|
Loading…
Reference in New Issue