components_config_ConfigList.bs

import "pkg:/source/utils/config.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

function onDialogButton()
  d = m.dialog
  button_text = d.buttons[d.buttonSelected]

  if button_text = tr("OK")
    m.configField.value = d.text
    dismiss_dialog()
    return true
  else if button_text = tr("Cancel")
    dismiss_dialog()
    return true
  end if
  return false
end function


sub configListShowDialog(configField)
  dialog = createObject("roSGNode", "StandardKeyboardDialog")
  m.configField = configField
  dialog.title = configField.label
  dialog.buttons = [tr("OK"), tr("Cancel")]
  m.greenPalette = createObject("roSGNode", "RSGPalette")
  m.greenPalette.colors = {
    DialogBackgroundColor: "#2A2B2A"
  }
  dialog.palette = m.greenPalette

  if configField.type = "password"
    dialog.textEditBox.secureMode = true
  end if

  if configField.value <> ""
    dialog.text = configField.value
  end if

  m.top.getscene().dialog = dialog
  m.dialog = dialog

  dialog.observeField("buttonSelected", "onDialogButton")
end sub

sub dismiss_dialog()
  m.dialog.close = true
end sub