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.
pull/2971/head
Frans de Jonge 7 years ago committed by Huang Xin
parent 63f2284f21
commit 28524a5847

@ -3,7 +3,6 @@ local Device = require("device")
local Event = require("ui/event") local Event = require("ui/event")
local InputContainer = require("ui/widget/container/inputcontainer") local InputContainer = require("ui/widget/container/inputcontainer")
local Screensaver = require("ui/screensaver") local Screensaver = require("ui/screensaver")
local QuickStart = require("ui/quickstart")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local logger = require("logger") local logger = require("logger")
local dbg = require("dbg") local dbg = require("dbg")
@ -43,18 +42,7 @@ function ReaderMenu:init()
callback = function() callback = function()
self:onTapCloseMenu() self:onTapCloseMenu()
self.ui:onClose() self.ui:onClose()
local lastdir self.ui:showFileManager()
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
local FileManager = require("apps/filemanager/filemanager")
if FileManager.instance then
FileManager.instance:reinit(lastdir)
else
FileManager:showFiles(lastdir)
end
end, end,
}, },
main = { main = {

@ -1,55 +1,54 @@
local InputContainer = require("ui/widget/container/inputcontainer") --[[
local DocumentRegistry = require("document/documentregistry") ReaderUI is an abstraction for a reader interface.
local Screenshoter = require("ui/widget/screenshoter")
local InfoMessage = require("ui/widget/infomessage") It works using data gathered from a document interface.
local InputDialog = require("ui/widget/inputdialog") ]]--
local Cache = require("cache")
local ConfirmBox = require("ui/widget/confirmbox") 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 Device = require("device")
local Screen = require("device").screen local DocSettings = require("docsettings")
local DocumentRegistry = require("document/documentregistry")
local Event = require("ui/event") local Event = require("ui/event")
local Cache = require("cache") local FileManagerHistory = require("apps/filemanager/filemanagerhistory")
local logger = require("logger") local Geom = require("ui/geometry")
local T = require("ffi/util").template local InfoMessage = require("ui/widget/infomessage")
local _ = require("gettext") local InputContainer = require("ui/widget/container/inputcontainer")
local InputDialog = require("ui/widget/inputdialog")
local ReaderView = require("apps/reader/modules/readerview") local PluginLoader = require("pluginloader")
local ReaderZooming = require("apps/reader/modules/readerzooming") local ReaderActivityIndicator = require("apps/reader/modules/readeractivityindicator")
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 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 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 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 ReaderHinting = require("apps/reader/modules/readerhinting")
local ReaderHighlight = require("apps/reader/modules/readerhighlight") 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 ReaderHyphenation = require("apps/reader/modules/readerhyphenation")
local ReaderActivityIndicator = require("apps/reader/modules/readeractivityindicator") local ReaderKoptListener = require("apps/reader/modules/readerkoptlistener")
local FileManagerHistory = require("apps/filemanager/filemanagerhistory")
local ReaderSearch = require("apps/reader/modules/readersearch")
local ReaderLink = require("apps/reader/modules/readerlink") 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 ReaderSearch = require("apps/reader/modules/readersearch")
local ReaderStatus = require("apps/reader/modules/readerstatus") local ReaderStatus = require("apps/reader/modules/readerstatus")
local PluginLoader = require("pluginloader") local ReaderToc = require("apps/reader/modules/readertoc")
local ReaderTypeset = require("apps/reader/modules/readertypeset")
--[[ local ReaderView = require("apps/reader/modules/readerview")
This is an abstraction for a reader interface local ReaderWikipedia = require("apps/reader/modules/readerwikipedia")
local ReaderZooming = require("apps/reader/modules/readerzooming")
it works using data gathered from a document interface 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{ local ReaderUI = InputContainer:new{
name = "ReaderUI", name = "ReaderUI",
@ -354,6 +353,22 @@ function ReaderUI:init()
self.postReaderCallback = nil self.postReaderCallback = nil
end 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) function ReaderUI:showReader(file)
logger.dbg("show reader ui") logger.dbg("show reader ui")
require("readhistory"):addItem(file) require("readhistory"):addItem(file)
@ -393,8 +408,9 @@ function ReaderUI:doShowReader(file)
local document = DocumentRegistry:openDocument(file) local document = DocumentRegistry:openDocument(file)
if not document then if not document then
UIManager:show(InfoMessage:new{ UIManager:show(InfoMessage:new{
text = _("No reader engine for this file.") text = _("No reader engine for this file or invalid file.")
}) })
self:showFileManager()
return return
end end
if document.is_locked then if document.is_locked then
@ -404,6 +420,7 @@ function ReaderUI:doShowReader(file)
if coroutine.running() then if coroutine.running() then
local unlock_success = coroutine.yield() local unlock_success = coroutine.yield()
if not unlock_success then if not unlock_success then
self:showFileManager()
return return
end end
end end

Loading…
Cancel
Save