168 lines
5.8 KiB
Lua
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
|