--[[
AutoCompleteItem.lua
@Author  : DengSir (tdaddon@163.com)
@Link    : https://dengsir.github.io
]]

local ns               = select(2, ...)
local Addon            = ns.Addon
local GUI              = LibStub('tdGUI-1.0')
local AutoCompleteItem = Addon:NewClass('AutoCompleteItem', GUI:GetClass('ViewItem'))

function AutoCompleteItem:Constructor()
    local Text = self:CreateFontString(nil, 'ARTWORK', 'ChatFontNormal') do
        Text:SetJustifyH('LEFT')
        Text:SetPoint('LEFT')
        Text:SetPoint('RIGHT')
        Text:SetWordWrap(false)
    end

    local ct = self:CreateTexture(nil, 'BACKGROUND') do
        ct:SetAllPoints(true)
        ct:SetColorTexture(1, 0.82, 0, 0.2)
    end

    local ht = self:CreateTexture(nil, 'HIGHLIGHT') do
        ht:SetAllPoints(true)
        ht:SetColorTexture(1, 0.82, 0, 0.2)
    end

    local Icon = self:CreateTexture(nil, 'BORDER') do
        Icon:SetMask([[Interface\Minimap\UI-Minimap-Background]])
        Icon:SetSize(24, 24)
        Icon:SetPoint('CENTER')
    end

    local IconBorder = self:CreateTexture(nil, 'ARTWORK') do
        IconBorder:SetTexture([[Interface\PetBattles\PetBattleHUD]])
        IconBorder:SetPoint('TOPLEFT', Icon, 'TOPLEFT', 0, 1)
        IconBorder:SetPoint('BOTTOMRIGHT', Icon, 'BOTTOMRIGHT', 1, 0)
        IconBorder:SetTexCoord(0.884765625, 0.943359375, 0.681640625, 0.798828125)
    end

    self.CheckedTexture = ct
    self.Text           = Text
    self.Icon           = Icon
    self.IconBorder     = IconBorder
end

function AutoCompleteItem:SetItem(item)
    if item.icon then
        self.Icon:SetTexture(item.icon)
        self.Icon:Show()
        self.IconBorder:Show()
    else
        self.Icon:Hide()
        self.IconBorder:Hide()
    end

    if item.text then
        self.Text:SetText(item.text)
        self.Text:Show()
    else
        self.Text:SetText('')
        self.Text:Hide()
    end

    self:SetEnabled(item.value)
end

function AutoCompleteItem:GetAutoWidth()
    if self.Icon:IsShown() then
        return 24
    else
        return self.Text:GetStringWidth() + 3
    end
end
