local settings = {
    {
        settingText = "Aktiviere Developer Modus",
        settingKey = "enableDebugLogs",
        settingVariable = "KB_DebugLogs",
        settingDefault = true,
        settingTooltip = "Zeigt dir Nachrichten im Chat, die vor allem für Problembehebungen nützlich sind."
    },
    {
        settingText = "Aktiviere Fast-Reload",
        settingKey = "enableRLCommand",
        settingVariable = "KB_RLCMD",
        settingDefault = true,
        settingTooltip = "Lade dein Interface mit /rl statt mit /reload neu."
    },
    {
        settingText = "Aktiviere Level-Up Sound",
        settingKey = "enableLevelUpSound",
        settingVariable = "KB_LvlUp",
        settingDefault = true,
        settingTooltip = "Spielt einen Sound ab, wenn du ein neues Level erreichst."
    },
    {
        settingText = "Zeige das Addon-Fenster bei Login",
        settingKey = "showFrameAtLogin",
        settingVariable = "KB_LoginWindow",
        settingDefault = false,
        settingTooltip = "Zeigt das Addon-Fenster bei jedem Login direkt an."
    },
    {
        settingText = "Aktiviere Login-Nachricht",
        settingKey = "enableLoginMessage",
        settingVariable = "KB_LoginMsg",
        settingDefault = true,
        settingTooltip = "Zeigt dir an, wie oft du dich bereits auf diesem Charakter angemeldet hast."
    },
    {
        settingText = "Aktiviere Versionsnachricht",
        settingKey = "announceBuildVersion",
        settingVariable = "KB_VersionMsg",
        settingDefault = false,
        settingTooltip = "Zeigt dir im Chat die aktuelle Version deines Spiels an."
    },
    {
        settingText = "Aktiviere Mob-Kills",
        settingKey = "enalbeMobKills",
        settingVariable = "KB_KilledMobs",
        settingDefault = true,
        settingTooltip = "Zeigt dir im Chat an, wie viele Mobs du schon getötet hast. Bei deaktivierung wird trotzdem weiterhin mitgezählt."
    },
    {
        settingText = "Aktiviere Tode",
        settingKey = "enableDied",
        settingVariable = "KB_Died",
        settingDefault = true,
        settingTooltip = "Werde im Chat benachrichtigt, wie oft du schon insgesamt gestorben bist."
    },
    {
        settingText = "Aktiviere Quest Auto-Accept",
        settingKey = "enableAutoAccept",
        settingVariable = "KB_AutoAccept",
        settingDefault = true,
        settingTooltip = "Akzeptiert automatisch Quests, wenn sie angeboten werden."
    },
    {
        settingText = "Aktiviere Quest Auto-Accept (Dailys)",
        settingKey = "enableAutoAcceptDaily",
        settingVariable = "KB_AutoAcceptDaily",
        settingDefault = true,
        settingTooltip = "Akzeptiert automatisch Quests, wenn sie angeboten werden (Dailys)."
    },
    {
        settingText = "Aktiviere Quest Auto-Accept (Weeklys)",
        settingKey = "enableAutoAcceptWeekly",
        settingVariable = "KB_AutoAcceptWeekly",
        settingDefault = true,
        settingTooltip = "Akzeptiert automatisch Quests, wenn sie angeboten werden (Weeklys)."
    },
    {
        settingText = "Automatisch reparieren?",
        settingKey = "enableAutoRepair",
        settingVariable = "KB_AutoRepair",
        settingDefault = true,
        settingTooltip = "Repariert deine Ausrüstung automatisch, sobald du den passenden Händler besuchst."
    },
    {
        settingText = "Reparieren aus der Gildenbank?",
        settingKey = "enableAutoRepairGuild",
        settingVariable = "KB_AutoRepairGuild",
        settingDefault = true,
        settingTooltip = "Aktivieren, um deine Reparaturkosten aus der Gildenbank zu bezahlen, sofern möglich."
    },
    {
        settingText = "Zeige Repair-Message",
        settingKey = "enableAutoRepairMessage",
        settingVariable = "KB_RepairedMessage",
        settingDefault = true,
        settingTooltip = "Zeigt die Kosten der Reparatur im Chat an."
    },
    {
        settingText = "Graue Gegenstände automatisch verkaufen",
        settingKey = "enableAutoSellGreys",
        settingVariable = "KB_AutoSellGreys",
        settingDefault = true,
        settingTooltip = "Verkauft alle grauen Gegenstände aus deiner Tasche automatisch."
    }
}

local addonCategory = Settings.RegisterVerticalLayoutCategory("KevsBasics")

local function OnSettingChanged(settingA, value)
    -- Wenn eine Einstellung geändert wird, wird das hier getriggert
    -- print("Einstellung geändert: ", settingA:GetVariable(), value)
end

-- Checkboxen in Einstellungen erstellen
do
    for _, option in pairs(settings) do
        local setting = Settings.RegisterAddOnSetting(addonCategory, option.settingVariable, option.settingKey, KevsBasicsDB, type(option.settingDefault), option.settingText, option.settingDefault)
        setting:SetValueChangedCallback(OnSettingChanged)
        Settings.CreateCheckbox(addonCategory, setting, option.settingTooltip)
    end
end

Settings.RegisterAddOnCategory(addonCategory)

local addonButton = LibStub("AceAddon-3.0"):NewAddon("KevsBasics")
MyMinimapButton = LibStub("LibDBIcon-1.0", true)

local miniButton = LibStub("LibDataBroker-1.1"):NewDataObject("KevsBasics", {
        type = "data source",
        text = "Kevs Basics",
        icon = "Interface\\AddOns\\KevsBasics\\icons\\Hammer_Icon.tga",
        OnClick = function(self, btn)
            if btn == "LeftButton" then
                KB:ToggleMainFrame()
            elseif btn == "RightButton" then
                Settings.OpenToCategory(addonCategory:GetID())
            end
        end,
        OnTooltipShow = function(tooltip)
            if not tooltip or not tooltip.AddLine then
                return
            end

            tooltip:AddLine("Kevs Basics\n\nLinke-Maus: Öffnet das Addon\nRechte-Maus: Öffnet die Einstellungen", nil, nil, nil, nil)
        end,
    }
)

function addonButton:OnInitialize()
    self.db = LibStub("AceDB-3.0"):New("KBMinimapButtonPOS", {
        profile = {
            minimap = {
                hide = false,
            },
        },
    })

    MyMinimapButton:Register("KevsBasics", miniButton, self.db.profile.minimap)
end

MyMinimapButton:Show("KevsBasics")

-- Auch mit ESC schließbar
table.insert(UISpecialFrames, "KBSettings")