mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
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
This commit is contained in:
@@ -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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user