diff --git a/frontend/ui/notification.lua b/frontend/ui/notification.lua new file mode 100644 index 000000000..7a63842d8 --- /dev/null +++ b/frontend/ui/notification.lua @@ -0,0 +1,52 @@ +require "ui/ui" +require "ui/widget" + +--[[ +Widget that displays a tiny notification on top of screen +--]] +Notification = InputContainer:new{ + face = Font:getFace("infofont", 20), + text = "Null Message", + timeout = nil, + + key_events = { + AnyKeyPressed = { { Input.group.Any }, seqtext = "any key", doc = "close dialog" } + } +} + +function Notification:init() + -- we construct the actual content here because self.text is only available now + self[1] = CenterContainer:new{ + dimen = Geom:new{ + w = Screen:getWidth(), + h = Screen:getHeight()/10, + }, + ignore = "height", + FrameContainer:new{ + background = 0, + radius = 0, + HorizontalGroup:new{ + align = "center", + TextBoxWidget:new{ + text = self.text, + face = self.face, + } + } + } + } +end + +function Notification:onShow() + -- triggered by the UIManager after we got successfully shown (not yet painted) + if self.timeout then + UIManager:scheduleIn(self.timeout, function() UIManager:close(self) end) + end + return true +end + +function Notification:onAnyKeyPressed() + -- triggered by our defined key events + UIManager:close(self) + return true +end + diff --git a/frontend/ui/reader/readerbookmark.lua b/frontend/ui/reader/readerbookmark.lua index 038d9a680..015dcd0d0 100644 --- a/frontend/ui/reader/readerbookmark.lua +++ b/frontend/ui/reader/readerbookmark.lua @@ -1,3 +1,5 @@ +require "ui/notification" + ReaderBookmark = InputContainer:new{ bm_menu_title = "Bookmarks", bookmarks = nil, @@ -51,7 +53,7 @@ function ReaderBookmark:onAddBookmark() if not self:addBookmark(pn_or_xp) then noti_text = "Page already marked!" end - UIManager:show(InfoMessage:new{ + UIManager:show(Notification:new{ text = noti_text, timeout = 3 })