mirror of
https://github.com/koreader/koreader
synced 2024-11-11 19:11:14 +00:00
75 lines
1.4 KiB
Lua
75 lines
1.4 KiB
Lua
require "ui/widget/container"
|
|
|
|
--[[
|
|
a button widget
|
|
--]]
|
|
Button = InputContainer:new{
|
|
text = nil, -- mandatory
|
|
preselect = false,
|
|
callback = nil,
|
|
margin = 0,
|
|
bordersize = 3,
|
|
background = 0,
|
|
radius = 15,
|
|
padding = 2,
|
|
width = nil,
|
|
text_font_face = "cfont",
|
|
text_font_size = 20,
|
|
}
|
|
|
|
function Button:init()
|
|
local text_widget = TextWidget:new{
|
|
text = self.text,
|
|
face = Font:getFace(self.text_font_face, self.text_font_size)
|
|
}
|
|
local text_size = text_widget:getSize()
|
|
if self.width == nil then
|
|
self.width = text_size.w
|
|
end
|
|
-- set FrameContainer content
|
|
self[1] = FrameContainer:new{
|
|
margin = self.margin,
|
|
bordersize = self.bordersize,
|
|
background = self.background,
|
|
radius = self.radius,
|
|
padding = self.padding,
|
|
HorizontalGroup:new{
|
|
HorizontalSpan:new{ width = (self.width - text_size.w)/2 },
|
|
text_widget,
|
|
HorizontalSpan:new{ width = (self.width - text_size.w)/2 },
|
|
}
|
|
}
|
|
if self.preselect then
|
|
self[1].color = 15
|
|
else
|
|
self[1].color = 5
|
|
end
|
|
self.dimen = self[1]:getSize()
|
|
if Device:isTouchDevice() then
|
|
self.ges_events = {
|
|
TapSelect = {
|
|
GestureRange:new{
|
|
ges = "tap",
|
|
range = self.dimen,
|
|
},
|
|
doc = "Tap Button",
|
|
},
|
|
}
|
|
end
|
|
end
|
|
|
|
function Button:onFocus()
|
|
self[1].color = 15
|
|
return true
|
|
end
|
|
|
|
function Button:onUnfocus()
|
|
self[1].color = 5
|
|
return true
|
|
end
|
|
|
|
function Button:onTapSelect()
|
|
self.callback()
|
|
return true
|
|
end
|