|
|
@ -1,6 +1,7 @@
|
|
|
|
local CenterContainer = require("ui/widget/container/centercontainer")
|
|
|
|
local CenterContainer = require("ui/widget/container/centercontainer")
|
|
|
|
local ConfirmBox = require("ui/widget/confirmbox")
|
|
|
|
local ConfirmBox = require("ui/widget/confirmbox")
|
|
|
|
local DataStorage = require("datastorage")
|
|
|
|
local DataStorage = require("datastorage")
|
|
|
|
|
|
|
|
local Device = require("device")
|
|
|
|
local Font = require("ui/font")
|
|
|
|
local Font = require("ui/font")
|
|
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
|
|
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
|
|
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
|
@ -10,6 +11,7 @@ local MultiInputDialog = require("ui/widget/multiinputdialog")
|
|
|
|
local UIManager = require("ui/uimanager")
|
|
|
|
local UIManager = require("ui/uimanager")
|
|
|
|
local dump = require("dump")
|
|
|
|
local dump = require("dump")
|
|
|
|
local isAndroid, android = pcall(require, "android")
|
|
|
|
local isAndroid, android = pcall(require, "android")
|
|
|
|
|
|
|
|
local logger = require("logger")
|
|
|
|
local util = require("ffi/util")
|
|
|
|
local util = require("ffi/util")
|
|
|
|
local _ = require("gettext")
|
|
|
|
local _ = require("gettext")
|
|
|
|
local Screen = require("device").screen
|
|
|
|
local Screen = require("device").screen
|
|
|
@ -34,7 +36,6 @@ local SetDefaults = InputContainer:new{
|
|
|
|
defaults_value = {},
|
|
|
|
defaults_value = {},
|
|
|
|
results = {},
|
|
|
|
results = {},
|
|
|
|
defaults_menu = {},
|
|
|
|
defaults_menu = {},
|
|
|
|
initialized = false,
|
|
|
|
|
|
|
|
changed = {},
|
|
|
|
changed = {},
|
|
|
|
settings_changed = false,
|
|
|
|
settings_changed = false,
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -56,28 +57,24 @@ end
|
|
|
|
function SetDefaults:init()
|
|
|
|
function SetDefaults:init()
|
|
|
|
self.results = {}
|
|
|
|
self.results = {}
|
|
|
|
|
|
|
|
|
|
|
|
if not self.initialized then
|
|
|
|
local defaults = {}
|
|
|
|
local defaults = {}
|
|
|
|
local load_defaults = loadfile(defaults_path)
|
|
|
|
local load_defaults = loadfile(defaults_path)
|
|
|
|
setfenv(load_defaults, defaults)
|
|
|
|
|
|
|
|
load_defaults()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local file = io.open(persistent_defaults_path, "r")
|
|
|
|
|
|
|
|
if file ~= nil then
|
|
|
|
|
|
|
|
file:close()
|
|
|
|
|
|
|
|
load_defaults = loadfile(persistent_defaults_path)
|
|
|
|
setfenv(load_defaults, defaults)
|
|
|
|
setfenv(load_defaults, defaults)
|
|
|
|
load_defaults()
|
|
|
|
load_defaults()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
local file = io.open(persistent_defaults_path, "r")
|
|
|
|
local idx = 1
|
|
|
|
if file ~= nil then
|
|
|
|
for n, v in util.orderedPairs(defaults) do
|
|
|
|
file:close()
|
|
|
|
self.defaults_name[idx] = n
|
|
|
|
load_defaults = loadfile(persistent_defaults_path)
|
|
|
|
self.defaults_value[idx] = v
|
|
|
|
setfenv(load_defaults, defaults)
|
|
|
|
idx = idx + 1
|
|
|
|
load_defaults()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local i = 1
|
|
|
|
|
|
|
|
for n, v in util.orderedPairs(defaults) do
|
|
|
|
|
|
|
|
self.defaults_name[i] = n
|
|
|
|
|
|
|
|
self.defaults_value[i] = v
|
|
|
|
|
|
|
|
i = i + 1
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.initialized = true
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
local menu_container = CenterContainer:new{
|
|
|
|
local menu_container = CenterContainer:new{
|
|
|
@ -99,8 +96,15 @@ function SetDefaults:init()
|
|
|
|
show_parent = menu_container,
|
|
|
|
show_parent = menu_container,
|
|
|
|
_manager = self,
|
|
|
|
_manager = self,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
-- Prevent menu from closing when editing a value
|
|
|
|
|
|
|
|
function self.defaults_menu:onMenuSelect(item)
|
|
|
|
|
|
|
|
item.callback()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
table.insert(menu_container, self.defaults_menu)
|
|
|
|
table.insert(menu_container, self.defaults_menu)
|
|
|
|
self.defaults_menu.close_callback = function()
|
|
|
|
self.defaults_menu.close_callback = function()
|
|
|
|
|
|
|
|
logger.dbg("Closing defaults menu")
|
|
|
|
|
|
|
|
self:saveBeforeExit()
|
|
|
|
UIManager:close(menu_container)
|
|
|
|
UIManager:close(menu_container)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -109,7 +113,6 @@ function SetDefaults:init()
|
|
|
|
enabled = true,
|
|
|
|
enabled = true,
|
|
|
|
callback = function()
|
|
|
|
callback = function()
|
|
|
|
self:close()
|
|
|
|
self:close()
|
|
|
|
UIManager:show(menu_container)
|
|
|
|
|
|
|
|
end,
|
|
|
|
end,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -136,7 +139,6 @@ function SetDefaults:init()
|
|
|
|
self.results[i].text = self:build_setting(i)
|
|
|
|
self.results[i].text = self:build_setting(i)
|
|
|
|
self:close()
|
|
|
|
self:close()
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
UIManager:show(menu_container)
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -150,7 +152,6 @@ function SetDefaults:init()
|
|
|
|
self.results[i].text = self:build_setting(i)
|
|
|
|
self.results[i].text = self:build_setting(i)
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
self:close()
|
|
|
|
self:close()
|
|
|
|
UIManager:show(menu_container)
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -203,7 +204,6 @@ function SetDefaults:init()
|
|
|
|
|
|
|
|
|
|
|
|
self:close()
|
|
|
|
self:close()
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
UIManager:show(menu_container)
|
|
|
|
|
|
|
|
end,
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -242,7 +242,6 @@ function SetDefaults:init()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
self:close()
|
|
|
|
self:close()
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
|
|
|
UIManager:show(menu_container)
|
|
|
|
|
|
|
|
end,
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -356,4 +355,33 @@ function SetDefaults:saveSettings()
|
|
|
|
self.settings_changed = false
|
|
|
|
self.settings_changed = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function SetDefaults:saveBeforeExit(callback)
|
|
|
|
|
|
|
|
local save_text = _("Save and quit")
|
|
|
|
|
|
|
|
if Device:canRestart() then
|
|
|
|
|
|
|
|
save_text = _("Save and restart")
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
if self.settings_changed then
|
|
|
|
|
|
|
|
UIManager:show(ConfirmBox:new{
|
|
|
|
|
|
|
|
text = _("KOReader needs to be restarted to apply the new default settings."),
|
|
|
|
|
|
|
|
ok_text = save_text,
|
|
|
|
|
|
|
|
ok_callback = function()
|
|
|
|
|
|
|
|
self.settings_changed = false
|
|
|
|
|
|
|
|
self:saveSettings()
|
|
|
|
|
|
|
|
if Device:canRestart() then
|
|
|
|
|
|
|
|
UIManager:restartKOReader()
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
UIManager:quit()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
cancel_text = _("Discard changes"),
|
|
|
|
|
|
|
|
cancel_callback = function()
|
|
|
|
|
|
|
|
logger.info("discard defaults")
|
|
|
|
|
|
|
|
pcall(dofile, defaults_path)
|
|
|
|
|
|
|
|
pcall(dofile, persistent_defaults_path)
|
|
|
|
|
|
|
|
self.settings_changed = false
|
|
|
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
return SetDefaults
|
|
|
|
return SetDefaults
|
|
|
|