mirror of
https://github.com/koreader/koreader
synced 2024-10-31 21:20:20 +00:00
130 lines
4.6 KiB
Lua
130 lines
4.6 KiB
Lua
local DropBoxApi = require("frontend/apps/cloudstorage/dropboxapi")
|
|
local ConfirmBox = require("ui/widget/confirmbox")
|
|
local InfoMessage = require("ui/widget/infomessage")
|
|
local MultiInputDialog = require("ui/widget/multiinputdialog")
|
|
local UIManager = require("ui/uimanager")
|
|
local _ = require("gettext")
|
|
local T = require("ffi/util").template
|
|
local ReaderUI = require("apps/reader/readerui")
|
|
local Screen = require("device").screen
|
|
|
|
local DropBox = {
|
|
}
|
|
|
|
function DropBox:run(url, password)
|
|
return DropBoxApi:listFolder(url, password)
|
|
end
|
|
|
|
function DropBox:downloadFile(item, password, path, close)
|
|
local code_response = DropBoxApi:downloadFile(item.url, password, path)
|
|
if code_response == 200 then
|
|
UIManager:show(ConfirmBox:new{
|
|
text = T(_("File saved to:\n %1\nWould you like to read the downloaded book now?"),
|
|
path),
|
|
ok_callback = function()
|
|
close()
|
|
ReaderUI:showReader(path)
|
|
end
|
|
})
|
|
else
|
|
UIManager:show(InfoMessage:new{
|
|
text = _("Could not save file to:\n") .. path,
|
|
timeout = 3,
|
|
})
|
|
end
|
|
end
|
|
|
|
function DropBox:config(item, callback)
|
|
local text_info = "How to generate Access Token:\n"..
|
|
"1. Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps.\n"..
|
|
"2. Click on >>Create App<<, then select >>Dropbox API app<<.\n"..
|
|
"3. Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder.\n"..
|
|
"4. Enter the >>App Name<< that you prefer (e.g. KOReader).\n"..
|
|
"5. Now, click on the >>Create App<< button.\n" ..
|
|
"6. When your new App is successfully created, please click on the Generate button.\n"..
|
|
"7. Under the 'Generated access token' section, then enter code in Dropbox token field."
|
|
local hint_top = _("Your Dropbox name")
|
|
local text_top = ""
|
|
local hint_bottom = _("Dropbox token\n\n\n\n ")
|
|
local text_bottom = ""
|
|
local title
|
|
local text_button_right = _("Add")
|
|
if item then
|
|
title = _("Edit Dropbox account")
|
|
text_button_right = _("Apply")
|
|
text_top = item.text
|
|
text_bottom = item.password
|
|
else
|
|
title = _("Add Dropbox account")
|
|
end
|
|
self.settings_dialog = MultiInputDialog:new {
|
|
title = title,
|
|
fields = {
|
|
{
|
|
text = text_top,
|
|
hint = hint_top ,
|
|
},
|
|
{
|
|
text = text_bottom,
|
|
hint = hint_bottom,
|
|
scroll = false,
|
|
},
|
|
},
|
|
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_right,
|
|
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",
|
|
}
|
|
self.settings_dialog:onShowKeyboard()
|
|
UIManager:show(self.settings_dialog)
|
|
end
|
|
|
|
function DropBox:info(token)
|
|
local info = DropBoxApi:fetchInfo(token)
|
|
local info_text
|
|
if info and info.name then
|
|
info_text = T(_"Type: %1\nName: %2\nEmail: %3\nCounty: %4",
|
|
"Dropbox",info.name.display_name, info.email, info.country)
|
|
else
|
|
info_text = _("No information available")
|
|
end
|
|
UIManager:show(InfoMessage:new{text = info_text})
|
|
end
|
|
|
|
return DropBox
|