Compare commits

...

2 Commits

Author SHA1 Message Date
Gabriel Tofvesson
8197d0a6f6 Test click event limits 2024-10-12 01:28:46 +02:00
Gabriel Tofvesson
05116679d2 Allow resizing padding 2024-10-12 01:28:37 +02:00
2 changed files with 54 additions and 5 deletions

View File

@ -60,6 +60,26 @@ function Padding:getPaddingBottom()
return self.bottom
end
local function compareSet(value, default, didChange)
return value or default, didChange or (value ~= nil and value ~= default)
end
function Padding:setPadding(opts)
if type(opts) ~= "table" then
return
end
local changed = false
self.left, changed = compareSet(opts.left, self.left, changed)
self.right, changed = compareSet(opts.right, self.right, changed)
self.top, changed = compareSet(opts.top, self.top, changed)
self.bottom, changed = compareSet(opts.bottom, self.bottom, changed)
if changed then
self:_reload()
end
end
function Padding:getInnerWidth()
return self.element:getWidth()
end

View File

@ -312,6 +312,7 @@ local PAGES = {
local group = state:getExtra()
if group == nil then
print("No group passed to GROUP_DETAIL")
state:setPage("MAIN")
return NOOP
end
@ -417,7 +418,7 @@ local PAGES = {
bgColor = colors.gray
},
onClick = function(e, x, y, s)
state:setPage("REQUEST")
state:setPage("REQUEST", group)
return true
end
}
@ -435,19 +436,47 @@ local PAGES = {
end,
REQUEST = function(state, newPage)
local helloPage = Text:new{
text = "Hello Request"
local group = state:getExtra()
if group == nil then
print("No group passed to REQUEST")
state:setPage("MAIN")
return NOOP
end
local paddingSide = 0
local paddingTop = 0
local itemName = fitText(group:getSimpleName(), state.width - (paddingSide * 2))
local itemLeftPad, itemRightPad = getCenterPad(#itemName, state.width - (paddingSide * 2))
local paddedTitle = Padding:new{
top = 1,
left = itemLeftPad,
right = itemRightPad,
bottom = 1,
element = Text:new{
id = "title",
text = itemName,
bgColor = colors.gray
},
bgColor = colors.gray,
onClick = function(e, x, y, s)
local title = e:findById("title")
title:setText("Clicked")
local newLeftPad, newRightPad = getCenterPad(#("Clicked"), state.width - (paddingSide * 2))
e:setPadding{ left = newLeftPad, right = newRightPad }
return true
end
}
local stuffContainer = Container:new{
[Children:getId()] = {
helloPage
paddedTitle
},
width = state.width,
height = state.height,
parent = state.monitor,
onClick = function(e, x, y, s)
state:setPage("GROUP_DETAIL")
state:setPage("GROUP_DETAIL", group)
return true
end
}