--[[
Author: Jarth
Filename: MementoBar.lua
]] --

-------------------------------------------------------------------------------------------------
-- VARIABLES --
-------------------------------------------------------------------------------------------------
local baseModule = MementoBar
local sharedBaseModule = JarthSharedBase

-------------------------------------------------------------------------------------------------
--  FUNCTIONS --
-------------------------------------------------------------------------------------------------

function baseModule.OnAddOnLoaded(_, addonName)
    if addonName == baseModule.Addon.Name then
        baseModule:Initialize()
    end
end

function baseModule:Initialize()
    -- Load saved values..
    baseModule.Saved = ZO_SavedVars:New("MementoBar_Character", baseModule.Addon.Version, nil, baseModule.Default)

    if baseModule.Saved.UseAccountSettings then
        baseModule.Saved = ZO_SavedVars:NewAccountWide("MementoBar_Account", baseModule.Addon.Version, nil, baseModule.Default)
    end

    baseModule:RestorePanel(baseModule.Frame)
    baseModule:HotkeyCreateSelections()
    baseModule:CreateSettingsWindow()

    EVENT_MANAGER:UnregisterForEvent(baseModule.Addon.Name, EVENT_ADD_ON_LOADED)
end

-------------------------------------------------------------------------------------------------
--  PRIVATE FUNCTIONS --
-------------------------------------------------------------------------------------------------

function baseModule:RestorePanel(frame)
    baseModule:SetButtonFrameWidth(baseModule.Saved.SelectedMementos)
    sharedBaseModule:HotkeyUpdate(baseModule)
    baseModule:InitializeButtons(frame, baseModule.OrderedMementos)
    baseModule:RestoreButtons(baseModule.OrderedMementos)
    sharedBaseModule:RestorePosition(baseModule, frame)
    sharedBaseModule:UpdateMoveFrame(baseModule, frame)
    baseModule.Fragment = sharedBaseModule:SetFragmentBehaviour(frame, baseModule.Saved, baseModule.Fragment)
end

EVENT_MANAGER:RegisterForEvent(baseModule.Addon.Name, EVENT_ADD_ON_LOADED, baseModule.OnAddOnLoaded)