2
0
mirror of https://github.com/koreader/koreader synced 2024-11-13 19:11:25 +00:00
koreader/frontend/ui/widget/confirmbox.lua

108 lines
3.1 KiB
Lua
Raw Normal View History

2013-10-18 20:38:07 +00:00
local CenterContainer = require("ui/widget/container/centercontainer")
local FrameContainer = require("ui/widget/container/centercontainer")
local FocusManager = require("ui/widget/focusmanager")
local Button = require("ui/widget/button")
local VerticalGroup = require("ui/widget/verticalgroup")
local ImageWidget = require("ui/widget/imagewidget")
local TextBoxWidget = require("ui/widget/textboxwidget")
local Font = require("ui/font")
local UIManager = require("ui/uimanager")
local Screen = require("ui/screen")
local HorizontalGroup = require("ui/widget/horizontalgroup")
local VerticalSpan = require("ui/widget/verticalspan")
local HorizontalSpan = require("ui/widget/horizontalspan")
2013-10-22 18:51:29 +00:00
local DEBUG = require("dbg")
local _ = require("gettext")
2013-10-18 20:38:07 +00:00
-- screen
--[[
Widget that shows a message and OK/Cancel buttons
]]
2013-10-18 20:38:07 +00:00
local ConfirmBox = FocusManager:new{
2014-03-13 13:52:43 +00:00
text = _("no text"),
width = nil,
ok_text = _("OK"),
cancel_text = _("Cancel"),
ok_callback = function() end,
cancel_callback = function() end,
}
function ConfirmBox:init()
2014-03-13 13:52:43 +00:00
-- calculate box width on the fly if not given
if not self.width then
self.width = Screen:getWidth() - 200
end
-- build bottons
self.key_events.Close = { {{"Home","Back"}}, doc = _("cancel") }
self.key_events.Select = { {{"Enter","Press"}}, doc = _("chose selected option") }
2014-03-13 13:52:43 +00:00
local ok_button = Button:new{
text = self.ok_text,
callback = function()
self.ok_callback()
UIManager:close(self)
end,
2014-05-01 10:37:12 +00:00
show_parent = self,
2014-03-13 13:52:43 +00:00
}
local cancel_button = Button:new{
text = self.cancel_text,
preselect = true,
callback = function()
self.cancel_callback()
UIManager:close(self)
end,
2014-05-01 10:37:12 +00:00
show_parent = self,
2014-03-13 13:52:43 +00:00
}
2014-03-13 13:52:43 +00:00
self.layout = { { ok_button, cancel_button } }
self.selected.x = 2 -- Cancel is default
2014-03-13 13:52:43 +00:00
self[1] = CenterContainer:new{
dimen = Screen:getSize(),
FrameContainer:new{
margin = 2,
background = 0,
padding = 10,
HorizontalGroup:new{
ImageWidget:new{
file = "resources/info-i.png"
},
HorizontalSpan:new{ width = 10 },
VerticalGroup:new{
align = "left",
TextBoxWidget:new{
text = self.text,
face = Font:getFace("cfont", 30),
width = self.width,
},
VerticalSpan:new{ width = 10 },
HorizontalGroup:new{
ok_button,
HorizontalSpan:new{ width = 10 },
cancel_button,
}
}
}
}
}
end
function ConfirmBox:onClose()
2014-03-13 13:52:43 +00:00
UIManager:close(self)
return true
end
function ConfirmBox:onSelect()
2014-03-13 13:52:43 +00:00
DEBUG("selected:", self.selected.x)
if self.selected.x == 1 then
self:ok_callback()
else
self:cancel_callback()
end
UIManager:close(self)
return true
end
2013-10-18 20:38:07 +00:00
return ConfirmBox