mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[feat, UX] Gesture manager: add option - open previous document (#4641)
Fixes #4333.
This commit is contained in:
@@ -94,7 +94,12 @@ function FileManagerMenu:openLastDoc()
|
||||
end
|
||||
local ReaderUI = require("apps/reader/readerui")
|
||||
ReaderUI:showReader(last_file)
|
||||
self:onCloseFileManagerMenu()
|
||||
|
||||
-- only close menu if we were called from the menu
|
||||
if self.menu_container then
|
||||
self:onCloseFileManagerMenu()
|
||||
end
|
||||
|
||||
local FileManager = require("apps/filemanager/filemanager")
|
||||
FileManager.instance:onClose()
|
||||
end
|
||||
|
||||
@@ -93,6 +93,7 @@ function ReaderGesture:buildMenu(ges, default)
|
||||
{_("Folder up"), "folder_up", self.is_docless},
|
||||
{_("Bookmarks"), "bookmarks", not self.is_docless},
|
||||
{_("History"), "history", true},
|
||||
{_("Open previous document"), "open_previous_document", true, true},
|
||||
{_("Table of contents"), "toc", not self.is_docless},
|
||||
{_("Reading progress"), "reading_progress", ReaderGesture.getReaderProgress ~= nil},
|
||||
{_("Full screen refresh"), "full_refresh", true},
|
||||
@@ -130,7 +131,8 @@ function ReaderGesture:buildMenu(ges, default)
|
||||
G_reader_settings:saveSetting(self.ges_mode, gesture_manager)
|
||||
end
|
||||
if entry[2] ~= default and entry[3] then
|
||||
table.insert(return_menu, self:createSubMenu(entry[1], entry[2], ges, entry[2] == "nothing"))
|
||||
local sep = entry[2] == "nothing" or entry[4] == true
|
||||
table.insert(return_menu, self:createSubMenu(entry[1], entry[2], ges, sep))
|
||||
end
|
||||
end
|
||||
return return_menu
|
||||
@@ -330,6 +332,14 @@ function ReaderGesture:gestureAction(action)
|
||||
self.ui:handleEvent(Event:new("GoBackLink"))
|
||||
elseif action == "folder_up" then
|
||||
self.ui.file_chooser:changeToPath(string.format("%s/..", self.ui.file_chooser.path))
|
||||
elseif action == "open_previous_document" then
|
||||
-- FileManager
|
||||
if self.ui.menu.openLastDoc and G_reader_settings:readSetting("lastfile") ~= nil then
|
||||
self.ui.menu:openLastDoc()
|
||||
-- ReaderUI
|
||||
elseif self.ui.switchDocument and self.ui.menu then
|
||||
self.ui:switchDocument(self.ui.menu:getPreviousFile())
|
||||
end
|
||||
elseif action == "toggle_frontlight" then
|
||||
Device:getPowerDevice():toggleFrontlight()
|
||||
self:onShowFLOnOff()
|
||||
|
||||
@@ -70,6 +70,19 @@ function ReaderMenu:init()
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderMenu:getPreviousFile()
|
||||
local previous_file = nil
|
||||
local readhistory = require("readhistory")
|
||||
for i=2, #readhistory.hist do -- skip first one which is current book
|
||||
-- skip deleted items kept in history
|
||||
if lfs.attributes(readhistory.hist[i].file, "mode") == "file" then
|
||||
previous_file = readhistory.hist[i].file
|
||||
break
|
||||
end
|
||||
end
|
||||
return previous_file
|
||||
end
|
||||
|
||||
function ReaderMenu:onReaderReady()
|
||||
-- deligate gesture listener to readerui
|
||||
self.ges_events = {}
|
||||
@@ -191,21 +204,9 @@ function ReaderMenu:setUpdateItemTable()
|
||||
self.menu_items.restart_koreader = nil
|
||||
end
|
||||
|
||||
local getPreviousFile = function()
|
||||
local previous_file = nil
|
||||
local readhistory = require("readhistory")
|
||||
for i=2, #readhistory.hist do -- skip first one which is current book
|
||||
-- skip deleted items kept in history
|
||||
if lfs.attributes(readhistory.hist[i].file, "mode") == "file" then
|
||||
previous_file = readhistory.hist[i].file
|
||||
break
|
||||
end
|
||||
end
|
||||
return previous_file
|
||||
end
|
||||
self.menu_items.open_previous_document = {
|
||||
text_func = function()
|
||||
local previous_file = getPreviousFile()
|
||||
local previous_file = self:getPreviousFile()
|
||||
if not G_reader_settings:isTrue("open_last_menu_show_filename") or not previous_file then
|
||||
return _("Open previous document")
|
||||
end
|
||||
@@ -213,13 +214,13 @@ function ReaderMenu:setUpdateItemTable()
|
||||
return T(_("Previous: %1"), file_name)
|
||||
end,
|
||||
enabled_func = function()
|
||||
return getPreviousFile() ~= nil
|
||||
return self:getPreviousFile() ~= nil
|
||||
end,
|
||||
callback = function()
|
||||
self.ui:switchDocument(getPreviousFile())
|
||||
self.ui:switchDocument(self:getPreviousFile())
|
||||
end,
|
||||
hold_callback = function()
|
||||
local previous_file = getPreviousFile()
|
||||
local previous_file = self:getPreviousFile()
|
||||
UIManager:show(ConfirmBox:new{
|
||||
text = T(_("Would you like to open the previous document: %1?"), previous_file),
|
||||
ok_text = _("OK"),
|
||||
|
||||
@@ -684,6 +684,7 @@ function ReaderUI:reloadDocument(after_close_callback)
|
||||
end
|
||||
|
||||
function ReaderUI:switchDocument(new_file)
|
||||
if not new_file then return end
|
||||
self:handleEvent(Event:new("CloseReaderMenu"))
|
||||
self:handleEvent(Event:new("CloseConfigMenu"))
|
||||
self.highlight:onClose() -- close highlight dialog if any
|
||||
|
||||
Reference in New Issue
Block a user