mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Option to show all files in cloudstorage also not supported by KOReader. We can also download any file. To show all files in CS we need to enable option Show unsupported files in file manager (introducing in #5129) Close: #5006
153 lines
5.1 KiB
Lua
153 lines
5.1 KiB
Lua
local ConfirmBox = require("ui/widget/confirmbox")
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
local MultiInputDialog = require("ui/widget/multiinputdialog")
|
|
local UIManager = require("ui/uimanager")
|
|
local ReaderUI = require("apps/reader/readerui")
|
|
local WebDavApi = require("apps/cloudstorage/webdavapi")
|
|
local _ = require("gettext")
|
|
local Screen = require("device").screen
|
|
local T = require("ffi/util").template
|
|
|
|
local WebDav = {}
|
|
|
|
function WebDav:run(address, user, pass, path)
|
|
return WebDavApi:listFolder(address, user, pass, path)
|
|
end
|
|
|
|
function WebDav:downloadFile(item, address, username, password, local_path, close)
|
|
local code_response = WebDavApi:downloadFile(address .. WebDavApi:urlEncode( item.url ), username, password, local_path)
|
|
if code_response == 200 then
|
|
if G_reader_settings:isTrue("show_unsupported") then
|
|
UIManager:show(InfoMessage:new{
|
|
text = T(_("File saved to:\n%1"), local_path),
|
|
})
|
|
else
|
|
UIManager:show(ConfirmBox:new{
|
|
text = T(_("File saved to:\n%1\nWould you like to read the downloaded book now?"),
|
|
local_path),
|
|
ok_callback = function()
|
|
close()
|
|
ReaderUI:showReader(local_path)
|
|
end
|
|
})
|
|
end
|
|
else
|
|
UIManager:show(InfoMessage:new{
|
|
text = T(_("Could not save file to:\n%1"), local_path),
|
|
timeout = 3,
|
|
})
|
|
end
|
|
end
|
|
|
|
function WebDav:config(item, callback)
|
|
local text_info = _([[Server address must be of the form http(s)://domain.name/path
|
|
This can point to a sub-directory of the WebDAV server.
|
|
The start folder is appended to the server path.]])
|
|
|
|
local hint_name = _("Server display name")
|
|
local text_name = ""
|
|
local hint_address = _("WebDAV address eg https://example.com/dav")
|
|
local text_address = ""
|
|
local hint_username = _("Username")
|
|
local text_username = ""
|
|
local hint_password = _("Password")
|
|
local text_password = ""
|
|
local hint_folder = _("Start folder")
|
|
local text_folder = ""
|
|
local title
|
|
local text_button_ok = _("Add")
|
|
if item then
|
|
title = _("Edit WebDAV account")
|
|
text_button_ok = _("Apply")
|
|
text_name = item.text
|
|
text_address = item.address
|
|
text_username = item.username
|
|
text_password = item.password
|
|
text_folder = item.url
|
|
else
|
|
title = _("Add WebDAV account")
|
|
end
|
|
self.settings_dialog = MultiInputDialog:new {
|
|
title = title,
|
|
fields = {
|
|
{
|
|
text = text_name,
|
|
input_type = "string",
|
|
hint = hint_name ,
|
|
},
|
|
{
|
|
text = text_address,
|
|
input_type = "string",
|
|
hint = hint_address ,
|
|
},
|
|
{
|
|
text = text_username,
|
|
input_type = "string",
|
|
hint = hint_username,
|
|
},
|
|
{
|
|
text = text_password,
|
|
input_type = "string",
|
|
text_type = "password",
|
|
hint = hint_password,
|
|
},
|
|
{
|
|
text = text_folder,
|
|
input_type = "string",
|
|
hint = hint_folder,
|
|
},
|
|
},
|
|
buttons = {
|
|
{
|
|
{
|
|
text = _("Cancel"),
|
|
callback = function()
|
|
self.settings_dialog:onClose()
|
|
UIManager:close(self.settings_dialog)
|
|
end
|
|
},
|
|
{
|
|
text = _("Info"),
|
|
callback = function()
|
|
UIManager:show(InfoMessage:new{ text = text_info })
|
|
end
|
|
},
|
|
{
|
|
text = text_button_ok,
|
|
callback = function()
|
|
local fields = MultiInputDialog:getFields()
|
|
if fields[1] ~= "" and fields[2] ~= "" then
|
|
if item then
|
|
-- edit
|
|
callback(item, fields)
|
|
else
|
|
-- add new
|
|
callback(fields)
|
|
end
|
|
self.settings_dialog:onClose()
|
|
UIManager:close(self.settings_dialog)
|
|
else
|
|
UIManager:show(InfoMessage:new{
|
|
text = _("Please fill in all fields.")
|
|
})
|
|
end
|
|
end
|
|
},
|
|
},
|
|
},
|
|
width = Screen:getWidth() * 0.95,
|
|
height = Screen:getHeight() * 0.2,
|
|
input_type = "text",
|
|
}
|
|
UIManager:show(self.settings_dialog)
|
|
self.settings_dialog:onShowKeyboard()
|
|
|
|
end
|
|
|
|
function WebDav:info(item)
|
|
local info_text = T(_"Type: %1\nName: %2\nAddress: %3", "WebDAV", item.text, item.address)
|
|
UIManager:show(InfoMessage:new{text = info_text})
|
|
end
|
|
|
|
return WebDav
|