diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index be99d8049..9966480da 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -1,71 +1,21 @@ local FileManagerHistory = require("apps/filemanager/filemanagerhistory") local InputContainer = require("ui/widget/container/inputcontainer") local FrameContainer = require("ui/widget/container/framecontainer") -local CenterContainer = require("ui/widget/container/centercontainer") local FileManagerMenu = require("apps/filemanager/filemanagermenu") local DocumentRegistry = require("document/documentregistry") local TextWidget = require("ui/widget/textwidget") local FileChooser = require("ui/widget/filechooser") local VerticalSpan = require("ui/widget/verticalspan") local VerticalGroup = require("ui/widget/verticalgroup") -local ButtonTable = require("ui/widget/buttontable") -local GestureRange = require("ui/gesturerange") +local ButtonDialog = require("ui/widget/buttondialog") local UIManager = require("ui/uimanager") -local Input = require("ui/input") local Font = require("ui/font") local Screen = require("ui/screen") local Geom = require("ui/geometry") -local Device = require("ui/device") local Event = require("ui/event") local DEBUG = require("dbg") local _ = require("gettext") -local FileDialog = InputContainer:new{ - buttons = nil, - tap_close_callback = nil, -} - -function FileDialog:init() - if Device:hasKeyboard() then - self.key_events = { - AnyKeyPressed = { { Input.group.Any }, - seqtext = "any key", doc = _("close dialog") } - } - else - self.ges_events.TapClose = { - GestureRange:new{ - ges = "tap", - range = Geom:new{ - x = 0, y = 0, - w = Screen:getWidth(), - h = Screen:getHeight(), - } - } - } - end - self[1] = CenterContainer:new{ - dimen = Screen:getSize(), - FrameContainer:new{ - ButtonTable:new{ - width = Screen:getWidth()*0.9, - buttons = self.buttons, - }, - background = 0, - bordersize = 2, - radius = 7, - padding = 2, - } - } -end - -function FileDialog:onTapClose() - UIManager:close(self) - if self.tap_close_callback then - self.tap_close_callback() - end - return true -end - local FileManager = InputContainer:extend{ title = _("FileManager"), width = Screen:getWidth(), @@ -127,7 +77,7 @@ function FileManager:init() function file_chooser:onFileHold(file) --DEBUG("hold file", file) - self.file_dialog = FileDialog:new{ + self.file_dialog = ButtonDialog:new{ buttons = { { { diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index b86154799..b025ff08c 100644 --- a/frontend/apps/filemanager/filemanagerhistory.lua +++ b/frontend/apps/filemanager/filemanagerhistory.lua @@ -1,12 +1,15 @@ local InputContainer = require("ui/widget/container/inputcontainer") local CenterContainer = require("ui/widget/container/centercontainer") local Menu = require("ui/widget/menu") +local ButtonDialog = require("ui/widget/buttondialog") local Screen = require("ui/screen") local UIManager = require("ui/uimanager") local DocSettings = require("docsettings") local DEBUG = require("dbg") local _ = require("gettext") +local history_dir = "./history/" + local FileManagerHistory = InputContainer:extend{ hist_menu_title = _("History"), } @@ -19,25 +22,43 @@ function FileManagerHistory:onSetDimensions(dimen) self.dimen = dimen end -function FileManagerHistory:onShowHist() - self:updateItemTable() +function FileManagerHistory:onMenuHold(item) + self.histfile_dialog = ButtonDialog:new{ + buttons = { + { + { + text = _("Delete"), + callback = function() + os.remove(history_dir..item.histfile) + self._manager:updateItemTable() + UIManager:close(self.histfile_dialog) + end, + }, + }, + }, + } + UIManager:show(self.histfile_dialog) + return true +end +function FileManagerHistory:onShowHist() local menu_container = CenterContainer:new{ dimen = Screen:getSize(), } - local hist_menu = Menu:new{ - title = _("History"), - item_table = self.hist, + 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() - table.insert(menu_container, hist_menu) + table.insert(menu_container, self.hist_menu) - hist_menu.close_callback = function() + self.hist_menu.close_callback = function() UIManager:close(menu_container) end @@ -58,7 +79,6 @@ end function FileManagerHistory:updateItemTable() function readHistDir(re) local sorted_files = {} - local history_dir = "./history/" for f in lfs.dir(history_dir) do local path = history_dir..f if lfs.attributes(path, "mode") == "file" then @@ -70,6 +90,7 @@ function FileManagerHistory:updateItemTable() table.insert(re, { dir = DocSettings:getPathFromHistory(v.file), name = DocSettings:getNameFromHistory(v.file), + histfile = v.file, }) end end @@ -80,11 +101,13 @@ function FileManagerHistory:updateItemTable() for _,v in pairs(last_files) do table.insert(self.hist, { text = v.name, + histfile = v.histfile, callback = function() showReaderUI(v.dir .. "/" .. v.name) end }) end + self.hist_menu:swithItemTable(self.hist_menu_title, self.hist) end -return FileManagerHistory \ No newline at end of file +return FileManagerHistory diff --git a/frontend/ui/reader/readerhighlight.lua b/frontend/ui/reader/readerhighlight.lua index 3ffe3b704..9e3e8f2a3 100644 --- a/frontend/ui/reader/readerhighlight.lua +++ b/frontend/ui/reader/readerhighlight.lua @@ -1,63 +1,14 @@ local InputContainer = require("ui/widget/container/inputcontainer") -local CenterContainer = require("ui/widget/container/centercontainer") -local FrameContainer = require("ui/widget/container/framecontainer") local GestureRange = require("ui/gesturerange") local Geom = require("ui/geometry") local Screen = require("ui/screen") local Device = require("ui/device") local Event = require("ui/event") local UIManager = require("ui/uimanager") -local ButtonTable = require("ui/widget/buttontable") -local Input = require("ui/input") +local ButtonDialog = require("ui/widget/buttondialog") local DEBUG = require("dbg") local _ = require("gettext") -local HighlightDialog = InputContainer:new{ - buttons = nil, - tap_close_callback = nil, -} - -function HighlightDialog:init() - if Device:hasKeyboard() then - self.key_events = { - AnyKeyPressed = { { Input.group.Any }, - seqtext = "any key", doc = _("close dialog") } - } - else - self.ges_events.TapClose = { - GestureRange:new{ - ges = "tap", - range = Geom:new{ - x = 0, y = 0, - w = Screen:getWidth(), - h = Screen:getHeight(), - } - } - } - end - self[1] = CenterContainer:new{ - dimen = Screen:getSize(), - FrameContainer:new{ - ButtonTable:new{ - width = Screen:getWidth()*0.9, - buttons = self.buttons, - }, - background = 0, - bordersize = 2, - radius = 7, - padding = 2, - } - } -end - -function HighlightDialog:onTapClose() - UIManager:close(self) - if self.tap_close_callback then - self.tap_close_callback() - end - return true -end - local ReaderHighlight = InputContainer:new{} function ReaderHighlight:init() @@ -228,7 +179,7 @@ function ReaderHighlight:onTapXPointerSavedHighlight(ges) end function ReaderHighlight:onShowHighlightDialog(page, index) - self.edit_highlight_dialog = HighlightDialog:new{ + self.edit_highlight_dialog = ButtonDialog:new{ buttons = { { { @@ -327,7 +278,7 @@ function ReaderHighlight:onHoldRelease(arg, ges) self.selected_word = nil elseif self.selected_text then DEBUG("show highlight dialog") - self.highlight_dialog = HighlightDialog:new{ + self.highlight_dialog = ButtonDialog:new{ buttons = { { { diff --git a/frontend/ui/widget/buttondialog.lua b/frontend/ui/widget/buttondialog.lua new file mode 100644 index 000000000..d29696ad2 --- /dev/null +++ b/frontend/ui/widget/buttondialog.lua @@ -0,0 +1,58 @@ +local ButtonTable = require("ui/widget/buttontable") +local InputContainer = require("ui/widget/container/inputcontainer") +local FrameContainer = require("ui/widget/container/framecontainer") +local CenterContainer = require("ui/widget/container/centercontainer") +local Device = require("ui/device") +local GestureRange = require("ui/gesturerange") +local Geom = require("ui/geometry") +local Input = require("ui/input") +local Screen = require("ui/screen") +local UIManager = require("ui/uimanager") + +local ButtonDialog = InputContainer:new{ + buttons = nil, + tap_close_callback = nil, +} + +function ButtonDialog:init() + if Device:hasKeyboard() then + self.key_events = { + AnyKeyPressed = { { Input.group.Any }, + seqtext = "any key", doc = _("close dialog") } + } + else + self.ges_events.TapClose = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + } + } + } + end + self[1] = CenterContainer:new{ + dimen = Screen:getSize(), + FrameContainer:new{ + ButtonTable:new{ + width = Screen:getWidth()*0.9, + buttons = self.buttons, + }, + background = 0, + bordersize = 2, + radius = 7, + padding = 2, + } + } +end + +function ButtonDialog:onTapClose() + UIManager:close(self) + if self.tap_close_callback then + self.tap_close_callback() + end + return true +end + +return ButtonDialog