···11+local _, F = ...
22+33+F.Options = F.Options or {}
44+55+local panel
66+local controls = {}
77+88+local function SetOption(key, value)
99+ if F.InitDB then F.InitDB() end
1010+ if not F.DB then return end
1111+1212+ F.DB[key] = value and true or false
1313+1414+ if key == "enabled" then
1515+ if value then
1616+ if F.UpdateUI then F.UpdateUI() end
1717+ else
1818+ if F.Frame and F.Frame.Hide then F.Frame:Hide() end
1919+ end
2020+ return
2121+ end
2222+2323+ if key == "hideBlizzardXPBar" and F.UI and F.UI.HideBlizzardBars then
2424+ F.UI.HideBlizzardBars()
2525+ end
2626+2727+ if F.UpdateUI then F.UpdateUI() end
2828+end
2929+3030+local function CreateHeader(parent, text, y)
3131+ local fs = parent:CreateFontString(nil, "ARTWORK", "GameFontNormal")
3232+ fs:SetPoint("TOPLEFT", parent, "TOPLEFT", 16, y)
3333+ fs:SetText(text)
3434+ return y - 20
3535+end
3636+3737+local function CreateCheckbox(parent, key, label, y)
3838+ local cb = CreateFrame("CheckButton", nil, parent, "InterfaceOptionsCheckButtonTemplate")
3939+ cb.Text:SetText(label)
4040+ cb:SetPoint("TOPLEFT", parent, "TOPLEFT", 16, y)
4141+ cb:SetScript("OnClick", function(self)
4242+ SetOption(key, self:GetChecked())
4343+ end)
4444+4545+ controls[key] = cb
4646+ return y - 28
4747+end
4848+4949+function F.Options.Refresh()
5050+ if F.InitDB then F.InitDB() end
5151+ if not F.DB then return end
5252+5353+ for key, cb in pairs(controls) do
5454+ cb:SetChecked(F.DB[key] and true or false)
5555+ end
5656+end
5757+5858+function F.Options.Open()
5959+ if not panel then return end
6060+6161+ if Settings and Settings.OpenToCategory then
6262+ Settings.OpenToCategory(panel.name)
6363+ elseif InterfaceOptionsFrame_OpenToCategory then
6464+ InterfaceOptionsFrame_OpenToCategory(panel)
6565+ InterfaceOptionsFrame_OpenToCategory(panel)
6666+ end
6767+end
6868+6969+function F.Options.Create()
7070+ if panel then return end
7171+7272+ panel = CreateFrame("Frame", "NXP_OptionsPanel", UIParent)
7373+ panel.name = "NixxnuxXPBar"
7474+7575+ local title = panel:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge")
7676+ title:SetPoint("TOPLEFT", panel, "TOPLEFT", 16, -16)
7777+ title:SetText("NixxnuxXPBar")
7878+7979+ local y = -48
8080+ y = CreateHeader(panel, "General", y)
8181+ y = CreateCheckbox(panel, "enabled", "Enable addon", y)
8282+ y = CreateCheckbox(panel, "trackedOnly", "Count tracked (pinned) quests only", y)
8383+8484+ y = y - 10
8585+ y = CreateHeader(panel, "Text Labels", y)
8686+ y = CreateCheckbox(panel, "showLevelText", "Level text", y)
8787+ y = CreateCheckbox(panel, "showXPText", "XP text", y)
8888+ y = CreateCheckbox(panel, "showPercentText", "Percent text", y)
8989+ y = CreateCheckbox(panel, "showQuestRestedText", "Quest/rested percent text", y)
9090+ y = CreateCheckbox(panel, "showLevelingText", "Leveling info text", y)
9191+ y = CreateCheckbox(panel, "showIncompleteQuestXPText", "Uncompleted quest XP text", y)
9292+ y = CreateCheckbox(panel, "showCompletedQuestXPText", "Completed quest XP text", y)
9393+ y = CreateCheckbox(panel, "showRestedXPText", "Rested XP text", y)
9494+9595+ panel:SetScript("OnShow", function()
9696+ F.Options.Refresh()
9797+ end)
9898+9999+ if Settings and Settings.RegisterCanvasLayoutCategory then
100100+ local category = Settings.RegisterCanvasLayoutCategory(panel, panel.name)
101101+ Settings.RegisterAddOnCategory(category)
102102+ elseif InterfaceOptions_AddCategory then
103103+ InterfaceOptions_AddCategory(panel)
104104+ end
105105+end
106106+107107+F.Options.Create()