mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
@@ -37,6 +37,30 @@ function FileChooser:init()
|
||||
end
|
||||
return true
|
||||
end
|
||||
self.list = function(path, dirs, files)
|
||||
-- lfs.dir directory without permission will give error
|
||||
local ok, iter, dir_obj = pcall(lfs.dir, path)
|
||||
if ok then
|
||||
for f in iter, dir_obj do
|
||||
if self.show_hidden or not string.match(f, "^%.[^.]") then
|
||||
local filename = path.."/"..f
|
||||
local attributes = lfs.attributes(filename)
|
||||
if attributes ~= nil then
|
||||
if attributes.mode == "directory" and f ~= "." and f~=".." then
|
||||
if self.dir_filter(filename) then
|
||||
table.insert(dirs, {name = f, attr = attributes})
|
||||
end
|
||||
elseif attributes.mode == "file" then
|
||||
if self.file_filter == nil or self.file_filter(filename) then
|
||||
table.insert(files, {name = f, attr = attributes})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- circumvent string collating in Kobo devices. See issue koreader/koreader#686
|
||||
if Device:isKobo() then
|
||||
self.strcoll = function(a, b) return a < b end
|
||||
@@ -49,27 +73,7 @@ function FileChooser:genItemTableFromPath(path)
|
||||
local dirs = {}
|
||||
local files = {}
|
||||
|
||||
-- lfs.dir directory without permission will give error
|
||||
local ok, iter, dir_obj = pcall(lfs.dir, self.path)
|
||||
if ok then
|
||||
for f in iter, dir_obj do
|
||||
if self.show_hidden or not string.match(f, "^%.[^.]") then
|
||||
local filename = self.path.."/"..f
|
||||
local attributes = lfs.attributes(filename)
|
||||
if attributes ~= nil then
|
||||
if attributes.mode == "directory" and f ~= "." and f~=".." then
|
||||
if self.dir_filter(filename) then
|
||||
table.insert(dirs, {name = f, attr = attributes})
|
||||
end
|
||||
elseif attributes.mode == "file" then
|
||||
if self.file_filter(filename) then
|
||||
table.insert(files, {name = f, attr = attributes})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
self.list(path, dirs, files)
|
||||
|
||||
local sorting = nil
|
||||
local reverse = self.reverse_collate
|
||||
@@ -99,19 +103,13 @@ function FileChooser:genItemTableFromPath(path)
|
||||
|
||||
local item_table = {}
|
||||
for i, dir in ipairs(dirs) do
|
||||
local dirs = {}
|
||||
local files = {}
|
||||
local subdir_path = self.path.."/"..dir.name
|
||||
local items = 0
|
||||
ok, iter, dir_obj = pcall(lfs.dir, subdir_path)
|
||||
if ok then
|
||||
for f in iter, dir_obj do
|
||||
items = items + 1
|
||||
end
|
||||
-- exclude "." and ".."
|
||||
items = items - 2
|
||||
end
|
||||
self.list(subdir_path, dirs, files)
|
||||
local items = #dirs + #files
|
||||
local istr = util.template(
|
||||
items == 0 and _("0 items")
|
||||
or items == 1 and _("1 item")
|
||||
items == 1 and _("1 item")
|
||||
or _("%1 items"), items)
|
||||
table.insert(item_table, {
|
||||
text = dir.name.."/",
|
||||
|
||||
Reference in New Issue
Block a user