local TXUI, F, E, I, V, P, G = unpack(select(2, ...))
local O = TXUI:GetModule("Options")
local ACH = LibStub("LibAceConfigHelper")

function O:WunderBar_SubModules_System()
    local options = self.options.wunderbar.args.submodules.args

    options.system = ACH:Group("System", nil, self:GetOrder(), nil, function(info)
        return E.db.TXUI.wunderbar.subModules["System"][info[#info]]
    end, function(info, value)
        E.db.TXUI.wunderbar.subModules["System"][info[#info]] = value
        TXUI:GetModule("WunderBar"):UpdateBar()
    end)

    local tab = options.system.args
    local iconsDisabled = function()
        return not E.db.TXUI.wunderbar.subModules["System"].showIcons
    end

    local colorsDisabled = function()
        return not (
                E.db.TXUI.wunderbar.subModules["System"].textColor
                or (E.db.TXUI.wunderbar.subModules["System"].showIcons and E.db.TXUI.wunderbar.subModules["System"].iconColor)
            )
    end

    -- General
    tab.generalGroup = ACH:Group("General", nil, 1)
    tab.generalGroup.inline = true

    tab.generalGroup.args.fastUpdate = ACH:Toggle("Fast Updates", nil, 1)
    tab.generalGroup.args.useWorldLatency = ACH:Toggle("Use World Latency", nil, 2)
    tab.generalGroup.args.showIcons = ACH:Toggle("Show Icons", nil, 3)
    tab.generalGroup.args.iconFontSize = ACH:Range("Icon Size", nil, 4, {
        min = 1,
        max = 100,
        step = 1,
    }, nil, nil, nil, iconsDisabled)

    -- Colors
    tab.colorGroup = ACH:Group("Colors", nil, 2)
    tab.colorGroup.inline = true
    tab.colorGroup.args.iconColor = ACH:Toggle("Color Icon", nil, 1, nil, nil, nil, nil, nil, iconsDisabled)
    tab.colorGroup.args.textColor = ACH:Toggle("Color Text", nil, 2)
    tab.colorGroup.args.textColorFadeFromNormal = ACH:Toggle("Text Color as Base", nil, 3, nil, nil, nil, nil, nil, colorsDisabled)

    tab.colorGroup.args.spacer1 = ACH:Spacer(4)

    tab.colorGroup.args.textColorFramerateThreshold = ACH:Range("Framerate Threshold", nil, 5, {
        min = 1,
        max = 1000,
        step = 1,
    }, nil, nil, nil, colorsDisabled)
    tab.colorGroup.args.textColorLatencyThreshold = ACH:Range("Latency Threshold", nil, 6, {
        min = 1,
        max = 1000,
        step = 1,
    }, nil, nil, nil, colorsDisabled)
end
