2
0
mirror of https://github.com/koreader/koreader synced 2024-11-16 06:12:56 +00:00
koreader/frontend/apps/filemanager/filemanagerhistory.lua

106 lines
3.0 KiB
Lua
Raw Normal View History

2013-10-18 20:38:07 +00:00
local InputContainer = require("ui/widget/container/inputcontainer")
local CenterContainer = require("ui/widget/container/centercontainer")
local ButtonDialog = require("ui/widget/buttondialog")
2014-08-14 11:49:42 +00:00
local lfs = require("libs/libkoreader-lfs")
local DataStorage = require("datastorage")
2013-10-18 20:38:07 +00:00
local UIManager = require("ui/uimanager")
local DocSettings = require("docsettings")
2014-08-14 11:49:42 +00:00
local Menu = require("ui/widget/menu")
local joinPath = require("ffi/util").joinPath
local Screen = require("device").screen
2013-10-18 20:38:07 +00:00
local _ = require("gettext")
local history_dir = DataStorage:getHistoryDir()
2013-10-18 20:38:07 +00:00
local FileManagerHistory = InputContainer:extend{
2014-03-13 13:52:43 +00:00
hist_menu_title = _("History"),
2013-08-14 09:29:05 +00:00
}
function FileManagerHistory:init()
2014-03-13 13:52:43 +00:00
self.ui.menu:registerToMainMenu(self)
2013-08-14 09:29:05 +00:00
end
2016-02-17 07:10:23 +00:00
function FileManagerHistory:addToMainMenu(tab_item_table)
-- insert table to info tab of filemanager menu
table.insert(tab_item_table.info, {
text = self.hist_menu_title,
callback = function()
self:onShowHist()
end,
})
end
function FileManagerHistory:updateItemTable()
local ReaderUI = require("apps/reader/readerui")
self.hist = {}
for f in lfs.dir(history_dir) do
local path = joinPath(history_dir, f)
if lfs.attributes(path, "mode") == "file" then
local name = DocSettings:getNameFromHistory(f)
table.insert(self.hist, {
date = lfs.attributes(path, "modification"),
text = name,
histfile = f,
callback = function()
ReaderUI:showReader(
DocSettings:getPathFromHistory(f).. "/" .. name)
end
})
end
end
table.sort(self.hist, function(v1, v2) return v1.date > v2.date end)
self.hist_menu:swithItemTable(self.hist_menu_title, self.hist)
end
2013-08-14 09:29:05 +00:00
function FileManagerHistory:onSetDimensions(dimen)
2014-03-13 13:52:43 +00:00
self.dimen = dimen
2013-08-14 09:29:05 +00:00
end
function FileManagerHistory:onMenuHold(item)
2014-03-13 13:52:43 +00:00
self.histfile_dialog = ButtonDialog:new{
buttons = {
{
{
text = _("Remove this item from history"),
2014-03-13 13:52:43 +00:00
callback = function()
os.remove(joinPath(history_dir, item.histfile))
2014-03-13 13:52:43 +00:00
self._manager:updateItemTable()
UIManager:close(self.histfile_dialog)
end,
},
},
},
}
UIManager:show(self.histfile_dialog)
return true
end
2013-08-14 09:29:05 +00:00
function FileManagerHistory:onShowHist()
2014-03-13 13:52:43 +00:00
local menu_container = CenterContainer:new{
dimen = Screen:getSize(),
}
2013-08-14 09:29:05 +00:00
2014-03-13 13:52:43 +00:00
self.hist_menu = Menu:new{
ui = self.ui,
width = Screen:getWidth()-50,
height = Screen:getHeight()-50,
show_parent = menu_container,
onMenuHold = self.onMenuHold,
_manager = self,
}
self:updateItemTable()
2013-08-14 09:29:05 +00:00
2014-03-13 13:52:43 +00:00
table.insert(menu_container, self.hist_menu)
2013-08-14 09:29:05 +00:00
2014-03-13 13:52:43 +00:00
self.hist_menu.close_callback = function()
UIManager:close(menu_container)
end
2013-08-14 09:29:05 +00:00
2014-03-13 13:52:43 +00:00
UIManager:show(menu_container)
return true
2013-08-14 09:29:05 +00:00
end
return FileManagerHistory