mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
ReaderUI: return to filemanager instead of quitting if no document (#2956)
This affects #2335, at least for documents covered by `validDjvuFile()` (see 76cef07c07/frontend/document/djvudocument.lua (L15-L23)). However, that's only with regard to `touch invalid.djvu` and should not affect whatever happened in the OP.
This commit is contained in:
committed by
Huang Xin
parent
63f2284f21
commit
28524a5847
@@ -1,55 +1,54 @@
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
local DocumentRegistry = require("document/documentregistry")
|
||||
local Screenshoter = require("ui/widget/screenshoter")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local InputDialog = require("ui/widget/inputdialog")
|
||||
local ConfirmBox = require("ui/widget/confirmbox")
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local DocSettings = require("docsettings")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Geom = require("ui/geometry")
|
||||
local Device = require("device")
|
||||
local Screen = require("device").screen
|
||||
local Event = require("ui/event")
|
||||
local Cache = require("cache")
|
||||
local logger = require("logger")
|
||||
local T = require("ffi/util").template
|
||||
local _ = require("gettext")
|
||||
--[[
|
||||
ReaderUI is an abstraction for a reader interface.
|
||||
|
||||
local ReaderView = require("apps/reader/modules/readerview")
|
||||
local ReaderZooming = require("apps/reader/modules/readerzooming")
|
||||
It works using data gathered from a document interface.
|
||||
]]--
|
||||
|
||||
local Cache = require("cache")
|
||||
local ConfirmBox = require("ui/widget/confirmbox")
|
||||
local Device = require("device")
|
||||
local DocSettings = require("docsettings")
|
||||
local DocumentRegistry = require("document/documentregistry")
|
||||
local Event = require("ui/event")
|
||||
local FileManagerHistory = require("apps/filemanager/filemanagerhistory")
|
||||
local Geom = require("ui/geometry")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
local InputDialog = require("ui/widget/inputdialog")
|
||||
local PluginLoader = require("pluginloader")
|
||||
local ReaderActivityIndicator = require("apps/reader/modules/readeractivityindicator")
|
||||
local ReaderBookmark = require("apps/reader/modules/readerbookmark")
|
||||
local ReaderConfig = require("apps/reader/modules/readerconfig")
|
||||
local ReaderCoptListener = require("apps/reader/modules/readercoptlistener")
|
||||
local ReaderCropping = require("apps/reader/modules/readercropping")
|
||||
local ReaderDictionary = require("apps/reader/modules/readerdictionary")
|
||||
local ReaderFont = require("apps/reader/modules/readerfont")
|
||||
local ReaderFrontLight = require("apps/reader/modules/readerfrontlight")
|
||||
local ReaderGoto = require("apps/reader/modules/readergoto")
|
||||
local ReaderHinting = require("apps/reader/modules/readerhinting")
|
||||
local ReaderHighlight = require("apps/reader/modules/readerhighlight")
|
||||
local ReaderHyphenation = require("apps/reader/modules/readerhyphenation")
|
||||
local ReaderKoptListener = require("apps/reader/modules/readerkoptlistener")
|
||||
local ReaderLink = require("apps/reader/modules/readerlink")
|
||||
local ReaderMenu = require("apps/reader/modules/readermenu")
|
||||
local ReaderPanning = require("apps/reader/modules/readerpanning")
|
||||
local ReaderRotation = require("apps/reader/modules/readerrotation")
|
||||
local ReaderPaging = require("apps/reader/modules/readerpaging")
|
||||
local ReaderRolling = require("apps/reader/modules/readerrolling")
|
||||
local ReaderToc = require("apps/reader/modules/readertoc")
|
||||
local ReaderBookmark = require("apps/reader/modules/readerbookmark")
|
||||
local ReaderFont = require("apps/reader/modules/readerfont")
|
||||
local ReaderTypeset = require("apps/reader/modules/readertypeset")
|
||||
local ReaderMenu = require("apps/reader/modules/readermenu")
|
||||
local ReaderGoto = require("apps/reader/modules/readergoto")
|
||||
local ReaderConfig = require("apps/reader/modules/readerconfig")
|
||||
local ReaderCropping = require("apps/reader/modules/readercropping")
|
||||
local ReaderKoptListener = require("apps/reader/modules/readerkoptlistener")
|
||||
local ReaderCoptListener = require("apps/reader/modules/readercoptlistener")
|
||||
local ReaderHinting = require("apps/reader/modules/readerhinting")
|
||||
local ReaderHighlight = require("apps/reader/modules/readerhighlight")
|
||||
local ReaderFrontLight = require("apps/reader/modules/readerfrontlight")
|
||||
local ReaderDictionary = require("apps/reader/modules/readerdictionary")
|
||||
local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
|
||||
local ReaderHyphenation = require("apps/reader/modules/readerhyphenation")
|
||||
local ReaderActivityIndicator = require("apps/reader/modules/readeractivityindicator")
|
||||
local FileManagerHistory = require("apps/filemanager/filemanagerhistory")
|
||||
local ReaderSearch = require("apps/reader/modules/readersearch")
|
||||
local ReaderLink = require("apps/reader/modules/readerlink")
|
||||
local ReaderStatus = require("apps/reader/modules/readerstatus")
|
||||
local PluginLoader = require("pluginloader")
|
||||
|
||||
--[[
|
||||
This is an abstraction for a reader interface
|
||||
|
||||
it works using data gathered from a document interface
|
||||
]]--
|
||||
local ReaderToc = require("apps/reader/modules/readertoc")
|
||||
local ReaderTypeset = require("apps/reader/modules/readertypeset")
|
||||
local ReaderView = require("apps/reader/modules/readerview")
|
||||
local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
|
||||
local ReaderZooming = require("apps/reader/modules/readerzooming")
|
||||
local Screenshoter = require("ui/widget/screenshoter")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local logger = require("logger")
|
||||
local _ = require("gettext")
|
||||
local Screen = require("device").screen
|
||||
local T = require("ffi/util").template
|
||||
|
||||
local ReaderUI = InputContainer:new{
|
||||
name = "ReaderUI",
|
||||
@@ -354,6 +353,22 @@ function ReaderUI:init()
|
||||
self.postReaderCallback = nil
|
||||
end
|
||||
|
||||
function ReaderUI:showFileManager()
|
||||
local FileManager = require("apps/filemanager/filemanager")
|
||||
local QuickStart = require("ui/quickstart")
|
||||
local lastdir
|
||||
local last_file = G_reader_settings:readSetting("lastfile")
|
||||
-- ignore quickstart guide as last_file so we can go back to home dir
|
||||
if last_file and last_file ~= QuickStart.quickstart_filename then
|
||||
lastdir = last_file:match("(.*)/")
|
||||
end
|
||||
if FileManager.instance then
|
||||
FileManager.instance:reinit(lastdir)
|
||||
else
|
||||
FileManager:showFiles(lastdir)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderUI:showReader(file)
|
||||
logger.dbg("show reader ui")
|
||||
require("readhistory"):addItem(file)
|
||||
@@ -393,8 +408,9 @@ function ReaderUI:doShowReader(file)
|
||||
local document = DocumentRegistry:openDocument(file)
|
||||
if not document then
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("No reader engine for this file.")
|
||||
text = _("No reader engine for this file or invalid file.")
|
||||
})
|
||||
self:showFileManager()
|
||||
return
|
||||
end
|
||||
if document.is_locked then
|
||||
@@ -404,6 +420,7 @@ function ReaderUI:doShowReader(file)
|
||||
if coroutine.running() then
|
||||
local unlock_success = coroutine.yield()
|
||||
if not unlock_success then
|
||||
self:showFileManager()
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user