|
|
|
require "ui/widget/base"
|
|
|
|
require "ui/widget/line"
|
|
|
|
|
|
|
|
ButtonTable = InputContainer:new{
|
|
|
|
buttons = {
|
|
|
|
{
|
|
|
|
{text="OK", enabled=true, callback=nil},
|
|
|
|
{text="Cancel", enabled=false, callback=nil},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
tap_close_callback = nil,
|
|
|
|
}
|
|
|
|
|
|
|
|
function ButtonTable:init()
|
|
|
|
if Device:hasKeyboard() then
|
|
|
|
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
|
|
|
|
local vertical_group = VerticalGroup:new{}
|
|
|
|
local horizontal_sep = LineWidget:new{
|
|
|
|
background = 8,
|
|
|
|
dimen = Geom:new{
|
|
|
|
w = Screen:getWidth()*0.9,
|
|
|
|
h = 1,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for i = 1, #self.buttons do
|
|
|
|
local horizontal_group = HorizontalGroup:new{}
|
|
|
|
local line = self.buttons[i]
|
|
|
|
for j = 1, #line do
|
|
|
|
local button = Button:new{
|
|
|
|
text = line[j].text,
|
|
|
|
enabled = line[j].enabled,
|
|
|
|
callback = line[j].callback,
|
|
|
|
width = Screen:getWidth()*0.9/#line,
|
|
|
|
bordersize = 0,
|
|
|
|
text_font_face = "cfont",
|
|
|
|
text_font_size = scaleByDPI(18),
|
|
|
|
}
|
|
|
|
local button_dim = button:getSize()
|
|
|
|
local vertical_sep = LineWidget:new{
|
|
|
|
background = 8,
|
|
|
|
dimen = Geom:new{
|
|
|
|
w = scaleByDPI(1),
|
|
|
|
h = button_dim.h,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
table.insert(horizontal_group, button)
|
|
|
|
if j < #line then
|
|
|
|
table.insert(horizontal_group, vertical_sep)
|
|
|
|
end
|
|
|
|
end -- end for each button
|
|
|
|
table.insert(vertical_group, horizontal_group)
|
|
|
|
if i < #self.buttons then
|
|
|
|
table.insert(vertical_group, VerticalSpan:new{ width = scaleByDPI(2) })
|
|
|
|
table.insert(vertical_group, horizontal_sep)
|
|
|
|
table.insert(vertical_group, VerticalSpan:new{ width = scaleByDPI(2) })
|
|
|
|
end
|
|
|
|
end -- end for each button line
|
|
|
|
self[1] = CenterContainer:new{
|
|
|
|
dimen = Screen:getSize(),
|
|
|
|
FrameContainer:new{
|
|
|
|
vertical_group,
|
|
|
|
background = 0,
|
|
|
|
bordersize = 2,
|
|
|
|
radius = 7,
|
|
|
|
padding = 2,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
function ButtonTable:onTapClose()
|
|
|
|
UIManager:close(self)
|
|
|
|
if self.tap_close_callback then
|
|
|
|
self.tap_close_callback()
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
end
|