local _, PUP = ...

local windowWidth = 382
local windowHeight = 157

local padding = 8
local spacing = 4 -- Spacing between UI elements
local checkButtons = {}

local function AddCheckButton(title, tooltip, isChecked, OnValueChanged)
    local checkButton = PUP:CreateCheckButton(
        PUP.settingsWindow,
        title,
        OnValueChanged
    )

    if next(checkButtons) then
        checkButton:SetPoint("TOPLEFT", checkButtons[#checkButtons], "BOTTOMLEFT", 0, -spacing)
    else
        checkButton:SetPoint("TOPLEFT", PUP.settingsWindow, "TOPLEFT", padding, -padding)
    end

    checkButton:SetChecked(isChecked)
    checkButton:SetSize(20, 20)
    checkButton.title:SetFontObject(PUFont15)

    PUP:AddTooltip(checkButton, tooltip)
    PUP:AddTooltip(checkButton.title, tooltip)

    table.insert(checkButtons, checkButton)
end

-- This can be set from the popup window, so needs a generic function that can be used in both places
function PUP:SetNotifyOnReadyCheck(checked)
    checkButtons[2]:SetChecked(checked)
end

function PUP:InitializeSettings()
    PUP.settingsWindow = PUP:CreateWindow("Settings")
    PUP.settingsWindow:SetParent(PUP.window)
    PUP.settingsWindow:SetPoint("TOPLEFT", PUP.window, "TOPRIGHT", 4, 0)
    PUP.settingsWindow:SetSize(windowWidth, windowHeight)
    PUP.settingsWindow:Hide()

    AddCheckButton(
        "Minikartensymbol verbergen, wenn auf dem neuesten Stand",
        "Blendet das Minikartensymbol aus, wenn deine Aura und das Addon selbst auf dem neuesten Stand sind.",
        PrepullUpdaterSaved.settings.hideMinimapIcon,
        function(hideMinimapIcon)
            PrepullUpdaterSaved.settings.hideMinimapIcon = hideMinimapIcon
            
            PUP:UpdateMinimapIconVisibility()
        end
    )

    AddCheckButton(
        "Bei Bereitschaftscheck benachrichtigen",
        "Wenn dein Addon oder deine Aura veraltet ist, wird beim Bereitschaftscheck ein Popup-Fenster angezeigt.",
        PrepullUpdaterSaved.settings.readyCheckPopup,
        function(readyCheckPopup)
            PrepullUpdaterSaved.settings.readyCheckPopup = readyCheckPopup
        end
    )

    -- To check options for a module, make sure it's loaded (by going into its options), then dump BigWigs:GetBossModule(moduleName).db
    AddCheckButton(
        "BigWigs-Zuweisungen deaktivieren",
        "Wenn aktiviert, werden automatisch BigWigs-Zuweisungen (und Markierungen) deaktiviert, die mit den Prepull WeakAura-Zuweisungen kollidieren.|n|n" ..
        "Die folgenden Optionen sind deaktiviert:|n|n" ..
        CreateTextureMarkup(5770809, 64, 64, 0, 0, 5/64, 59/64, 5/64, 59/64) .. " |cff1998faPalast der Nerub-ar|r|n" ..
        "- Zuweisung für Experimentelle Dosierung|n" ..
        "- Markierung der gefräßigen Würmer|n" ..
        "- Zuweisung für Reaktives Toxin|n|n"..
        CreateTextureMarkup(6392630, 64, 64, 0, 0, 5/64, 59/64, 5/64, 59/64) .. " |cff1998faBefreiung von Lorenhall|r|n" ..
        "- Markierung der Verstärker|n" ..
        "- Zuweisung für Rollender Müll",
        PrepullUpdaterSaved.settings.disableBigWigsAssignments,
        function(disableBigWigsAssignments)
            PrepullUpdaterSaved.settings.disableBigWigsAssignments = disableBigWigsAssignments

            if disableBigWigsAssignments then
                PUP:RegisterBigWigsDisabler()
            else
                PUP:UnregisterBigWigsDisabler()
            end
        end
    )

    AddCheckButton(
        "Cooldown-Checker aktivieren",
        "Gibt beim Readycheck eine Meldung aus, wenn ein Spell auf CD ist.",
        PrepullUpdaterSaved.settings.checkCooldowns,
        function(checkCooldowns)
            PrepullUpdaterSaved.settings.checkCooldowns = checkCooldowns
        end
    )
end