local _, ns = ...

----------------------------------------------------------------------------------------
--	Actionbar Settings for DarkUI Option GUI
----------------------------------------------------------------------------------------

ns.Categories[2] = L_CATEGORIES_ACTIONBAR

-- optType, group, key, name, horizon, data, init, callback, tooltip
-- type: 1: CheckBox, 3: Slider, 4: Dropdown

ns.OptionList[2] = { -- Actionbar
    { 1, 'actionbar', 'bars.enable', L_OPT_BARS_ENABLE, false, nil, function(self)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.micromenu.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.bags.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.texture']:SetEnabled(self:GetChecked())
            --
            ns.opt_widgets['actionbar:bars.bar4.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.bar5.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.bar6.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.mergeright']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.bar7.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.bar8.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.mergebottom']:SetEnabled(self:GetChecked())
            --
            ns.opt_widgets['actionbar:bars.exp.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.artifact.enable']:SetEnabled(self:GetChecked())
            --
            ns.opt_widgets['actionbar:styles.buttons.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.cooldown.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.range.enable']:SetEnabled(self:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'bars.micromenu.enable', L_OPT_BARS_MICROMENU_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'bars.bags.enable', L_OPT_BARS_BAGS_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'bars.texture', L_OPT_BARS_TEXTURE_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
    end },
    {},
    { 1, 'actionbar', 'bars.bar4.enable', L_OPT_BARS_RIGHTBAR1_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.mergeright']:SetEnabled(
                ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                and (ns.opt_widgets['actionbar:bars.bar4.enable']:GetChecked() 
                    or ns.opt_widgets['actionbar:bars.bar5.enable']:GetChecked()
                    or ns.opt_widgets['actionbar:bars.bar6.enable']:GetChecked()
                )
            )
        end)
    end },
    { 1, 'actionbar', 'bars.bar5.enable', L_OPT_BARS_RIGHTBAR2_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.mergeright']:SetEnabled(
                ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                and (ns.opt_widgets['actionbar:bars.bar4.enable']:GetChecked() 
                    or ns.opt_widgets['actionbar:bars.bar5.enable']:GetChecked()
                    or ns.opt_widgets['actionbar:bars.bar6.enable']:GetChecked()
                )
            )
        end)
    end },
    { 1, 'actionbar', 'bars.bar6.enable', L_OPT_BARS_RIGHTBAR3_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.mergeright']:SetEnabled(
                ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                and (ns.opt_widgets['actionbar:bars.bar4.enable']:GetChecked() 
                    or ns.opt_widgets['actionbar:bars.bar5.enable']:GetChecked()
                    or ns.opt_widgets['actionbar:bars.bar6.enable']:GetChecked()
                )
            )
        end)
    end },
    { 1, 'actionbar', 'bars.mergeright', L_OPT_BARS_MERGERIGHT, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                            and (ns.opt_widgets['actionbar:bars.bar4.enable']:GetChecked() 
                                or ns.opt_widgets['actionbar:bars.bar5.enable']:GetChecked()
                                or ns.opt_widgets['actionbar:bars.bar6.enable']:GetChecked()
                            )
                        )
        end)
    end },
    { 1, 'actionbar', 'bars.bar7.enable', L_OPT_BARS_BOTTOMBAR1_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.mergebottom']:SetEnabled(
                ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                and (ns.opt_widgets['actionbar:bars.bar7.enable']:GetChecked() 
                    or ns.opt_widgets['actionbar:bars.bar8.enable']:GetChecked()
                )
            )
        end)
    end },
    { 1, 'actionbar', 'bars.bar8.enable', L_OPT_BARS_BOTTOMBAR2_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.mergebottom']:SetEnabled(
                ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                and (ns.opt_widgets['actionbar:bars.bar7.enable']:GetChecked() 
                    or ns.opt_widgets['actionbar:bars.bar8.enable']:GetChecked()
                )
            )
        end)
    end },
    { 1, 'actionbar', 'bars.mergebottom', L_OPT_BARS_MERGEBOTTOM, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked() 
                                and (ns.opt_widgets['actionbar:bars.bar7.enable']:GetChecked() 
                                        or ns.opt_widgets['actionbar:bars.bar8.enable']:GetChecked()))
        end)
    end },
    {},
    { 1, 'actionbar', 'bars.exp.enable', L_OPT_BARS_EXP_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.exp.autoswitch']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.exp.disable_at_max_lvl']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnEnable', function(self)
            ns.opt_widgets['actionbar:bars.exp.autoswitch']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:bars.exp.disable_at_max_lvl']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnDisable', function(self)
            ns.opt_widgets['actionbar:bars.exp.autoswitch']:SetEnabled(false)
            ns.opt_widgets['actionbar:bars.exp.disable_at_max_lvl']:SetEnabled(false)
        end)
    end },
    { 1, 'actionbar', 'bars.exp.autoswitch', L_OPT_BARS_EXP_AUTOSWITCH, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:bars.exp.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'bars.exp.disable_at_max_lvl', L_OPT_BARS_EXP_DISABLE_AT_MAX_LVL, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:bars.exp.enable']:GetChecked())
        end)
    end },
    {},
    { 1, 'actionbar', 'bars.artifact.enable', L_OPT_BARS_ARTIFACT_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:bars.artifact.only_at_max_level']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnEnable', function(self)
            ns.opt_widgets['actionbar:bars.artifact.only_at_max_level']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnDisable', function(self)
            ns.opt_widgets['actionbar:bars.artifact.only_at_max_level']:SetEnabled(false)
        end)
    end },
    { 1, 'actionbar', 'bars.artifact.only_at_max_level', L_OPT_BARS_ARTIFACT_ONLY_AT_MAX_LEVEL, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:bars.artifact.enable']:GetChecked())
        end)
    end },
    {},
    { 1, 'actionbar', 'styles.enable', L_OPT_BARS_STYLE_BUTTONS_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked())
        end)
        self:HookScript('OnClick', function(self)
            ns.opt_widgets['actionbar:styles.buttons.showHotkey']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.buttons.showMacroName']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.buttons.showStackCount']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.cooldown.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.range.enable']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnEnable', function(self)
            ns.opt_widgets['actionbar:styles.buttons.showHotkey']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.buttons.showMacroName']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.buttons.showStackCount']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.cooldown.enable']:SetEnabled(self:GetChecked())
            ns.opt_widgets['actionbar:styles.range.enable']:SetEnabled(self:GetChecked())
        end)
        self:HookScript('OnDisable', function(self)
            ns.opt_widgets['actionbar:styles.buttons.showHotkey']:SetEnabled(false)
            ns.opt_widgets['actionbar:styles.buttons.showMacroName']:SetEnabled(false)
            ns.opt_widgets['actionbar:styles.buttons.showStackCount']:SetEnabled(false)
            ns.opt_widgets['actionbar:styles.cooldown.enable']:SetEnabled(false)
            ns.opt_widgets['actionbar:styles.range.enable']:SetEnabled(false)
        end)
    end },
    { 1, 'actionbar', 'styles.buttons.showHotkey', L_OPT_BARS_STYLE_BUTTONS_SHOWHOTKEY_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:styles.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'styles.buttons.showMacroName', L_OPT_BARS_STYLE_BUTTONS_SHOWMACRONAME_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:styles.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'styles.buttons.showStackCount', L_OPT_BARS_STYLE_BUTTONS_SHOWSTACKCOUNT_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:styles.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'styles.cooldown.enable', L_OPT_BARS_STYLE_COOLDOWN_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:styles.enable']:GetChecked())
        end)
    end },
    { 1, 'actionbar', 'styles.range.enable', L_OPT_BARS_STYLE_RANGE_ENABLE, false, nil, function(self)
        self:HookScript('OnShow', function(self)
            self:SetEnabled(ns.opt_widgets['actionbar:bars.enable']:GetChecked()
                                    and ns.opt_widgets['actionbar:styles.enable']:GetChecked())
        end)
    end },
}
