diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index e9d3e75be..86633925e 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -3,7 +3,6 @@ local Device = require("device") local Event = require("ui/event") local InputContainer = require("ui/widget/container/inputcontainer") local Screensaver = require("ui/screensaver") -local QuickStart = require("ui/quickstart") local UIManager = require("ui/uimanager") local logger = require("logger") local dbg = require("dbg") @@ -43,18 +42,7 @@ function ReaderMenu:init() callback = function() self:onTapCloseMenu() self.ui:onClose() - 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 - local FileManager = require("apps/filemanager/filemanager") - if FileManager.instance then - FileManager.instance:reinit(lastdir) - else - FileManager:showFiles(lastdir) - end + self.ui:showFileManager() end, }, main = { diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 5c8916dfd..9eb5b532d 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -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