Reader menu: adds "Open previous document" (#4056)

* Reader menu: adds "Open previous document"

Allows for quick switching between 2 documents, and keep
symmetry with FileManager menu "Open last document".

* Use "Last:" and "Previous:" when Show filename
pull/4061/head
poire-z 6 years ago committed by Frans de Jonge
parent 7175d86d76
commit 8b3432ae76

@ -238,7 +238,7 @@ function FileManagerMenu:setUpdateItemTable()
end
local last_file = G_reader_settings:readSetting("lastfile")
local path, file_name = util.splitFilePathName(last_file); -- luacheck: no unused
return T(_("Open last document: %1"), file_name)
return T(_("Last: %1"), file_name)
end,
enabled_func = function()
return G_reader_settings:readSetting("lastfile") ~= nil

@ -1,4 +1,5 @@
local CenterContainer = require("ui/widget/container/centercontainer")
local ConfirmBox = require("ui/widget/confirmbox")
local Device = require("device")
local Event = require("ui/event")
local InputContainer = require("ui/widget/container/inputcontainer")
@ -6,8 +7,10 @@ local Screensaver = require("ui/screensaver")
local UIManager = require("ui/uimanager")
local logger = require("logger")
local dbg = require("dbg")
local util = require("util")
local Screen = Device.screen
local _ = require("gettext")
local T = require("ffi/util").template
local ReaderMenu = InputContainer:new{
tab_item_table = nil,
@ -177,6 +180,39 @@ function ReaderMenu:setUpdateItemTable()
end,
}
local previous_file
local readhistory = require("readhistory")
for i=2, #readhistory.hist do -- skip first one which is current book
if lfs.attributes(readhistory.hist[i].file, "mode") == "file" then
previous_file = readhistory.hist[i].file
break
end
end
self.menu_items.open_previous_document = {
text_func = function()
if not G_reader_settings:isTrue("open_last_menu_show_filename") or not previous_file then
return _("Open previous document")
end
local path, file_name = util.splitFilePathName(previous_file); -- luacheck: no unused
return T(_("Previous: %1"), file_name)
end,
enabled_func = function()
return previous_file ~= nil
end,
callback = function()
self.ui:switchDocument(previous_file)
end,
hold_callback = function()
UIManager:show(ConfirmBox:new{
text = T(_("Would you like to open the previous document: %1?"), previous_file),
ok_text = _("OK"),
ok_callback = function()
self.ui:switchDocument(previous_file)
end,
})
end
}
local order = require("ui/elements/reader_menu_order")
local MenuSorter = require("ui/menusorter")

@ -663,4 +663,11 @@ function ReaderUI:reloadDocument(after_close_callback)
self:showReader(file, provider)
end
function ReaderUI:switchDocument(new_file)
self:handleEvent(Event:new("CloseReaderMenu"))
self:handleEvent(Event:new("CloseConfigMenu"))
self:onClose()
self:showReader(new_file)
end
return ReaderUI

@ -99,6 +99,8 @@ local order = {
filemanager = {},
main = {
"history",
"open_previous_document",
"----------------------------",
"book_status",
"book_info",
"----------------------------",

@ -149,7 +149,7 @@ function CoverBrowser:addToMainMenu(menu_items)
callback = function() G_reader_settings:flipNilOrFalse("autoremove_deleted_items_from_history") end,
},
{
text = _("Show filename in Open last menu item"),
text = _("Show filename in Open last/previous menu items"),
checked_func = function() return G_reader_settings:readSetting("open_last_menu_show_filename") end,
callback = function() G_reader_settings:flipNilOrFalse("open_last_menu_show_filename") end,
},

Loading…
Cancel
Save