diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 553b11ea5..de686d261 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -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 diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index b7263ee30..8cf3c0ed7 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -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") diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index c0e74049c..8206ee781 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -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 diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 30190540e..3a556b9da 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -99,6 +99,8 @@ local order = { filemanager = {}, main = { "history", + "open_previous_document", + "----------------------------", "book_status", "book_info", "----------------------------", diff --git a/plugins/coverbrowser.koplugin/main.lua b/plugins/coverbrowser.koplugin/main.lua index 1bbdadad3..e0d4ac571 100644 --- a/plugins/coverbrowser.koplugin/main.lua +++ b/plugins/coverbrowser.koplugin/main.lua @@ -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, },