initial commit
This commit is contained in:
225
Core/UI/MainUI/Settings/Auctioning.lua
Normal file
225
Core/UI/MainUI/Settings/Auctioning.lua
Normal file
@@ -0,0 +1,225 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster --
|
||||
-- https://tradeskillmaster.com --
|
||||
-- All Rights Reserved - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
local _, TSM = ...
|
||||
local Auctioning = TSM.MainUI.Settings:NewPackage("Auctioning")
|
||||
local L = TSM.Include("Locale").GetTable()
|
||||
local Sound = TSM.Include("Util.Sound")
|
||||
local String = TSM.Include("Util.String")
|
||||
local Log = TSM.Include("Util.Log")
|
||||
local UIElements = TSM.Include("UI.UIElements")
|
||||
local private = {
|
||||
sounds = {},
|
||||
soundkeys = {},
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Module Functions
|
||||
-- ============================================================================
|
||||
|
||||
function Auctioning.OnInitialize()
|
||||
TSM.MainUI.Settings.RegisterSettingPage(L["Auctioning"], "middle", private.GetAuctioningSettingsFrame)
|
||||
for key, name in pairs(Sound.GetSounds()) do
|
||||
tinsert(private.sounds, name)
|
||||
tinsert(private.soundkeys, key)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Auctioning Settings UI
|
||||
-- ============================================================================
|
||||
|
||||
function private.GetAuctioningSettingsFrame()
|
||||
TSM.UI.AnalyticsRecordPathChange("main", "settings", "auctioning")
|
||||
return UIElements.New("ScrollFrame", "auctioningSettings")
|
||||
:SetPadding(8, 8, 8, 0)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Auctioning", "auctioning", L["General Options"], L["Some general Auctioning options are below."])
|
||||
:AddChild(UIElements.New("Frame", "check1")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 12)
|
||||
:AddChild(UIElements.New("Checkbox", "cancelBids")
|
||||
:SetWidth("AUTO")
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Cancel auctions with bids"])
|
||||
:SetSettingInfo(TSM.db.global.auctioningOptions, "cancelWithBid")
|
||||
)
|
||||
:AddChild(UIElements.New("Spacer", "spacer"))
|
||||
)
|
||||
:AddChild(UIElements.New("Frame", "check2")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetHeight(20)
|
||||
:AddChild(UIElements.New("Checkbox", "invalidPrice")
|
||||
:SetWidth("AUTO")
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Disable invalid price warnings"])
|
||||
:SetSettingInfo(TSM.db.global.auctioningOptions, "disableInvalidMsg")
|
||||
)
|
||||
:AddChild(UIElements.New("Spacer", "spacer"))
|
||||
)
|
||||
)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Auctioning", "sounds", L["Auction House Sounds"], L["Setup various sounds that play when doing Auctioning scans."])
|
||||
:AddChild(UIElements.New("Frame", "labelLine1")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:AddChild(UIElements.New("Text", "scan")
|
||||
:SetMargin(0, 12, 0, 0)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Scan complete sound"])
|
||||
)
|
||||
:AddChild(UIElements.New("Text", "confirm")
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Confirm complete sound"])
|
||||
)
|
||||
)
|
||||
:AddChild(UIElements.New("Frame", "dropdownLine1")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetHeight(24)
|
||||
:SetMargin(0, 0, 0, 12)
|
||||
:AddChild(UIElements.New("SelectionDropdown", "scanComplete")
|
||||
:SetMargin(0, 12, 0, 0)
|
||||
:SetItems(private.sounds, private.soundkeys)
|
||||
:SetSettingInfo(TSM.db.global.auctioningOptions, "scanCompleteSound")
|
||||
:SetScript("OnSelectionChanged", private.SoundOnSelectionChanged)
|
||||
)
|
||||
:AddChild(UIElements.New("SelectionDropdown", "confirmComplete")
|
||||
:SetItems(private.sounds, private.soundkeys)
|
||||
:SetSettingInfo(TSM.db.global.auctioningOptions, "confirmCompleteSound")
|
||||
:SetScript("OnSelectionChanged", private.SoundOnSelectionChanged)
|
||||
)
|
||||
)
|
||||
:AddChild(UIElements.New("Text", "saleLabel")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Auction sale sound"])
|
||||
)
|
||||
:AddChild(UIElements.New("SelectionDropdown", "saleDropdown")
|
||||
:SetHeight(24)
|
||||
:SetItems(private.sounds, private.soundkeys)
|
||||
:SetSettingInfo(TSM.db.global.coreOptions, "auctionSaleSound")
|
||||
:SetScript("OnSelectionChanged", private.SoundOnSelectionChanged)
|
||||
)
|
||||
)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Auctioning", "whitelist", L["Whitelist"], L["TSM will not undercut any players you add to your whitelist."])
|
||||
:AddChild(UIElements.New("Text", "matchLabel")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Match whitelisted players"])
|
||||
)
|
||||
:AddChild(UIElements.New("ToggleOnOff", "matchToggle")
|
||||
:SetHeight(24)
|
||||
:SetMargin(0, 0, 0, 12)
|
||||
:SetSettingInfo(TSM.db.global.auctioningOptions, "matchWhitelist")
|
||||
)
|
||||
:AddChild(UIElements.New("Text", "addLabel")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Whitelisted characters"])
|
||||
)
|
||||
:AddChild(UIElements.New("Input", "newPlayerInput")
|
||||
:SetHeight(24)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetBackgroundColor("ACTIVE_BG")
|
||||
:SetHintText(L["Enter player name"])
|
||||
:SetScript("OnEnterPressed", private.NewPlayerOnEnterPressed)
|
||||
)
|
||||
:AddChild(UIElements.New("Frame", "whitelistFrame")
|
||||
:SetLayout("FLOW")
|
||||
:SetHeight(60)
|
||||
:AddChildrenWithFunction(private.AddWhitelistRows)
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
function private.AddWhitelistRows(containerFrame)
|
||||
for player in pairs(TSM.db.factionrealm.auctioningOptions.whitelist) do
|
||||
private.AddWhitelistRow(containerFrame, player)
|
||||
end
|
||||
end
|
||||
|
||||
function private.AddWhitelistRow(frame, player)
|
||||
frame:AddChild(UIElements.New("Frame", "whitelist_"..player)
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetSize(100, 20)
|
||||
:SetMargin(0, 12, 0, 0)
|
||||
:AddChild(UIElements.New("Text", "text")
|
||||
:SetWidth("AUTO")
|
||||
:SetMargin(0, 2, 0, 0)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(player)
|
||||
)
|
||||
:AddChild(UIElements.New("Button", "removeBtn")
|
||||
:SetBackgroundAndSize("iconPack.14x14/Close/Circle")
|
||||
:SetContext(player)
|
||||
:SetScript("OnClick", private.RemoveWhitelistOnClick)
|
||||
)
|
||||
:AddChild(UIElements.New("Spacer", "spacer"))
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Local Script Handlers
|
||||
-- ============================================================================
|
||||
|
||||
function private.SoundOnSelectionChanged(self)
|
||||
Sound.PlaySound(self:GetSelectedItemKey())
|
||||
end
|
||||
|
||||
function private.NewPlayerOnEnterPressed(input)
|
||||
local newPlayer = strlower(input:GetValue())
|
||||
input:SetValue("")
|
||||
input:Draw()
|
||||
if newPlayer == "" or strfind(newPlayer, ",") or newPlayer ~= String.Escape(newPlayer) then
|
||||
Log.PrintfUser(L["Invalid player name."])
|
||||
return
|
||||
elseif TSM.db.factionrealm.auctioningOptions.whitelist[newPlayer] then
|
||||
Log.PrintfUser(L["The player \"%s\" is already on your whitelist."], TSM.db.factionrealm.auctioningOptions.whitelist[newPlayer])
|
||||
return
|
||||
end
|
||||
|
||||
local isAlt = false
|
||||
for factionrealm in TSM.db:GetConnectedRealmIterator("factionrealm") do
|
||||
for _, character in TSM.db:FactionrealmCharacterIterator(factionrealm) do
|
||||
if strlower(newPlayer) == strlower(character) then
|
||||
Log.PrintfUser(L["You do not need to add \"%s\", alts are whitelisted automatically."], newPlayer)
|
||||
isAlt = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if isAlt then
|
||||
return
|
||||
end
|
||||
|
||||
TSM.db.factionrealm.auctioningOptions.whitelist[newPlayer] = newPlayer
|
||||
|
||||
-- add a new row to the UI
|
||||
local frame = input:GetElement("__parent.whitelistFrame")
|
||||
private.AddWhitelistRow(frame, newPlayer)
|
||||
frame:Draw()
|
||||
end
|
||||
|
||||
function private.RemoveWhitelistOnClick(self)
|
||||
local player = self:GetContext()
|
||||
TSM.db.factionrealm.auctioningOptions.whitelist[player] = nil
|
||||
|
||||
-- remove this row
|
||||
local row = self:GetParentElement()
|
||||
local frame = row:GetParentElement()
|
||||
frame:RemoveChild(row)
|
||||
row:Release()
|
||||
frame:Draw()
|
||||
end
|
||||
Reference in New Issue
Block a user