ESOUI SVN TaosGroupTools

[/] [trunk/] [TaosGroupTools/] [ui/] [groupinvite/] [GroupMenuIntegration.lua] - Rev 88

Compare with Previous | Blame | View Log

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

--[[
        Local variables
]]--
local _logger = nil
local _isActive = false
local _settingsHandler = TGT_SettingsHandler
local _inviteHandler = TGT_InviteHandler

local _name = "TGT-GroupMenuIntegration"
local _container = nil
local _regroupButton = nil
local _toggleButton = nil
local _inputTextBox = nil

--[[
        Table TGT_GroupMenuIntegration
]]--
TGT_GroupMenuIntegration = {}
TGT_GroupMenuIntegration.__index = TGT_GroupMenuIntegration

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

--[[
        RegroupButton OnClicked handler
]]--
local function OnRegroupButtonOnClicked()
    _inviteHandler.Regroup()
end

--[[
        SetRegroupButtonEnabled Sets regroup button enabled
]]--
local function SetRegroupButtonEnabled(isGrouped)
    local inviteString = _settingsHandler.SavedVariables.InviteString
    local isInviteStringValid = inviteString ~= nil and inviteString ~= ""
    _regroupButton:SetEnabled(isGrouped and isInviteStringValid)
end

--[[
        InputTextBox OnEnter handler
]]--
local function SetToggleButtonState(isRunning)
    _inputTextBox:GetNamedChild("Box"):SetText(_settingsHandler.SavedVariables.InviteString)
    ZO_CheckButton_SetCheckState(_toggleButton, isRunning)
end

--[[
        ToggleButton Clicked handler
]]--
local function OnToggleButtonClicked(control, checked)
    if (checked) then
        local inviteString = _settingsHandler.SavedVariables.InviteString
        local isInviteStringValid = inviteString ~= nil and inviteString ~= ""

        if (isInviteStringValid) then
            _inviteHandler.SetInviteString(_settingsHandler.SavedVariables.InviteString)
        else
            ZO_CheckButton_SetCheckState(_toggleButton, false)
            d(GetString(TGT_UI_AUTOINVITE_TEXT_ERROR))
        end
    else
        _inviteHandler.StopInvite()
    end
end

--[[
        InputTextBox OnEnter handler
]]--
local function OnInputTextBoxOnEnter()
    _settingsHandler.SetInviteString(_inputTextBox:GetNamedChild("Box"):GetText())
end

--[[
        CreateMenu creates additional invite menus
]]--
local function CreateMenu()
        -- keyboard only integration
    if(not ZO_GroupMenu_Keyboard) then return end
        
    -- create container
    _container = WINDOW_MANAGER:CreateControl("GroupInviteContainer", ZO_GroupMenu_Keyboard, CT_CONTROL)
    _container:ClearAnchors()
    _container:SetAnchor(BOTTOMLEFT, ZO_SearchingForGroup, TOPLEFT, 5, -15)
    _container:SetWidth(190)
        _container:SetHeight(95)

    -- create regroup button
    _regroupButton = CreateControlFromVirtual("$(parent)GroupInviteRegroup", _container, "ZO_DefaultButton")
    _regroupButton:SetText(GetString(TGT_UI_AUTOINVITE_REGROUP_BUTTON))
    _regroupButton:ClearAnchors()
    _regroupButton:SetAnchor(TOPLEFT, _container, TOPLEFT, 0, 0)
        _regroupButton:SetAnchor(TOPRIGHT, _container, TOPRIGHT, 0, 0)
        _regroupButton:SetClickSound("Click")
        _regroupButton.data = { tooltipText = GetString(TGT_UI_AUTOINVITE_REGROUP_BUTTON) }
        _regroupButton:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
    _regroupButton:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
    _regroupButton:SetHandler("OnClicked", OnRegroupButtonOnClicked)

    -- create toggle button
        _toggleButton = CreateControlFromVirtual("$(parent)GroupInviteToggle", _container, "ZO_CheckButton_Text")
        ZO_CheckButton_SetLabelText(_toggleButton, GetString(TGT_UI_AUTOINVITE_LABEL))
        ZO_CheckButton_SetToggleFunction(_toggleButton, OnToggleButtonClicked)
    _toggleButton:ClearAnchors()
        _toggleButton.label:SetAnchor(TOPLEFT, _regroupButton, BOTTOMLEFT, 0, 10)
        _toggleButton:SetAnchor(LEFT, _toggleButton.label, RIGHT, -40, 0)

    -- create input textbox
    _inputTextBox = CreateControlFromVirtual("$(parent)GroupInviteInput", _container, "GroupInviteEditBox")
        _inputTextBox:GetNamedChild("Box"):SetHandler("OnEnter", OnInputTextBoxOnEnter)
        _inputTextBox:GetNamedChild("Box"):SetMaxInputChars(250)
    _inputTextBox:ClearAnchors()
        _inputTextBox:SetAnchor(BOTTOMLEFT, _container, BOTTOMLEFT, 0, 0)
        _inputTextBox:SetAnchor(BOTTOMRIGHT, _container, BOTTOMRIGHT, 0, 0)
    
    SetRegroupButtonEnabled(GetIsUnitGrouped())
    SetToggleButtonState(_inviteHandler.IsRunning)

    _container:SetHidden(true)
end

--[[
        SetControlActive sets hidden on control
]]--
local function SetControlActive()
    -- Get isActive from settings
    local isActive = _settingsHandler.SavedVariables.IsGroupInviteEnabled

    if (_isActive ~= isActive) then
        _isActive = isActive

        if (isActive) then
            _container:SetHidden(false)

            CALLBACK_MANAGER:RegisterCallback(TGT_GROUP_INVITE_RUNNING_CHANGED, SetToggleButtonState)
            CALLBACK_MANAGER:RegisterCallback(TAO_UNIT_GROUPED_CHANGED, SetRegroupButtonEnabled)
        else
            _container:SetHidden(true)

            CALLBACK_MANAGER:UnregisterCallback(TGT_GROUP_INVITE_RUNNING_CHANGED, SetToggleButtonState)
            CALLBACK_MANAGER:UnregisterCallback(TAO_UNIT_GROUPED_CHANGED, SetRegroupButtonEnabled)
        end
    end
end

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

--[[
        Initialize initializes TGT_GroupMenuIntegration
]]--
function TGT_GroupMenuIntegration.Initialize()
    _logger = TGT_LOGGER

    CreateMenu()
    SetControlActive()

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

Compare with Previous | Blame