mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
committed by
Frans de Jonge
parent
3de3ea04ff
commit
c8a6c144fa
@@ -10,6 +10,7 @@ local SetDefaults = require("apps/filemanager/filemanagersetdefaults")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Screen = Device.screen
|
||||
local dbg = require("dbg")
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local logger = require("logger")
|
||||
local util = require("util")
|
||||
local _ = require("gettext")
|
||||
@@ -324,7 +325,6 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
table.insert(self.menu_items.developer_options.sub_item_table, {
|
||||
text = _("Disable C blitter"),
|
||||
enabled_func = function()
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
return lfs.attributes("libs/libblitbuffer.so", "mode") == "file"
|
||||
end,
|
||||
checked_func = function()
|
||||
@@ -451,7 +451,9 @@ function FileManagerMenu:setUpdateItemTable()
|
||||
self.menu_items.restart_koreader = {
|
||||
text = _("Restart KOReader"),
|
||||
callback = function()
|
||||
self:exitOrRestart(function() UIManager:restartKOReader() end)
|
||||
self:exitOrRestart(function()
|
||||
UIManager:restartKOReader()
|
||||
end)
|
||||
end,
|
||||
}
|
||||
if not Device:canRestart() then
|
||||
@@ -487,30 +489,10 @@ dbg:guard(FileManagerMenu, 'setUpdateItemTable',
|
||||
end)
|
||||
|
||||
function FileManagerMenu:exitOrRestart(callback)
|
||||
if SetDefaults.settings_changed then
|
||||
UIManager:show(ConfirmBox:new{
|
||||
text = _("You have unsaved default settings. Save them now?\nTap \"Cancel\" to return to KOReader."),
|
||||
ok_text = _("Save"),
|
||||
ok_callback = function()
|
||||
SetDefaults.settings_changed = false
|
||||
SetDefaults:saveSettings()
|
||||
self:exitOrRestart(callback)
|
||||
end,
|
||||
cancel_text = _("Don't save"),
|
||||
cancel_callback = function()
|
||||
SetDefaults.settings_changed = false
|
||||
self:exitOrRestart(callback)
|
||||
end,
|
||||
other_buttons = {{
|
||||
text = _("Cancel"),
|
||||
}}
|
||||
})
|
||||
else
|
||||
UIManager:close(self.menu_container)
|
||||
self.ui:onClose()
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
UIManager:close(self.menu_container)
|
||||
self.ui:onClose()
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
local CenterContainer = require("ui/widget/container/centercontainer")
|
||||
local ConfirmBox = require("ui/widget/confirmbox")
|
||||
local DataStorage = require("datastorage")
|
||||
local Device = require("device")
|
||||
local Font = require("ui/font")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
@@ -10,6 +11,7 @@ local MultiInputDialog = require("ui/widget/multiinputdialog")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local dump = require("dump")
|
||||
local isAndroid, android = pcall(require, "android")
|
||||
local logger = require("logger")
|
||||
local util = require("ffi/util")
|
||||
local _ = require("gettext")
|
||||
local Screen = require("device").screen
|
||||
@@ -34,7 +36,6 @@ local SetDefaults = InputContainer:new{
|
||||
defaults_value = {},
|
||||
results = {},
|
||||
defaults_menu = {},
|
||||
initialized = false,
|
||||
changed = {},
|
||||
settings_changed = false,
|
||||
}
|
||||
@@ -56,28 +57,24 @@ end
|
||||
function SetDefaults:init()
|
||||
self.results = {}
|
||||
|
||||
if not self.initialized then
|
||||
local defaults = {}
|
||||
local load_defaults = loadfile(defaults_path)
|
||||
local defaults = {}
|
||||
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)
|
||||
load_defaults()
|
||||
end
|
||||
|
||||
local file = io.open(persistent_defaults_path, "r")
|
||||
if file ~= nil then
|
||||
file:close()
|
||||
load_defaults = loadfile(persistent_defaults_path)
|
||||
setfenv(load_defaults, defaults)
|
||||
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
|
||||
local idx = 1
|
||||
for n, v in util.orderedPairs(defaults) do
|
||||
self.defaults_name[idx] = n
|
||||
self.defaults_value[idx] = v
|
||||
idx = idx + 1
|
||||
end
|
||||
|
||||
local menu_container = CenterContainer:new{
|
||||
@@ -99,8 +96,15 @@ function SetDefaults:init()
|
||||
show_parent = menu_container,
|
||||
_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)
|
||||
self.defaults_menu.close_callback = function()
|
||||
logger.dbg("Closing defaults menu")
|
||||
self:saveBeforeExit()
|
||||
UIManager:close(menu_container)
|
||||
end
|
||||
|
||||
@@ -109,7 +113,6 @@ function SetDefaults:init()
|
||||
enabled = true,
|
||||
callback = function()
|
||||
self:close()
|
||||
UIManager:show(menu_container)
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -136,7 +139,6 @@ function SetDefaults:init()
|
||||
self.results[i].text = self:build_setting(i)
|
||||
self:close()
|
||||
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
||||
UIManager:show(menu_container)
|
||||
end
|
||||
},
|
||||
{
|
||||
@@ -150,7 +152,6 @@ function SetDefaults:init()
|
||||
self.results[i].text = self:build_setting(i)
|
||||
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
||||
self:close()
|
||||
UIManager:show(menu_container)
|
||||
end
|
||||
},
|
||||
},
|
||||
@@ -203,7 +204,6 @@ function SetDefaults:init()
|
||||
|
||||
self:close()
|
||||
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
||||
UIManager:show(menu_container)
|
||||
end,
|
||||
},
|
||||
},
|
||||
@@ -242,7 +242,6 @@ function SetDefaults:init()
|
||||
end
|
||||
self:close()
|
||||
self.defaults_menu:switchItemTable("Defaults", self.results, i)
|
||||
UIManager:show(menu_container)
|
||||
end,
|
||||
},
|
||||
},
|
||||
@@ -356,4 +355,33 @@ function SetDefaults:saveSettings()
|
||||
self.settings_changed = false
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user