[feat] File manager - add option to view unsupported files (#5129)

New option to show all files (also not supported by KOReader) in file manager. Default this option is disabled.
pull/5134/head
Robert 5 years ago committed by Frans de Jonge
parent 74518c79d1
commit 39bf5a4677

@ -129,6 +129,7 @@ function FileManager:init()
local g_show_hidden = G_reader_settings:readSetting("show_hidden")
local show_hidden = g_show_hidden == nil and DSHOWHIDDENFILES or g_show_hidden
local show_unsupported = G_reader_settings:readSetting("show_unsupported")
local file_chooser = FileChooser:new{
-- remember to adjust the height when new item is added to the group
path = self.root_path,
@ -143,6 +144,7 @@ function FileManager:init()
is_borderless = true,
has_close_button = true,
perpage = G_reader_settings:readSetting("items_per_page"),
show_unsupported = show_unsupported,
file_filter = function(filename)
if DocumentRegistry:hasProvider(filename) then
return true
@ -274,7 +276,7 @@ function FileManager:init()
{
{
text = _("Open with…"),
enabled = lfs.attributes(file, "mode") == "file"
enabled = lfs.attributes(file, "mode") == "file" and DocumentRegistry:getProviders(file) ~= nil
and #(DocumentRegistry:getProviders(file)) > 1,
callback = function()
UIManager:close(self.file_dialog)
@ -525,6 +527,11 @@ function FileManager:toggleHiddenFiles()
G_reader_settings:saveSetting("show_hidden", self.file_chooser.show_hidden)
end
function FileManager:toggleUnsupportedFiles()
self.file_chooser:toggleUnsupportedFiles()
G_reader_settings:saveSetting("show_unsupported", self.file_chooser.show_unsupported)
end
function FileManager:setCollate(collate)
self.file_chooser:setCollate(collate)
G_reader_settings:saveSetting("collate", self.file_chooser.collate)

@ -121,6 +121,11 @@ function FileManagerMenu:setUpdateItemTable()
checked_func = function() return self.ui.file_chooser.show_hidden end,
callback = function() self.ui:toggleHiddenFiles() end
}
self.menu_items.show_unsupported_files = {
text = _("Show unsupported files"),
checked_func = function() return self.ui.file_chooser.show_unsupported end,
callback = function() self.ui:toggleUnsupportedFiles() end
}
self.menu_items.items_per_page = {
text = _("Items per page"),
help_text = _([[This sets the number of items per page in:

@ -416,11 +416,16 @@ function ReaderUI:getLastDirFile()
return last_dir, last_file
end
function ReaderUI:showFileManager()
function ReaderUI:showFileManager(file)
local FileManager = require("apps/filemanager/filemanager")
local last_dir, last_file = self:getLastDirFile()
local last_dir, last_file
if file then
last_dir, last_file = util.splitFilePathName(file)
last_dir = last_dir:match("(.*)/")
else
last_dir, last_file = self:getLastDirFile()
end
if FileManager.instance then
FileManager.instance:reinit(last_dir, last_file)
else
@ -430,7 +435,6 @@ end
function ReaderUI:showReader(file, provider)
logger.dbg("show reader ui")
require("readhistory"):addItem(file)
if lfs.attributes(file, "mode") ~= "file" then
UIManager:show(InfoMessage:new{
@ -439,6 +443,13 @@ function ReaderUI:showReader(file, provider)
return
end
if not DocumentRegistry:hasProvider(file) then
UIManager:show(InfoMessage:new{
text = T(_("File '%1' is not supported."), file)
})
self:showFileManager(file)
return
end
-- prevent crash due to incompatible bookmarks
-- @TODO split bookmarks from metadata and do per-engine in conversion
provider = provider or DocumentRegistry:getProvider(file)
@ -516,7 +527,7 @@ function ReaderUI:doShowReader(file, provider)
end
end
end
require("readhistory"):addItem(file)
G_reader_settings:saveSetting("lastfile", file)
local reader = ReaderUI:new{
dimen = Screen:getSize(),

@ -12,6 +12,7 @@ local order = {
filemanager_settings = {
"filemanager_display_mode",
"show_hidden_files",
"show_unsupported_files",
"items_per_page",
"----------------------------",
"sort_by",

@ -71,7 +71,7 @@ function FileChooser:init()
attr = attributes})
end
elseif attributes.mode == "file" then
if self.file_filter == nil or self.file_filter(filename) then
if self.file_filter == nil or self.file_filter(filename) or self.show_unsupported then
local percent_finished = 0
if self.collate == "percent_unopened_first" or self.collate == "percent_unopened_last" then
if DocSettings:hasSidecarFile(filename) then
@ -331,6 +331,11 @@ function FileChooser:toggleHiddenFiles()
self:refreshPath()
end
function FileChooser:toggleUnsupportedFiles()
self.show_unsupported = not self.show_unsupported
self:refreshPath()
end
function FileChooser:setCollate(collate)
self.collate = collate
self:refreshPath()

Loading…
Cancel
Save