[feat] Open unsupported documents as text (#5497)

pull/5528/head
yparitcher 5 years ago committed by Frans de Jonge
parent 0ecf42e995
commit 6c68df42ec

@ -291,8 +291,8 @@ function FileManager:init()
{ {
{ {
text = _("Open with…"), text = _("Open with…"),
enabled = lfs.attributes(file, "mode") == "file" and DocumentRegistry:getProviders(file) ~= nil enabled = lfs.attributes(file, "mode") == "file" and (DocumentRegistry:getProviders(file) == nil
and #(DocumentRegistry:getProviders(file)) > 1, or #(DocumentRegistry:getProviders(file)) > 1),
callback = function() callback = function()
UIManager:close(self.file_dialog) UIManager:close(self.file_dialog)
self:showSetProviderButtons(file, FileManager.instance, ReaderUI) self:showSetProviderButtons(file, FileManager.instance, ReaderUI)

@ -447,7 +447,7 @@ function ReaderUI:showReader(file, provider)
return return
end end
if not DocumentRegistry:hasProvider(file) then if not DocumentRegistry:hasProvider(file) and provider == nil then
UIManager:show(InfoMessage:new{ UIManager:show(InfoMessage:new{
text = T(_("File '%1' is not supported."), file) text = T(_("File '%1' is not supported."), file)
}) })

@ -56,9 +56,17 @@ end
function DocumentRegistry:hasProvider(file) function DocumentRegistry:hasProvider(file)
local filename_suffix = string.lower(util.getFileNameSuffix(file)) local filename_suffix = string.lower(util.getFileNameSuffix(file))
if self.filetype_provider[filename_suffix] then local filetype_provider = G_reader_settings:readSetting("provider") or {}
if self.filetype_provider[filename_suffix] or filetype_provider[filename_suffix] then
return true return true
end end
local DocSettings = require("docsettings")
if DocSettings:hasSidecarFile(file) then
local doc_settings_provider = DocSettings:open(file):readSetting("provider")
if doc_settings_provider then
return true
end
end
return false return false
end end
@ -96,6 +104,12 @@ function DocumentRegistry:getProvider(file)
-- highest weighted provider -- highest weighted provider
return providers[1].provider return providers[1].provider
else
for _, provider in ipairs(self.providers) do
if provider.extension == "txt" then
return provider.provider
end
end
end end
end end

@ -394,15 +394,27 @@ function FileChooser:showSetProviderButtons(file, filemanager_instance, reader_u
local buttons = {} local buttons = {}
local radio_buttons = {} local radio_buttons = {}
local filetype_provider = G_reader_settings:readSetting("provider") or {}
local providers = DocumentRegistry:getProviders(file) local providers = DocumentRegistry:getProviders(file)
if providers ~= nil then
for ___, provider in ipairs(providers) do for ___, provider in ipairs(providers) do
-- we have no need for extension, mimetype, weights, etc. here -- we have no need for extension, mimetype, weights, etc. here
provider = provider.provider provider = provider.provider
table.insert(radio_buttons, {
{
text = provider.provider_name,
checked = DocumentRegistry:getProvider(file) == provider,
provider = provider,
},
})
end
else
local provider = DocumentRegistry:getProvider(file)
table.insert(radio_buttons, { table.insert(radio_buttons, {
{ {
text = provider.provider_name, -- @translators %1 is the provider name, such as Cool Reader Engine or MuPDF.
checked = DocumentRegistry:getProvider(file) == provider, text = T(_("%1 ~Unsupported"), provider.provider_name),
checked = true,
provider = provider, provider = provider,
}, },
}) })
@ -459,6 +471,19 @@ function FileChooser:showSetProviderButtons(file, filemanager_instance, reader_u
}, },
}) })
if filetype_provider[filename_suffix] ~= nil then
table.insert(buttons, {
{
text = _("Reset default"),
callback = function()
filetype_provider[filename_suffix] = nil
G_reader_settings:saveSetting("provider", filetype_provider)
UIManager:close(self.set_provider_dialog)
end,
},
})
end
self.set_provider_dialog = OpenWithDialog:new{ self.set_provider_dialog = OpenWithDialog:new{
title = T(_("Open %1 with:"), filename_pure), title = T(_("Open %1 with:"), filename_pure),
radio_buttons = radio_buttons, radio_buttons = radio_buttons,

Loading…
Cancel
Save