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

-------------------------------------------------------------------------------------------------
-- VARIABLES --
-------------------------------------------------------------------------------------------------
local MementoBar = MementoBar

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

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

function MementoBar:Initialize()
    -- Load saved values..
    MementoBar.Saved = ZO_SavedVars:New("MementoBar_Character", MementoBar.Addon.Version, nil, MementoBar.Default)
    if MementoBar.Saved.UseAccountSettings then
        MementoBar.Saved = ZO_SavedVars:NewAccountWide("MementoBar_Account", MementoBar.Addon.Version, nil, MementoBar.Default)
    end

    MementoBar_Frame:SetHandler("OnMoveStop", MementoBar.OnMoveStop)

    MementoBar:RestorePanel()
    MementoBar:HoykeyCreateSelections()
    MementoBar:CreateSettingsWindow()

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

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

function MementoBar:GetVersion(showMinor)
    if showMinor == false or ADDON_MINOR_VERSION == nil then
        return tostring(MementoBar.Addon.Version)
    end
    return tostring(MementoBar.Addon.Version) .. "." .. tostring(MementoBar.Addon.MinorVersion)
end

function MementoBar:RestorePanel()
    MementoBar:SetFragmentBehaviour()

    MementoBar:SetButtonFrameWidth()

    MementoBar:HotkeyUpdate()

    MementoBar:InitializeButtons()

    MementoBar:ButtonsBackdropColor()

    MementoBar:RestorePosition()

    MementoBar:UpdateMoveFrame()
end

function MementoBar:RestorePosition()
    local Top = MementoBar.Saved.Top
    local Left = MementoBar.Saved.Left
    MementoBar_Frame:ClearAnchors()
    MementoBar_Frame:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, Left, Top)
end

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