fix #1034 by refactoring path chooser to a download manager

Now directories visible in the filemanager should also
be visible in the path chooser
pull/1057/head
chrox 10 years ago
parent 7a22c60256
commit 68265336f4

@ -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 MultiInputDialog = require("ui/widget/multiinputdialog")
local ButtonDialog = require("ui/widget/buttondialog") local ButtonDialog = require("ui/widget/buttondialog")
local InfoMessage = require("ui/widget/infomessage") local InfoMessage = require("ui/widget/infomessage")
local PathChooser = require("ui/widget/pathchooser")
local lfs = require("libs/libkoreader-lfs") local lfs = require("libs/libkoreader-lfs")
local OPDSParser = require("ui/opdsparser") local OPDSParser = require("ui/opdsparser")
local NetworkMgr = require("ui/networkmgr") local NetworkMgr = require("ui/networkmgr")
@ -456,17 +455,13 @@ function OPDSBrowser:showDownloads(item)
{ {
text = _("Set download directory"), text = _("Set download directory"),
callback = function() callback = function()
local lastdir = G_reader_settings:readSetting("lastdir") require("ui/downloadmgr"):new{
local download_dir = G_reader_settings:readSetting("download_dir")
local path_chooser = PathChooser:new{
title = _("Choose download directory"), title = _("Choose download directory"),
path = download_dir and (download_dir .. "/..") or lastdir,
onConfirm = function(path) onConfirm = function(path)
DEBUG("set download directory to", path) DEBUG("set download directory to", path)
G_reader_settings:saveSetting("download_dir", path) G_reader_settings:saveSetting("download_dir", path)
end, end,
} }:chooseDir()
UIManager:show(path_chooser)
end, end,
} }
}) })

@ -1,5 +1,4 @@
local InputContainer = require("ui/widget/container/inputcontainer") local InputContainer = require("ui/widget/container/inputcontainer")
local PathChooser = require("ui/widget/pathchooser")
local InfoMessage = require("ui/widget/infomessage") local InfoMessage = require("ui/widget/infomessage")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local util = require("ffi/util") local util = require("ffi/util")
@ -126,19 +125,14 @@ end
function CalibreCompanion:setInboxDir(host, port) function CalibreCompanion:setInboxDir(host, port)
local lastdir = G_reader_settings:readSetting("lastdir") or "." local lastdir = G_reader_settings:readSetting("lastdir") or "."
local calibre_device = self local calibre_device = self
local path_chooser = PathChooser:new{ require("ui/downloadmgr"):new{
title = _("Choose inbox"), title = _("Choose inbox"),
path = lastdir .. "/..",
onConfirm = function(inbox) onConfirm = function(inbox)
if inbox:sub(-3, -1) == "/.." then
inbox = inbox:sub(1, -4)
end
DEBUG("set inbox directory", inbox) DEBUG("set inbox directory", inbox)
G_reader_settings:saveSetting("inbox_dir", inbox) G_reader_settings:saveSetting("inbox_dir", inbox)
calibre_device:initCalibreMQ(host, port) calibre_device:initCalibreMQ(host, port)
end, end,
} }:chooseDir()
UIManager:show(path_chooser)
end end
function CalibreCompanion:connect() function CalibreCompanion:connect()

@ -6,7 +6,6 @@ local FileManager = require("apps/filemanager/filemanager")
local VerticalGroup = require("ui/widget/verticalgroup") local VerticalGroup = require("ui/widget/verticalgroup")
local VerticalSpan = require("ui/widget/verticalspan") local VerticalSpan = require("ui/widget/verticalspan")
local ButtonDialog = require("ui/widget/buttondialog") local ButtonDialog = require("ui/widget/buttondialog")
local PathChooser = require("ui/widget/pathchooser")
local InfoMessage = require("ui/widget/infomessage") local InfoMessage = require("ui/widget/infomessage")
local TextWidget = require("ui/widget/textwidget") local TextWidget = require("ui/widget/textwidget")
local DocSettings = require("docsettings") local DocSettings = require("docsettings")
@ -235,21 +234,14 @@ end
function ZSync:subscribe() function ZSync:subscribe()
DEBUG("subscribe documents") DEBUG("subscribe documents")
self.received = {} self.received = {}
local lastdir = G_reader_settings:readSetting("lastdir")
local inbox_dir = G_reader_settings:readSetting("inbox_dir")
local zsync = self local zsync = self
local path_chooser = PathChooser:new{ require("ui/downloadmgr"):new{
title = _("Choose inbox"), title = _("Choose inbox"),
path = inbox_dir and (inbox_dir .. "/..") or lastdir,
onConfirm = function(inbox) onConfirm = function(inbox)
if inbox:sub(-3, -1) == "/.." then
inbox = inbox:sub(1, -4)
end
G_reader_settings:saveSetting("inbox_dir", inbox) G_reader_settings:saveSetting("inbox_dir", inbox)
zsync:onChooseInbox(inbox) zsync:onChooseInbox(inbox)
end, end,
} }:chooseDir()
UIManager:show(path_chooser)
end end
function ZSync:unsubscribe() function ZSync:unsubscribe()

Loading…
Cancel
Save