[UX] Implement back_to_exit option (#3838)

Also goes back to File Manager as default view first.
pull/3852/head
onde2rock 6 years ago committed by Frans de Jonge
parent ab712f1a29
commit 5aacc761e1

@ -363,16 +363,31 @@ function FileManager:init()
if Device:hasKeys() then
self.key_events.Home = { {"Home"}, doc = "go home" }
if not Device:isSDL() then
--if not in the desktop emulator
--remove the old Back key to exit koreader
self.file_chooser.key_events.Close = nil
end
--Override the menu.lua way of handling the back key
self.file_chooser.key_events.Back = { {"Back"}, doc = "go back" }
end
self:handleEvent(Event:new("SetDimensions", self.dimen))
end
function FileChooser:onBack()
local back_to_exit = G_reader_settings:readSetting("back_to_exit") or "prompt"
if back_to_exit == "always" then
return self:onClose()
elseif back_to_exit == "disable" then
return true
elseif back_to_exit == "prompt" then
UIManager:show(ConfirmBox:new{
text = _("Exit KOReader?"),
ok_text = _("Exit"),
ok_callback = function()
self:onClose()
end
})
return true
end
end
function FileManager:tapPlus()
local buttons = {
{

@ -3,6 +3,7 @@ local Event = require("ui/event")
local EventListener = require("ui/widget/eventlistener")
local logger = require("logger")
local util = require("util")
local _ = require("gettext")
local ReaderBack = EventListener:new{
location_stack = {},
@ -74,7 +75,7 @@ function ReaderBack:onBack()
end
else
logger.dbg("[ReaderBack] no location history, closing")
self.ui:handleEvent(Event:new("Close"))
self.ui:handleEvent(Event:new("Home"))
end
end

@ -634,7 +634,9 @@ function ReaderUI:dealWithLoadDocumentFailure()
end
function ReaderUI:onHome()
return self:showFileManager()
self:onClose()
self:showFileManager()
return true
end
return ReaderUI

@ -125,6 +125,48 @@ if Device:isAndroid() then
table.insert(common_settings.screen.sub_item_table, require("ui/elements/screen_fullscreen_menu_table"))
end
if Device:hasKeys() then
common_settings.navigation = {
text = _("Navigation"),
sub_item_table = {
{
text = _("Back key to exit KOReader"),
sub_item_table = {
{
text = _("Prompt"),
checked_func = function()
local setting = G_reader_settings:readSetting("back_to_exit")
return setting == "prompt" or setting == nil
end,
callback = function()
G_reader_settings:saveSetting("back_to_exit", "prompt")
end,
},
{
text = _("Always"),
checked_func = function()
return G_reader_settings:readSetting("back_to_exit")
== "always"
end,
callback = function()
G_reader_settings:saveSetting("back_to_exit", "always")
end,
},
{
text = _("Disable"),
checked_func = function()
return G_reader_settings:readSetting("back_to_exit")
== "disable"
end,
callback = function()
G_reader_settings:saveSetting("back_to_exit", "disable")
end,
},
},
},
}
}
end
common_settings.document = {
text = _("Document"),
sub_item_table = {

@ -27,6 +27,7 @@ local order = {
"screen",
"screensaver",
"document",
"navigation",
"----------------------------",
"language",
"time",

@ -43,6 +43,7 @@ local order = {
"screen",
"screensaver",
"document",
"navigation",
"----------------------------",
"language",
"time",

Loading…
Cancel
Save