mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
bug fix & rewrite filemanager
This commit is contained in:
137
reader.lua
137
reader.lua
@@ -4,34 +4,15 @@ require "defaults"
|
||||
package.path = "./frontend/?.lua"
|
||||
package.cpath = "/usr/lib/lua/?.so"
|
||||
require "ui/uimanager"
|
||||
require "ui/widget/filechooser"
|
||||
require "ui/widget/infomessage"
|
||||
require "ui/readerui"
|
||||
require "document/document"
|
||||
require "settings"
|
||||
require "dbg"
|
||||
require "gettext"
|
||||
require "apps/filemanager/fm"
|
||||
|
||||
|
||||
HomeMenu = InputContainer:new{
|
||||
item_table = {},
|
||||
key_events = {
|
||||
TapShowMenu = { {"Home"}, doc = _("Show Home Menu")},
|
||||
},
|
||||
ges_events = {
|
||||
TapShowMenu = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
x = 0, y = 0,
|
||||
w = Screen:getWidth(),
|
||||
h = 25,
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
function exitReader()
|
||||
G_reader_settings:close()
|
||||
|
||||
@@ -58,70 +39,7 @@ function exitReader()
|
||||
os.exit(0)
|
||||
end
|
||||
|
||||
function HomeMenu:setUpdateItemTable()
|
||||
function readHistDir(order_arg, re)
|
||||
local pipe_out = io.popen("ls "..order_arg.." -1 ./history")
|
||||
for f in pipe_out:lines() do
|
||||
table.insert(re, {
|
||||
dir = DocSettings:getPathFromHistory(f),
|
||||
name = DocSettings:getNameFromHistory(f),
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local hist_sub_item_table = {}
|
||||
local last_files = {}
|
||||
readHistDir("-c", last_files)
|
||||
for _,v in pairs(last_files) do
|
||||
table.insert(hist_sub_item_table, {
|
||||
text = v.name,
|
||||
callback = function()
|
||||
showReader(v.dir .. "/" .. v.name)
|
||||
end
|
||||
})
|
||||
end
|
||||
table.insert(self.item_table, {
|
||||
text = _("Last documents"),
|
||||
sub_item_table = hist_sub_item_table,
|
||||
})
|
||||
|
||||
table.insert(self.item_table, {
|
||||
text = _("Exit"),
|
||||
callback = function()
|
||||
exitReader()
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
function HomeMenu:onTapShowMenu()
|
||||
self.item_table = {}
|
||||
self:setUpdateItemTable()
|
||||
|
||||
local menu_container = CenterContainer:new{
|
||||
ignore = "height",
|
||||
dimen = Screen:getSize(),
|
||||
}
|
||||
|
||||
local home_menu = Menu:new{
|
||||
show_parent = menu_container,
|
||||
title = _("Home menu"),
|
||||
item_table = self.item_table,
|
||||
width = Screen:getWidth() - 100,
|
||||
}
|
||||
|
||||
menu_container[1] = home_menu
|
||||
|
||||
home_menu.close_callback = function ()
|
||||
UIManager:close(menu_container)
|
||||
end
|
||||
|
||||
UIManager:show(menu_container)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
function showReader(file, pass)
|
||||
function showReaderUI(file, pass)
|
||||
local document = DocumentRegistry:openDocument(file)
|
||||
if not document then
|
||||
UIManager:show(InfoMessage:new{
|
||||
@@ -141,47 +59,14 @@ function showReader(file, pass)
|
||||
end
|
||||
|
||||
function showHomePage(path)
|
||||
local exclude_dirs = {"%.sdr$"}
|
||||
|
||||
local HomePage = InputContainer:new{
|
||||
}
|
||||
|
||||
local FileManager = FileChooser:new{
|
||||
show_parent = HomePage,
|
||||
title = _("FileManager"),
|
||||
path = path,
|
||||
width = Screen:getWidth(),
|
||||
height = Screen:getHeight(),
|
||||
is_borderless = true,
|
||||
has_close_button = true,
|
||||
dir_filter = function(dirname)
|
||||
for _, pattern in ipairs(exclude_dirs) do
|
||||
if dirname:match(pattern) then return end
|
||||
end
|
||||
return true
|
||||
end,
|
||||
file_filter = function(filename)
|
||||
if DocumentRegistry:getProvider(filename) then
|
||||
return true
|
||||
end
|
||||
UIManager:show(FileManager:new{
|
||||
dimen = Screen:getSize(),
|
||||
root_path = path,
|
||||
onExit = function()
|
||||
exitReader()
|
||||
UIManager:quit()
|
||||
end
|
||||
}
|
||||
|
||||
table.insert(HomePage, FileManager)
|
||||
table.insert(HomePage, HomeMenu)
|
||||
|
||||
function FileManager:onFileSelect(file)
|
||||
showReader(file)
|
||||
return true
|
||||
end
|
||||
|
||||
function FileManager:onClose()
|
||||
exitReader()
|
||||
--UIManager:quit()
|
||||
return true
|
||||
end
|
||||
|
||||
UIManager:show(HomePage)
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
@@ -243,11 +128,11 @@ if ARGV[argidx] and ARGV[argidx] ~= "" then
|
||||
if lfs.attributes(ARGV[argidx], "mode") == "directory" then
|
||||
showHomePage(ARGV[argidx])
|
||||
elseif lfs.attributes(ARGV[argidx], "mode") == "file" then
|
||||
showReader(ARGV[argidx])
|
||||
showReaderUI(ARGV[argidx])
|
||||
end
|
||||
UIManager:run()
|
||||
elseif last_file and lfs.attributes(last_file, "mode") == "file" then
|
||||
showReader(last_file)
|
||||
showReaderUI(last_file)
|
||||
UIManager:run()
|
||||
else
|
||||
return showusage()
|
||||
|
||||
Reference in New Issue
Block a user