Just save settings that really were changed

And not also settings that are different from the ones loaded.
This prevents Koreader from overwriting your complete persistent.defaults.settings when you started Koreader with a malformated persistent.defaults.settings file and choose "save settings". In such a malformated case you just can edit the damaged setting and save it back (although you can't see which one is damaged since the defaults settings are taken)
pull/819/head
WS64 10 years ago
parent d5b35e8547
commit f99f18ee13

@ -14,7 +14,8 @@ local SetDefaults = InputContainer:new{
defaults_value = {}, defaults_value = {},
results = {}, results = {},
defaults_menu = {}, defaults_menu = {},
already_read = false already_read = false,
changed = {}
} }
local function settype(b,t) local function settype(b,t)
@ -111,6 +112,7 @@ function SetDefaults:init()
end end
for i=1,#self.defaults_name do for i=1,#self.defaults_name do
self.changed[i] = false
local settings_type = type(_G[self.defaults_name[i]]) local settings_type = type(_G[self.defaults_name[i]])
if settings_type == "boolean" then if settings_type == "boolean" then
table.insert(self.results, { table.insert(self.results, {
@ -134,10 +136,9 @@ function SetDefaults:init()
enabled = true, enabled = true,
callback = function() callback = function()
self.defaults_value[i] = true self.defaults_value[i] = true
if not _G[self.defaults_name[i]] then _G[self.defaults_name[i]] = true
_G[self.defaults_name[i]] = true settings_changed = true
settings_changed = true self.changed[i] = true
end
self.results[i].text = self:build_setting(i) self.results[i].text = self:build_setting(i)
self:close() self:close()
self.defaults_menu:swithItemTable("Defaults", self.results, i) self.defaults_menu:swithItemTable("Defaults", self.results, i)
@ -149,10 +150,9 @@ function SetDefaults:init()
enabled = true, enabled = true,
callback = function() callback = function()
self.defaults_value[i] = false self.defaults_value[i] = false
if _G[self.defaults_name[i]] then _G[self.defaults_name[i]] = false
_G[self.defaults_name[i]] = false settings_changed = true
settings_changed = true self.changed[i] = true
end
self.results[i].text = self:build_setting(i) self.results[i].text = self:build_setting(i)
self.defaults_menu:swithItemTable("Defaults", self.results, i) self.defaults_menu:swithItemTable("Defaults", self.results, i)
self:close() self:close()
@ -192,14 +192,13 @@ function SetDefaults:init()
enabled = true, enabled = true,
callback = function() callback = function()
if type(_G[self.defaults_name[i]]) == "table" then if type(_G[self.defaults_name[i]]) == "table" then
settings_changed = true
self.defaults_value[i] = self.set_dialog:getInputText() self.defaults_value[i] = self.set_dialog:getInputText()
elseif _G[self.defaults_name[i]] ~= settype(self.set_dialog:getInputText(),settings_type) then elseif _G[self.defaults_name[i]] ~= settype(self.set_dialog:getInputText(),settings_type) then
_G[self.defaults_name[i]] = settype(self.set_dialog:getInputText(),settings_type) _G[self.defaults_name[i]] = settype(self.set_dialog:getInputText(),settings_type)
settings_changed = true
self.defaults_value[i] = _G[self.defaults_name[i]] self.defaults_value[i] = _G[self.defaults_name[i]]
end end
settings_changed = true
self.changed[i] = true
self.results[i].text = self:build_setting(i) self.results[i].text = self:build_setting(i)
self:close() self:close()
self.defaults_menu:swithItemTable("Defaults", self.results, i) self.defaults_menu:swithItemTable("Defaults", self.results, i)
@ -315,10 +314,14 @@ function SetDefaults:SaveSettings()
self.filldefaults() self.filldefaults()
local done = {} local done = {}
for j=1,#SetDefaults.defaults_name do
if not self.changed[j] then done[j] = true end
end
-- handle case "found in persistent", replace it -- handle case "found in persistent", replace it
for i = 1,#dpl do for i = 1,#dpl do
for j=1,#SetDefaults.defaults_name do for j=1,#SetDefaults.defaults_name do
if string.find(dpl[i],SetDefaults.defaults_name[j] .. " ") == 1 then if not done[j] and string.find(dpl[i],SetDefaults.defaults_name[j] .. " ") == 1 then
dpl[i] = self:build_setting(j) dpl[i] = self:build_setting(j)
done[j] = true done[j] = true
end end
@ -328,7 +331,7 @@ function SetDefaults:SaveSettings()
-- handle case "exists identical in non-persistent", ignore it -- handle case "exists identical in non-persistent", ignore it
for i = 1,#dl do for i = 1,#dl do
for j=1,#SetDefaults.defaults_name do for j=1,#SetDefaults.defaults_name do
if dl[i]:gsub("1/4","0.25"):gsub("2/4","0.5"):gsub("3/4","0.75"):gsub("4/4","1"):gsub("1/8","0.125"):gsub("2/8","0.25"):gsub("3/8","0.375"):gsub("4/8","0.5"):gsub("5/8","0.625"):gsub("6/8","0.75"):gsub("7/8","0.875"):gsub("8/8","1"):gsub("1/16","0.0625"):gsub("15/16","0.9375"):gsub("1024[*]1024[*]10","10485760"):gsub("1024[*]1024[*]30","31457280"):gsub("[.]0$",""):gsub("([.][0-9]+)0","%1") == self:build_setting(j) then if not done[j] and dl[i]:gsub("1/4","0.25"):gsub("2/4","0.5"):gsub("3/4","0.75"):gsub("4/4","1"):gsub("1/8","0.125"):gsub("2/8","0.25"):gsub("3/8","0.375"):gsub("4/8","0.5"):gsub("5/8","0.625"):gsub("6/8","0.75"):gsub("7/8","0.875"):gsub("8/8","1"):gsub("1/16","0.0625"):gsub("15/16","0.9375"):gsub("1024[*]1024[*]10","10485760"):gsub("1024[*]1024[*]30","31457280"):gsub("[.]0$",""):gsub("([.][0-9]+)0","%1") == self:build_setting(j) then
done[j] = true done[j] = true
end end
end end

Loading…
Cancel
Save