2020-11-13 14:13:12 -05:00

168 lines
5.8 KiB
Lua

-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster --
-- https://tradeskillmaster.com --
-- All Rights Reserved - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local _, TSM = ...
local Mailing = TSM.MainUI.Settings:NewPackage("Mailing")
local L = TSM.Include("Locale").GetTable()
local Sound = TSM.Include("Util.Sound")
local Math = TSM.Include("Util.Math")
local UIElements = TSM.Include("UI.UIElements")
local private = {
sounds = {},
soundkeys = {},
}
local ITEM_QUALITY_DESCS = { ITEM_QUALITY2_DESC, ITEM_QUALITY3_DESC, ITEM_QUALITY4_DESC }
local ITEM_QUALITY_KEYS = { 2, 3, 4 }
-- ============================================================================
-- Module Functions
-- ============================================================================
function Mailing.OnInitialize()
TSM.MainUI.Settings.RegisterSettingPage(L["Mailing"], "middle", private.GetMailingSettingsFrame)
for key, name in pairs(Sound.GetSounds()) do
tinsert(private.sounds, name)
tinsert(private.soundkeys, key)
end
end
-- ============================================================================
-- Mailing Settings UI
-- ============================================================================
function private.GetMailingSettingsFrame()
TSM.UI.AnalyticsRecordPathChange("main", "settings", "mailing")
return UIElements.New("ScrollFrame", "mailingSettings")
:SetPadding(8, 8, 8, 0)
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Mailing", "inbox", L["Inbox Settings"], "")
:AddChild(UIElements.New("Frame", "content")
:SetLayout("HORIZONTAL")
:SetHeight(20)
:SetMargin(0, 0, 0, 12)
:AddChild(UIElements.New("Checkbox", "inboxMessagesCheckbox")
:SetWidth("AUTO")
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Enable inbox chat messages"])
:SetSettingInfo(TSM.db.global.mailingOptions, "inboxMessages")
)
:AddChild(UIElements.New("Spacer", "spacer"))
)
:AddChild(UIElements.New("Text", "label")
:SetHeight(18)
:SetMargin(0, 0, 0, 4)
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Amount of bag space to keep free"])
)
:AddChild(UIElements.New("Frame", "freeSpaceFrame")
:SetLayout("HORIZONTAL")
:SetHeight(24)
:SetMargin(0, 0, 0, 8)
:AddChild(UIElements.New("Input", "keepMailInput")
:SetMargin(0, 8, 0, 0)
:SetBackgroundColor("ACTIVE_BG")
:SetValidateFunc("NUMBER", "0:20")
:SetSettingInfo(TSM.db.global.mailingOptions, "keepMailSpace")
)
:AddChild(UIElements.New("Text", "label")
:SetSize("AUTO", 16)
:SetFont("BODY_BODY3")
:SetText(L["Min 0 - Max 20"])
)
)
:AddChild(UIElements.New("Text", "label")
:SetHeight(18)
:SetMargin(0, 0, 0, 4)
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Open mail complete sound"])
)
:AddChild(UIElements.New("SelectionDropdown", "soundDropdown")
:SetHeight(24)
:SetItems(private.sounds, private.soundkeys)
:SetSettingInfo(TSM.db.global.mailingOptions, "openMailSound")
:SetScript("OnSelectionChanged", private.SoundOnSelectionChanged)
)
)
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Mailing", "send", L["Sending Settings"], "")
:AddChild(UIElements.New("Frame", "check1")
:SetLayout("HORIZONTAL")
:SetHeight(20)
:SetMargin(0, 0, 0, 12)
:AddChild(UIElements.New("Checkbox", "sendMessagesCheckbox")
:SetWidth("AUTO")
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Enable sending chat messages"])
:SetSettingInfo(TSM.db.global.mailingOptions, "sendMessages")
)
:AddChild(UIElements.New("Spacer", "spacer"))
)
:AddChild(UIElements.New("Frame", "check2")
:SetLayout("HORIZONTAL")
:SetHeight(20)
:SetMargin(0, 0, 0, 22)
:AddChild(UIElements.New("Checkbox", "sendItemsCheckbox")
:SetWidth("AUTO")
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Send grouped items individually"])
:SetSettingInfo(TSM.db.global.mailingOptions, "sendItemsIndividually")
)
:AddChild(UIElements.New("Spacer", "spacer"))
)
:AddChild(UIElements.New("Text", "label")
:SetHeight(20)
:SetMargin(0, 0, 0, 4)
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Restart delay (minutes)"])
)
:AddChild(UIElements.New("Frame", "restartDelayFrame")
:SetLayout("HORIZONTAL")
:SetHeight(24)
:SetMargin(0, 0, 0, 12)
:AddChild(UIElements.New("Input", "restartDelay")
:SetMargin(0, 8, 0, 0)
:SetBackgroundColor("ACTIVE_BG")
:SetValidateFunc("NUMBER", "0.5:10")
:SetValue(TSM.db.global.mailingOptions.resendDelay)
:SetScript("OnValueChanged", private.RestartDelayOnValueChanged)
)
:AddChild(UIElements.New("Text", "label")
:SetSize("AUTO", 16)
:SetFont("BODY_BODY3")
:SetText(L["Min 0.5 - Max 10"])
)
)
:AddChild(UIElements.New("Text", "label")
:SetHeight(20)
:SetMargin(0, 0, 0, 4)
:SetFont("BODY_BODY2_MEDIUM")
:SetText(L["Mail disenchantables max quality"])
)
:AddChild(UIElements.New("SelectionDropdown", "mailPageDropdown")
:SetHeight(26)
:SetItems(ITEM_QUALITY_DESCS, ITEM_QUALITY_KEYS)
:SetSettingInfo(TSM.db.global.mailingOptions, "deMaxQuality")
)
)
end
-- ============================================================================
-- Local Script Handlers
-- ============================================================================
function private.SoundOnSelectionChanged(self, selection)
Sound.PlaySound(TSM.db.global.mailingOptions.openMailSound)
end
function private.RestartDelayOnValueChanged(input)
local value = Math.Round(tonumber(input:GetValue()), 0.5)
TSM.db.global.mailingOptions.resendDelay = value
end