--[[
  @package    eg4-crank-ui-2
  @file       route-number-select.lua
  @brief      Holds the route number selection functions
]]

---
--- @brief  Indicate that the destination icon is visible
--- @return true - show destination control
function show_route_number()
  if sbsettings.get_use_route_number() ~= 0 then
    return true
  end
  if sbsettings.get_ibis_manual_mode() ~= 0 then
    if sbsettings.get_use_ibis_manual_line() ~= 0 or sbsettings.get_use_ibis_manual_line_szn() ~= 0 then
      return true
    end
  end
end

---
-- @brief  Initialise route number entry screen.
function cb_init_route_number_entry(mapargs)
  local ibis_manual_mode = sbsettings.get_ibis_manual_mode() ~= 0
  local use_ibis_manual_line = ibis_manual_mode and sbsettings.get_use_ibis_manual_line() ~= 0
  local use_ibis_manual_line_szn = ibis_manual_mode and sbsettings.get_use_ibis_manual_line_szn() ~= 0
  local start_special = use_ibis_manual_line_szn and not use_ibis_manual_line
  local route_number_len = sbsettings.get_route_number_len()

  gre.set_value(
    mapargs.context_screen..".max_len", route_number_len == 0 and 4 or route_number_len,
    mapargs.context_screen..".box_request", gre.get_value(mapargs.context_screen..(start_special and ".special_box_request" or ".normal_box_request")),
    mapargs.context_screen..".special", start_special and 1 or 0,
    mapargs.context_screen..".function_key_1", (use_ibis_manual_line and use_ibis_manual_line_szn) and gre.get_value(mapargs.context_screen..".ibis_special") or ""
  )
  cb_reset_text_entry(mapargs)
end


---
-- @brief  Update route number entry toggling between normal and special.
function cb_update_route_number_entry(mapargs)
  local special = 1 - gre.get_value(mapargs.context_screen..".special")
  gre.set_value(
    mapargs.context_screen..".box_request", gre.get_value(mapargs.context_screen..(special == 1 and ".special_box_request" or ".normal_box_request")),
    mapargs.context_screen..".function_key_1", gre.get_value(special == 1 and mapargs.context_screen..".ibis_normal" or mapargs.context_screen..".ibis_special"),
    mapargs.context_screen..".special", special
  )
end

---
-- @brief  Sends a set route number request to the backend
-- @param gre#context mapargs
--
function cb_set_route_number(value)
  if value == "" then return false end
  if gre.get_value(gre.env("active_screen")..".special") ~= 0 then
    send_event("set_special_route_number", value or "")
  else
    send_event("set_route_number", value or "")
  end
  return true
end
