diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua old mode 100644 new mode 100755 index ba3bec518..5b423bc62 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -6,7 +6,7 @@ local FileManagerMenu = require("apps/filemanager/filemanagermenu") local DocumentRegistry = require("document/documentregistry") local VerticalGroup = require("ui/widget/verticalgroup") local Screenshoter = require("ui/widget/screenshoter") -local ButtonDialog = require("ui/widget/buttondialog") +local ButtonDialogTitle = require("ui/widget/buttondialogtitle") local InputDialog = require("ui/widget/inputdialog") local VerticalSpan = require("ui/widget/verticalspan") local FileChooser = require("ui/widget/filechooser") @@ -262,7 +262,10 @@ function FileManager:init() } }) end - self.file_dialog = ButtonDialog:new{ + + self.file_dialog = ButtonDialogTitle:new{ + title = file:match("([^/]+)$"), + title_align = "center", buttons = buttons, } UIManager:show(self.file_dialog) diff --git a/frontend/ui/widget/buttondialogtitle.lua b/frontend/ui/widget/buttondialogtitle.lua new file mode 100755 index 000000000..bffb5a532 --- /dev/null +++ b/frontend/ui/widget/buttondialogtitle.lua @@ -0,0 +1,110 @@ +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("device") +local GestureRange = require("ui/gesturerange") +local Geom = require("ui/geometry") +local Screen = require("device").screen +local UIManager = require("ui/uimanager") +local _ = require("gettext") +local Blitbuffer = require("ffi/blitbuffer") +local TextBoxWidget = require("ui/widget/textboxwidget") +local Font = require("ui/font") +local VerticalGroup = require("ui/widget/verticalgroup") +local LineWidget = require("ui/widget/linewidget") +local VerticalSpan = require("ui/widget/verticalspan") + +local ButtonDialogTitle = InputContainer:new{ + title = nil, + title_align = nil, + buttons = nil, + tap_close_callback = nil, +} + +function ButtonDialogTitle:init() + self.medium_font_face = Font:getFace("ffont", 20) + self.large_font_face = Font:getFace("ffont", 25) + if Device:hasKeys() then + self.key_events = { + Close = { {"Back"}, doc = "close button dialog" } + } + end + if Device:isTouchDevice() then + 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{ + VerticalGroup:new{ + align = "center", + VerticalSpan:new{ width = 2 }, + TextBoxWidget:new{ + text = self.title, + width = Screen:getWidth() * 0.8 , + face = self.medium_font_face, + bold = true, + alignment = self.title_align or "left", + }, + VerticalSpan:new{ width = 2 }, + LineWidget:new{ + dimen = Geom:new{ + w = Screen:getWidth() * 0.9, + h = 1, + } + }, + VerticalSpan:new{ width = 2 }, + ButtonTable:new{ + width = Screen:getWidth() * 0.9, + buttons = self.buttons, + show_parent = self, + }, + }, + background = Blitbuffer.COLOR_WHITE, + bordersize = 2, + radius = 7, + padding = 2, + } + } +end + +function ButtonDialogTitle:onShow() + UIManager:setDirty(self, function() + return "ui", self[1][1].dimen + end) +end + +function ButtonDialogTitle:onCloseWidget() + UIManager:setDirty(nil, function() + return "partial", self[1][1].dimen + end) +end + +function ButtonDialogTitle:onTapClose() + UIManager:close(self) + if self.tap_close_callback then + self.tap_close_callback() + end + return true +end + +function ButtonDialogTitle:onClose() + self:onTapClose() + return true +end + +function ButtonDialogTitle:paintTo(...) + InputContainer.paintTo(self, ...) + self.dimen = self[1][1].dimen -- FrameContainer +end + +return ButtonDialogTitle