mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[feat] Open unsupported documents as text (#5497)
This commit is contained in:
committed by
Frans de Jonge
parent
0ecf42e995
commit
6c68df42ec
@@ -291,8 +291,8 @@ function FileManager:init()
|
||||
{
|
||||
{
|
||||
text = _("Open with…"),
|
||||
enabled = lfs.attributes(file, "mode") == "file" and DocumentRegistry:getProviders(file) ~= nil
|
||||
and #(DocumentRegistry:getProviders(file)) > 1,
|
||||
enabled = lfs.attributes(file, "mode") == "file" and (DocumentRegistry:getProviders(file) == nil
|
||||
or #(DocumentRegistry:getProviders(file)) > 1),
|
||||
callback = function()
|
||||
UIManager:close(self.file_dialog)
|
||||
self:showSetProviderButtons(file, FileManager.instance, ReaderUI)
|
||||
|
||||
@@ -447,7 +447,7 @@ function ReaderUI:showReader(file, provider)
|
||||
return
|
||||
end
|
||||
|
||||
if not DocumentRegistry:hasProvider(file) then
|
||||
if not DocumentRegistry:hasProvider(file) and provider == nil then
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = T(_("File '%1' is not supported."), file)
|
||||
})
|
||||
|
||||
@@ -56,9 +56,17 @@ end
|
||||
function DocumentRegistry:hasProvider(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
|
||||
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
|
||||
end
|
||||
|
||||
@@ -96,6 +104,12 @@ function DocumentRegistry:getProvider(file)
|
||||
|
||||
-- highest weighted 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
|
||||
|
||||
|
||||
@@ -394,15 +394,27 @@ function FileChooser:showSetProviderButtons(file, filemanager_instance, reader_u
|
||||
|
||||
local buttons = {}
|
||||
local radio_buttons = {}
|
||||
local filetype_provider = G_reader_settings:readSetting("provider") or {}
|
||||
local providers = DocumentRegistry:getProviders(file)
|
||||
|
||||
for ___, provider in ipairs(providers) do
|
||||
-- we have no need for extension, mimetype, weights, etc. here
|
||||
provider = provider.provider
|
||||
if providers ~= nil then
|
||||
for ___, provider in ipairs(providers) do
|
||||
-- we have no need for extension, mimetype, weights, etc. here
|
||||
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, {
|
||||
{
|
||||
text = provider.provider_name,
|
||||
checked = DocumentRegistry:getProvider(file) == provider,
|
||||
-- @translators %1 is the provider name, such as Cool Reader Engine or MuPDF.
|
||||
text = T(_("%1 ~Unsupported"), provider.provider_name),
|
||||
checked = true,
|
||||
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{
|
||||
title = T(_("Open %1 with:"), filename_pure),
|
||||
radio_buttons = radio_buttons,
|
||||
|
||||
Reference in New Issue
Block a user