mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
This makes button heights similar in all uses of ButtonTable. It depended on how the ButtonTable was used in each widget (previously, first and last row may have different sizes than the others). buttontable.lua: more even buttons height whether zero_sep or not framecontainer.lua: added padding_top/bottom/left/right (similar to what was done for iconbutton) The following widgets have been adapted for this, with some additional fixes: buttondialog.lua buttondialogtitle.lua: wider title with adequate padding confirmbox.lua + multiconfirmbox.lua: dismissable via tap outside inputdialog.lua + multiinputdialog.lua: more even vertical padding between elements imageviewer.lua textviewer.lua datewidget.lua timewidget.lua Additionaly: frontlightwidget.lua: fixed width of progress bar that was exceeding window width since the Size scaling adjustements
110 lines
3.3 KiB
Lua
110 lines
3.3 KiB
Lua
local Blitbuffer = require("ffi/blitbuffer")
|
|
local ButtonTable = require("ui/widget/buttontable")
|
|
local CenterContainer = require("ui/widget/container/centercontainer")
|
|
local Device = require("device")
|
|
local Font = require("ui/font")
|
|
local FrameContainer = require("ui/widget/container/framecontainer")
|
|
local Geom = require("ui/geometry")
|
|
local GestureRange = require("ui/gesturerange")
|
|
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
local Size = require("ui/size")
|
|
local TextBoxWidget = require("ui/widget/textboxwidget")
|
|
local VerticalGroup = require("ui/widget/verticalgroup")
|
|
local UIManager = require("ui/uimanager")
|
|
local VerticalSpan = require("ui/widget/verticalspan")
|
|
local _ = require("gettext")
|
|
local Screen = Device.screen
|
|
|
|
local ButtonDialogTitle = InputContainer:new{
|
|
title = nil,
|
|
title_align = nil,
|
|
title_face = Font:getFace("x_smalltfont"),
|
|
title_padding = Size.padding.large,
|
|
title_margin = Size.margin.title,
|
|
buttons = nil,
|
|
tap_close_callback = nil,
|
|
}
|
|
|
|
function ButtonDialogTitle:init()
|
|
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",
|
|
FrameContainer:new{
|
|
padding = self.title_padding,
|
|
margin = self.title_margin,
|
|
bordersize = 0,
|
|
TextBoxWidget:new{
|
|
text = self.title,
|
|
width = Screen:getWidth() * 0.8 ,
|
|
face = self.title_face,
|
|
alignment = self.title_align or "left",
|
|
},
|
|
},
|
|
VerticalSpan:new{ width = Size.span.vertical_default },
|
|
ButtonTable:new{
|
|
width = Screen:getWidth() * 0.9,
|
|
buttons = self.buttons,
|
|
zero_sep = true,
|
|
show_parent = self,
|
|
},
|
|
},
|
|
background = Blitbuffer.COLOR_WHITE,
|
|
bordersize = Size.border.window,
|
|
radius = Size.radius.window,
|
|
padding = Size.padding.button,
|
|
padding_bottom = 0, -- no padding below buttontable
|
|
}
|
|
}
|
|
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
|