components_config_ConfigList.bs
import "pkg:/source/utils/config.bs"
import "pkg:/source/utils/dialogs.bs"
import "pkg:/source/utils/misc.bs"
sub init()
m.top.itemComponentName = "ConfigItem"
m.top.drawFocusFeedback = True
m.top.vertFocusAnimationStyle = "floatingFocus"
m.top.observeField("itemSelected", "onItemSelected")
m.top.itemSize = [750, 75]
m.top.itemSpacing = [0, 25]
m.top.setfocus(true)
end sub
sub setData()
items = m.top.configItems
data = CreateObject("roSGNode", "ContentNode")
data.appendChildren(items)
m.top.content = data
end sub
sub onItemSelected()
i = m.top.itemSelected
itemField = m.top.content.getchild(i)
configListShowDialog(itemField)
end sub
' Standard keyboard dialog (see source/utils/dialogs.bs). The helper owns the
' themed chrome and the OK/Cancel buttons; the result arrives on the dialog
' node's own `result` field.
sub configListShowDialog(configField)
m.configField = configField
isPassword = configField.type = "password"
m.dialog = showKeyboardDialog(configField.label, "onConfigValueEntered", configField.value, isPassword)
end sub
sub onConfigValueEntered()
dialog = m.dialog
m.dialog = invalid
if not isValid(dialog) then return
if dialog.result.confirmed then m.configField.value = dialog.result.value
end sub