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 = {},
results = {},
defaults_menu = {},
already_read = false
already_read = false,
changed = {}
}
local function settype(b,t)
@ -111,6 +112,7 @@ function SetDefaults:init()
end
for i=1,#self.defaults_name do
self.changed[i] = false
local settings_type = type(_G[self.defaults_name[i]])
if settings_type == "boolean" then
table.insert(self.results, {
@ -134,10 +136,9 @@ function SetDefaults:init()
enabled = true,
callback = function()
self.defaults_value[i] = true
if not _G[self.defaults_name[i]] then
_G[self.defaults_name[i]] = true
settings_changed = true
end
_G[self.defaults_name[i]] = true
settings_changed = true
self.changed[i] = true
self.results[i].text = self:build_setting(i)
self:close()
self.defaults_menu:swithItemTable("Defaults", self.results, i)
@ -149,10 +150,9 @@ function SetDefaults:init()
enabled = true,
callback = function()
self.defaults_value[i] = false
if _G[self.defaults_name[i]] then
_G[self.defaults_name[i]] = false
settings_changed = true
end
_G[self.defaults_name[i]] = false
settings_changed = true
self.changed[i] = true
self.results[i].text = self:build_setting(i)
self.defaults_menu:swithItemTable("Defaults", self.results, i)
self:close()
@ -192,14 +192,13 @@ function SetDefaults:init()
enabled = true,
callback = function()
if type(_G[self.defaults_name[i]]) == "table" then
settings_changed = true
self.defaults_value[i] = self.set_dialog:getInputText()
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)
settings_changed = true
self.defaults_value[i] = _G[self.defaults_name[i]]
end
settings_changed = true
self.changed[i] = true
self.results[i].text = self:build_setting(i)
self:close()
self.defaults_menu:swithItemTable("Defaults", self.results, i)
@ -315,10 +314,14 @@ function SetDefaults:SaveSettings()
self.filldefaults()
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
for i = 1,#dpl 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)
done[j] = true
end
@ -328,7 +331,7 @@ function SetDefaults:SaveSettings()
-- handle case "exists identical in non-persistent", ignore it
for i = 1,#dl 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
end
end

Loading…
Cancel
Save