mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
fix #1034 by refactoring path chooser to a download manager
Now directories visible in the filemanager should also be visible in the path chooser
This commit is contained in:
36
frontend/ui/downloadmgr.lua
Normal file
36
frontend/ui/downloadmgr.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
local PathChooser = require("ui/widget/pathchooser")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local util = require("ffi/util")
|
||||
local _ = require("gettext")
|
||||
|
||||
local DownloadMgr = {
|
||||
title = _("Choose download directory"),
|
||||
onConfirm = function() end,
|
||||
}
|
||||
|
||||
function DownloadMgr:new(o)
|
||||
local o = o or {}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
end
|
||||
|
||||
function DownloadMgr:chooseDir()
|
||||
local lastdir = G_reader_settings:readSetting("lastdir")
|
||||
local download_dir = G_reader_settings:readSetting("download_dir")
|
||||
local path_chooser = PathChooser:new{
|
||||
title = self.title,
|
||||
path = download_dir and (download_dir .. "/..") or lastdir,
|
||||
show_hidden = G_reader_settings:readSetting("show_hidden"),
|
||||
onConfirm = function(path)
|
||||
-- hack to remove additional parent
|
||||
if path:sub(-3, -1) == "/.." then
|
||||
path = path:sub(1, -4)
|
||||
end
|
||||
self.onConfirm(util.realpath(path))
|
||||
end
|
||||
}
|
||||
UIManager:show(path_chooser)
|
||||
end
|
||||
|
||||
return DownloadMgr
|
||||
@@ -1,7 +1,6 @@
|
||||
local MultiInputDialog = require("ui/widget/multiinputdialog")
|
||||
local ButtonDialog = require("ui/widget/buttondialog")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local PathChooser = require("ui/widget/pathchooser")
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local OPDSParser = require("ui/opdsparser")
|
||||
local NetworkMgr = require("ui/networkmgr")
|
||||
@@ -456,17 +455,13 @@ function OPDSBrowser:showDownloads(item)
|
||||
{
|
||||
text = _("Set download directory"),
|
||||
callback = function()
|
||||
local lastdir = G_reader_settings:readSetting("lastdir")
|
||||
local download_dir = G_reader_settings:readSetting("download_dir")
|
||||
local path_chooser = PathChooser:new{
|
||||
require("ui/downloadmgr"):new{
|
||||
title = _("Choose download directory"),
|
||||
path = download_dir and (download_dir .. "/..") or lastdir,
|
||||
onConfirm = function(path)
|
||||
DEBUG("set download directory to", path)
|
||||
G_reader_settings:saveSetting("download_dir", path)
|
||||
end,
|
||||
}
|
||||
UIManager:show(path_chooser)
|
||||
}:chooseDir()
|
||||
end,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
local PathChooser = require("ui/widget/pathchooser")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local util = require("ffi/util")
|
||||
@@ -126,19 +125,14 @@ end
|
||||
function CalibreCompanion:setInboxDir(host, port)
|
||||
local lastdir = G_reader_settings:readSetting("lastdir") or "."
|
||||
local calibre_device = self
|
||||
local path_chooser = PathChooser:new{
|
||||
require("ui/downloadmgr"):new{
|
||||
title = _("Choose inbox"),
|
||||
path = lastdir .. "/..",
|
||||
onConfirm = function(inbox)
|
||||
if inbox:sub(-3, -1) == "/.." then
|
||||
inbox = inbox:sub(1, -4)
|
||||
end
|
||||
DEBUG("set inbox directory", inbox)
|
||||
G_reader_settings:saveSetting("inbox_dir", inbox)
|
||||
calibre_device:initCalibreMQ(host, port)
|
||||
end,
|
||||
}
|
||||
UIManager:show(path_chooser)
|
||||
}:chooseDir()
|
||||
end
|
||||
|
||||
function CalibreCompanion:connect()
|
||||
|
||||
@@ -6,7 +6,6 @@ local FileManager = require("apps/filemanager/filemanager")
|
||||
local VerticalGroup = require("ui/widget/verticalgroup")
|
||||
local VerticalSpan = require("ui/widget/verticalspan")
|
||||
local ButtonDialog = require("ui/widget/buttondialog")
|
||||
local PathChooser = require("ui/widget/pathchooser")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
local TextWidget = require("ui/widget/textwidget")
|
||||
local DocSettings = require("docsettings")
|
||||
@@ -235,21 +234,14 @@ end
|
||||
function ZSync:subscribe()
|
||||
DEBUG("subscribe documents")
|
||||
self.received = {}
|
||||
local lastdir = G_reader_settings:readSetting("lastdir")
|
||||
local inbox_dir = G_reader_settings:readSetting("inbox_dir")
|
||||
local zsync = self
|
||||
local path_chooser = PathChooser:new{
|
||||
require("ui/downloadmgr"):new{
|
||||
title = _("Choose inbox"),
|
||||
path = inbox_dir and (inbox_dir .. "/..") or lastdir,
|
||||
onConfirm = function(inbox)
|
||||
if inbox:sub(-3, -1) == "/.." then
|
||||
inbox = inbox:sub(1, -4)
|
||||
end
|
||||
G_reader_settings:saveSetting("inbox_dir", inbox)
|
||||
zsync:onChooseInbox(inbox)
|
||||
end,
|
||||
}
|
||||
UIManager:show(path_chooser)
|
||||
}:chooseDir()
|
||||
end
|
||||
|
||||
function ZSync:unsubscribe()
|
||||
|
||||
Reference in New Issue
Block a user