ESOUI SVN TaosGroupTools

[/] [trunk/] [TaosGroupTools/] [ui/] [settings/] [SettingsWindow.lua] - Rev 136

Compare with Previous | Blame | View Log

--[[
        Addon: Taos Group Tools
        Author: TProg Taonnor
        Created by @Taonnor
]]--

--[[
        Local variables
]]--
local _logger = nil

local _settingsHandler = TGT_SettingsHandler

local _panel = nil
local _options = nil
local _lamPanel = nil
local _trackedBuffs = TRACKED_BUFFS
local _abitilyChoises = nil
local _mainMenuName = "TaosGroupToolsSettingsMainMenu"

--[[
        Table SettingsWindow
]]--
TGT_SettingsWindow = {}
TGT_SettingsWindow.__index = TGT_SettingsWindow

--[[
        ===============
    PRIVATE METHODS
    ===============
]]--

--[[
        Creates global options
]]--
local function CreateOptions()
    -- GetOptions methods get options and adds them directly to the table
    _options = {}
    TGT_GlobalOptions.GetOptions(_options)
    TGT_GroupUltimateOptions.GetOptions(_options)
    TGT_GroupLeaderOptions.GetOptions(_options)
    TGT_GroupInviteOptions.GetOptions(_options)
    TGT_GroupDpsHpsOptions.GetOptions(_options)
    TGT_GroupFramesOptions.GetOptions(_options)
    TGT_GroupDetoOptions.GetOptions(_options)
    TGT_GroupPurgeOptions.GetOptions(_options)
    TGT_GroupSpeedOptions.GetOptions(_options)
    TGT_GroupEarthgoreOptions.GetOptions(_options)
end

--[[
        Creates settings panel
]]--
local function CreatePanel(major, minor, patch)
    _panel = {
                type = "panel",
                name = "Taos Group Tools",
                author = "TProg Taonnor",
                version = major .. "." .. minor .. "." .. patch,
                slashCommand = "/taosGroupTools",
        registerForRefresh = true,
                registerForDefaults = true
        }
end

--[[
        ==============
    PUBLIC METHODS
    ==============
]]--

--[[
        GetBuffTrackerChoises Gets buff tracker choises
]]--
function TGT_SettingsWindow.GetBuffTrackerChoises()
    if (_abitilyChoises == nil) then
        local abitilyChoises = {}

        for index, ability in ipairs(_trackedBuffs) do
            abitilyChoises[index] = zo_strformat(SI_ABILITY_TOOLTIP_NAME, GetAbilityName(ability.IconId))
        end

        _abitilyChoises = abitilyChoises
    end

    return _abitilyChoises
end

--[[
        GetBuffIndex Gets buff index on base of buff AbilityId
]]--
function TGT_SettingsWindow.GetBuffIndex(id)
    for index, ability in ipairs(_trackedBuffs) do
        if (id == ability.IconId) then
            return index
        end
    end

    return -1
end

--[[
        GetBuffId Gets buff AbilityId on base of index
]]--
function TGT_SettingsWindow.GetBuffId(index)
    if (_trackedBuffs[index] ~= nil) then
        return _trackedBuffs[index].IconId
    end

    return -1
end

--[[
        Creates new color picker and returns it
]]--
function TGT_SettingsWindow.GetNewColorpicker(part, value, labelText, labelTooltip, disabledMethod)
    return {   
        type        = "colorpicker", 
        name        = labelText,
        tooltip     = labelTooltip,
        getFunc = 
            function() 
                local color = _settingsHandler.SavedVariables.ModuleColors[part][value]
                return color.R, color.G, color.B, color.A
            end, 
        setFunc = 
            function(r,g,b,a)
                _settingsHandler.SavedVariables.ModuleColors[part][value] = { R = r, G = g, B = b, A = a }
                _settingsHandler.OnColorSettingsChanged(part)
            end, 
        default     = 
        { 
            r = TGT_DEFAULTS.ModuleColors[part][value].R, 
            g = TGT_DEFAULTS.ModuleColors[part][value].G, 
            b = TGT_DEFAULTS.ModuleColors[part][value].B, 
            a = TGT_DEFAULTS.ModuleColors[part][value].A
        },
        disabled = disabledMethod,
    }
end

--[[
        Initialize creates settings window
]]--
function TGT_SettingsWindow.Initialize(major, minor, patch)
    _logger = TGT_LOGGER

    -- Workaround: To avoid "Too many anchors processed" error; Thank you ZOS for stealing hours of my life!
    zo_callLater(function()
        CreatePanel(major, minor, patch)
        CreateOptions()
    
            local LAM = LibStub("LibAddonMenu-2.0")
            _lamPanel = LAM:RegisterAddonPanel(_mainMenuName, _panel)
        TGT_GroupLeaderOptions.SetLamPanel(_lamPanel)

            LAM:RegisterOptionControls(_mainMenuName, _options)
     end, 1000)

    _logger:logTrace("TGT_SettingsWindow -> Initialized")
end

Compare with Previous | Blame