---
-- @package   eg4-crank-ui
-- @file      screen-transition.lua
-- @brief     Functionality related to screen transitions
--
-- @copyright Copyright 2019 Hanover Displays Limited.
-- @license   This program is the confidential and proprietary product of
--            Hanover Displays Limited. Any unauthorised use, reproduction or
--            transfer of this program is strictly prohibited. (Subject to
--            limited distribution and restricted disclosure only.) All
--            rights reserved.
--
--

---
--- @brief  Allows lua script to initiate a screen transition
--- @param  screen_name - destination screen
---
function ScreenTransition(screen_name) 
  if ScrollActive() or IconMenuOpening() then return end
  gre.set_value("screen_name", screen_name)
  gre.send_event("screen_transition")
end

---
--- @brief  Performs a screen transition as a result of a touch in a scrolling 
---         capable region.
--- @param  gre#context mapargs
---
function CBScreenTransition(mapargs) 
  ScreenTransition(mapargs.screen) 
end

---
--- @brief  Transition to the back_screen variable
---
--- @param  gre#context mapargs
function TransitionBackScreen(mapargs)
  ScreenTransition(gre.get_value(mapargs.context_screen..".back_screen"))
end


--- Update to 3 screens can now be triggered as part of the updating mechanism, I need 
-- a way to stack the screens so that back_screen will go to the screens that are 
-- pending user action.

local update_screen
function UpdateSelectionScreenShow(screen)
  if screen == gre.env("active_screen") then return end

  if update_screen == nil then
    gre.set_value(screen..".back_screen", gre.get_value("no_activity_screen"))
    ScreenTransition(screen)
  else
    gre.set_value(update_screen..".back_screen", screen)
  end
  update_screen = screen
end

function CBUpdateSelectionScreenHide(mapargs)
  if mapargs.context_screen == update_screen then
    update_screen = nil
  end
end

-- EOF --
