TouchMenu: show checkboxes in grey for disabled menu items

pull/4487/head
poire-z 5 years ago
parent d98ea4e9ee
commit df28b90419

@ -14,6 +14,7 @@ Example:
]]
local Blitbuffer = require("ffi/blitbuffer")
local Font = require("ui/font")
local InputContainer = require("ui/widget/container/inputcontainer")
local OverlapGroup = require("ui/widget/overlapgroup")
@ -22,6 +23,7 @@ local TextWidget = require("ui/widget/textwidget")
local CheckMark = InputContainer:new{
checkable = true,
checked = false,
enabled = true,
face = Font:getFace("smallinfofont"),
width = 0,
height = 0,
@ -36,16 +38,37 @@ function CheckMark:init()
text = "",
face = self.face,
}
local disabled_checked_widget = TextWidget:new{
text = " ✓", -- preceded by thin space for better alignment
face = self.face,
fgcolor = Blitbuffer.COLOR_GREY,
}
local disabled_unchecked_widget = TextWidget:new{
text = "",
face = self.face,
fgcolor = Blitbuffer.COLOR_GREY,
}
local empty_widget = TextWidget:new{
text = "",
face = self.face,
}
self[1] = self.checkable and OverlapGroup:new{
(self.checked and checked_widget or empty_widget),
unchecked_widget
}
or empty_widget
local widget
if self.checkable then
if self.enabled then
widget = OverlapGroup:new{
(self.checked and checked_widget or empty_widget),
unchecked_widget
}
else
widget = OverlapGroup:new{
(self.checked and disabled_checked_widget or empty_widget),
disabled_unchecked_widget
}
end
else
widget = empty_widget
end
self[1] = widget
self.dimen = unchecked_widget:getSize()
end

@ -73,14 +73,14 @@ function TouchMenuItem:init()
item_checkable = true
item_checked = self.item.checked_func()
end
local checked_widget = CheckMark:new{
checked = true,
}
local unchecked_widget = CheckMark:new{
checked = false,
local checkmark_widget = CheckMark:new{
checkable = item_checkable,
checked = item_checked,
enabled = item_enabled,
}
local empty_widget = CheckMark:new{
checkable = false,
local checked_widget = CheckMark:new{ -- for layout, to :getSize()
checked = true,
}
-- text_max_width should be the TouchMenuItem width minus the below
@ -98,11 +98,7 @@ function TouchMenuItem:init()
align = "center",
CenterContainer:new{
dimen = Geom:new{ w = checked_widget:getSize().w },
item_checkable and (
item_checked and checked_widget
or unchecked_widget
)
or empty_widget
checkmark_widget,
},
TextWidget:new{
text = text,

Loading…
Cancel
Save