You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

726 lines
24 KiB

local addonName, addon = ...
addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local CollectionList = {}
addon.CollectionList = CollectionList
CollectionList.showAll = true
local MogItLoaded = false
function addon.Init:initCollectionList()
local f = CreateFrame("Frame", "BW_ColectionListFrame", BetterWardrobeCollectionFrame, "BW_ColectionListFrameTemplate")
end
function CollectionList:BuildCollectionList(complete)
local list = {}
local searchString = string.lower(WardrobeCollectionFrameSearchBox:GetText())
local filterCollected = C_TransmogCollection.GetCollectedShown()
local filterUncollected = C_TransmogCollection.GetUncollectedShown()
local filterSource = {}
local selectedCategory = BetterWardrobeCollectionFrame.ItemsCollectionFrame:GetActiveCategory()
for i = 1, 6 do
filterSource[i] = C_TransmogCollection.IsSourceTypeFilterChecked(i)
end
local collectionList = addon.CollectionList:CurrentList()
for visualID, _ in pairs(collectionList["item"]) do
local sources = C_TransmogCollection.GetAllAppearanceSources(visualID)
if sources then
local sourceInfo = C_TransmogCollection.GetSourceInfo(sources[1])
local camera = C_TransmogCollection.GetAppearanceCameraID(visualID)
sourceInfo.camera = camera
local isCollected = false
local sourceTypes = {}
for i,d in pairs(sources)do
local info = C_TransmogCollection.GetSourceInfo(d)
if info.sourceType then
sourceTypes[info.sourceType] = true
end
local collected = select(5,C_TransmogCollection.GetAppearanceSourceInfo(d))
if collected then
isCollected = true
end
end
local filter = false
for i in pairs(sourceTypes) do
if filterSource[i] then
filter = true
break
end
end
if #sourceTypes == 0 then
filter = true
end
local catType = sourceInfo.categoryID
local invTypeMatch = false
if CollectionList.showAll then
invTypeMatch = true
elseif (CollectionList.Category == 117 and catType == 19) then
invTypeMatch = true
elseif (CollectionList.Category == 116 and catType > 11 and catType ~= 19) then
invTypeMatch = true
else
invTypeMatch = catType == CollectionList.Category
end
if complete then
tinsert(list, sourceInfo)
elseif ((not isCollected and filterUncollected) or (isCollected and filterCollected)) and filter and invTypeMatch then
if searchString then
for i, data in pairs(sources) do
local source_info = C_TransmogCollection.GetSourceInfo(data)
local match = string.find(string.lower(source_info.name or ""), searchString) or string.find(string.lower(baseSet.label or ""), searchString) or string.find(string.lower(baseSet.description or ""), searchString)
if match then
tinsert(list, source_info)
break
end
end
else
tinsert(list, sourceInfo)
end
end
end
end
return list
end
function CollectionList:BuildShoppingList()
local collectionList = self:BuildCollectionList(true)
local shoppingList = {}
for _, data in ipairs(collectionList) do
local sources = C_TransmogCollection.GetAllAppearanceSources(data.visualID)
--local sources = C_TransmogCollection.GetAppearanceSources(data.visualID)
for _, data in pairs(sources) do
local sourceInfo = C_TransmogCollection.GetSourceInfo(data)
tinsert(shoppingList, sourceInfo)
end
end
return shoppingList
end
--Needs to to take account of variant
function CollectionList:UpdateList(type, typeID, add, sourceID)
typeID = tonumber(typeID)
if not typeID then return end
local addSet = false
local setName, setInfo, itemModID
local selectedList = CollectionList:SelectedCollectionList()
if selectedList == "MOGIT" then
return addon.MogIt.UpdateWishlistItem(type, typeID, add, sourceID)
end
local collectionList = addon.CollectionList:CurrentList()
if type == "item" then --TypeID is visualID
collectionList[type][typeID] = add or nil
if BetterWardrobeCollectionFrame.ItemsCollectionFrame:IsShown() then
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
print(add and L["Appearance added."] or L["Appearance removed."])
end
return collectionList[type][typeID]
else
local sources
if type == "set" then
sources = addon.GetSetSources(typeID)
setName = C_TransmogSets.GetSetInfo(typeID).name
else
setInfo = addon.GetSetInfo(typeID)
sources = addon.GetSetsources(typeID)
setName = "name"
itemModID = setInfo.mod or 0
end
collectionList[type][typeID] = (add and {}) or nil
for sourceID, isCollected in pairs(sources) do
local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID)
local visualID = C_TransmogCollection.GetItemInfo(sourceInfo.itemID, itemModID or sourceInfo.itemModID)--(type == "set" and sourceInfo.visualID) or addon.GetItemSource(sourceID, setInfo.mod)
if add and visualID then
collectionList[type][typeID][visualID] = add
end
addSet = self:UpdateList("item", visualID, add or nil)
end
----if type == "set" then
BetterWardrobeCollectionFrame.SetsCollectionFrame:OnSearchUpdate()
BetterWardrobeCollectionFrame.SetsTransmogFrame:OnSearchUpdate()
----else
---- BW_SetsTransmogFrame:OnSearchUpdate()
---- BW_SetsCollectionFrame:OnSearchUpdate()
-----end
--print(addSet and L["%s: Uncollected items added"]:format(setName) or L["No new appearces needed."])
return addSet
end
end
BetterWardrobeSetsCollectionListMixin = {}
function BetterWardrobeSetsCollectionListMixin:Toggle(toggleState)
if (IsShiftKeyDown()) then
CollectionList:GenerateListView()
else
local atTransmogrifier = C_Transmog.IsAtTransmogNPC()
local transmogLocation = TransmogUtil.GetTransmogLocation("HEADSLOT", Enum.TransmogType.Appearance, Enum.TransmogModification.Main)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:SetActiveSlot(transmogLocation)
--BetterWardrobeCollectionFrame.ItemsCollectionFrame:SetActiveSlot("HEADSLOT", Enum.TransmogType.Appearance)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
BetterWardrobeCollectionFrame.ItemsCollectionFrame.SlotsFrame:SetShown(not toggleState and not atTransmogrifier)
--WardrobeCollectionFrameWeaponDropDown:SetShown(not toggleState)
self.CollectionListTitle:SetShown(toggleState)
local listcount = CollectionList:ListCount("item")
self.CollectionListHelpText:SetShown(toggleState and listcount == 0)
self.SlotsFrame:SetShown(toggleState)
end
end
function BetterWardrobeSetsCollectionListMixin:SetTitle()
self.CollectionListTitle.Name:SetText(L["Collection List"])
self.CollectionListHelpText.Name:SetText(L["COLLECTION_LIST_HELP"])
end
function addon.Init:BuildCollectionList()
CollectionList:AddMogItData()
CollectionList:CreateDropdown()
end
local spacingNoSmallButton = 2
local spacingWithSmallButton = 12
local defaultSectionSpacing = 24
local shorterSectionSpacing = 19
function addon:GetActiveCategory()
return CollectionList.Category
end
function addon:IsWeaponCat()
return BW_CollectionListButton.ToggleState and CollectionList.Category and CollectionList.Category > 100
end
local catchAll = TransmogUtil.GetTransmogLocation("HEADSLOT", Enum.TransmogType.Appearance, Enum.TransmogModification.Main)
--function WardrobeItemsCollectionMixin:SetActiveSlot(transmogLocation, category, ignorePreviousSlot)
local function slotOnClick(self, transmogLocation)
local slotButtons = self.parent.Buttons
for i = 1, #slotButtons do
local button = slotButtons[i]
button.SelectedTexture:SetShown(button.transmogLocation:IsEqual(self.transmogLocation))
end
if self.transmogLocation:IsAppearance() then
CollectionList.Category = transmogLocation and self.transmogLocation:GetArmorCategoryID() or self.transmogLocation:GetSlotID() + 100
CollectionList.showAll = false
BetterWardrobeCollectionFrame.ItemsCollectionFrame:ChangeModelsSlot(transmogLocation)
else
CollectionList.Category = catchAll and catchAll:GetArmorCategoryID()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:ChangeModelsSlot(catchAll)
CollectionList.showAll = true
end
CloseDropDownMenus()
BW_CloseDropDownMenus()
PlaySound(SOUNDKIT.UI_TRANSMOG_GEAR_SLOT_CLICK)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
end
function BetterWardrobeSetsCollectionListMixin:CreateSlotButtons()
local slots = { "head", "shoulder", "back", "chest", "shirt", "tabard", "wrist", "hands", "waist", "legs", "feet", "mainhand", "secondaryhand" }
local parentFrame = self.SlotsFrame
local lastButton
local xOffset = spacingNoSmallButton
local button = CreateFrame("BUTTON", nil, parentFrame, "WardrobeSlotButtonTemplate")
button:SetSize(40,40)
button.NormalTexture:ClearAllPoints()
button.NormalTexture:SetAllPoints()
button.NormalTexture:SetAtlas("transmog-nav-slot-enchant", false)
button.transmogLocation = TransmogUtil.GetTransmogLocation("MAINHANDSLOT", Enum.TransmogType.Illusion, Enum.TransmogModification.Main)
button.parent = parentFrame
button.SelectedTexture:SetShown(true)
button:SetPoint("TOPLEFT")
button:SetScript("OnEnter", function(button) GameTooltip:SetOwner(button, "ANCHOR_RIGHT"); GameTooltip:SetText(L["View All"]); end)
button:SetScript("OnClick", function(button) slotOnClick(button, button.transmogLocation) end)
lastButton = button
for i = 1, #slots do
local value = tonumber(slots[i])
if (value) then
-- this is a spacer
xOffset = value
else
local slotString = slots[i]
local button = CreateFrame("BUTTON", nil, parentFrame, "WardrobeSlotButtonTemplate")
button.NormalTexture:SetAtlas("transmog-nav-slot-"..slotString, true)
if (lastButton) then
button:SetPoint("LEFT", lastButton, "RIGHT", xOffset, 0)
else
button:SetPoint("TOPLEFT")
end
button.slot = string.upper(slotString).."SLOT"
xOffset = spacingNoSmallButton
lastButton = button
button.parent = parentFrame
button.transmogLocation = TransmogUtil.GetTransmogLocation(button.slot, button.transmogType, button.modification)
button:SetScript("OnClick", function(button) slotOnClick(button , button.transmogLocation) end)
end
end
end
function CollectionList:Dropdown_OnClick(arg1, arg2, checked)
CollectionList:SelectedCollectionList(arg1)
--BW_UIDropDownMenu_SetSelectedID(BW_CollectionList_Dropdown, arg1)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
end
local MogItKey
local function GeneratorFunction(owner, rootDescription)
rootDescription:CreateTitle("Collection Lists");
rootDescription:SetTag("MENU_COLLECTION_LIST");
local list = addon.collectionListDB.profile.lists
for index, data in pairs(list) do
rootDescription:CreateRadio(data.name, function() return index == CollectionList:SelectedCollectionList() end, function()
CollectionList:SelectedCollectionList(index)
--BW_UIDropDownMenu_SetSelectedID(BW_CollectionList_Dropdown, arg1)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
end,index);
end
if MogItLoaded then
rootDescription:CreateButton( "MogIt Wishlist", function()
CollectionList:SelectedCollectionList(#list + 1)
--BW_UIDropDownMenu_SetSelectedID(BW_CollectionList_Dropdown, arg1)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
end);
end
end
--Dropdownmenu for the Collection List
function CollectionList:CreateDropdown()
BW_CollectionList_Dropdown = CreateFrame("DropdownButton", "BW_CollectionList_Dropdown", BW_ColectionListFrame, "WowStyle1DropdownTemplate")
BW_CollectionList_Dropdown:SetPoint("BOTTOM", BW_ColectionListFrame, "BOTTOM", 0, 15)
--BW_CollectionList_Dropdown:SetScript("OnMouseUp", function(button)
BW_CollectionList_Dropdown:SetupMenu(GeneratorFunction);
--end)
local level = BW_ColectionListFrame:GetFrameLevel()
BW_CollectionList_Dropdown:SetFrameLevel(level+1)
BW_ColectionListFrame.dropdownFrame = BW_CollectionList_Dropdown
local button = CreateFrame("Button", "BW_CollectionListOptionsButton", BW_CollectionList_Dropdown, "SquareIconButtonTemplate")
button:SetSize(30,30)
button:SetPoint("LEFT", "BW_CollectionList_Dropdown", "RIGHT", 1, 0)
button.Icon:SetTexture("Interface\\Buttons\\UI-OptionsButton")
button.Icon:SetSize(15,15)
button:SetScript("OnClick", function(button) CollectionList:OptionButton_OnClick(button) end)
end
local action
function CollectionList:OptionButton_OnClick(button)
local function GeneratorFunction(owner, rootDescription)
rootDescription:CreateButton(L["Add List"], function() action = "add"; BetterWardrobeOutfitManager:ShowPopup("BW_NAME_COLLECTION") end);
rootDescription:CreateButton(L["Rename"], function() action = "rename"; BetterWardrobeOutfitManager:ShowPopup("BW_NAME_COLLECTION") end);
rootDescription:CreateButton(L["Delete"], function() CollectionList:DeleteList()end);
rootDescription:CreateButton(L["Add by Item ID"], function() BetterWardrobeOutfitManager:ShowPopup("BETTER_WARDROBE_COLLECTIONLIST_ITEM_POPUP") end);
end
MenuUtil.CreateContextMenu(parent, GeneratorFunction);
end
function CollectionList:AddMogItData()
MogItLoaded = C_AddOns.IsAddOnLoaded("MogIt")
if not MogItLoaded and CollectionList:SelectedCollectionList() == "MOGIT" then
CollectionList:SelectedCollectionList(1)
end
end
function CollectionList:AddList(name)
if not name then return false end
local profile = addon.collectionListDB.profile
local default = {item = {}, set = {}, extraset = {}, name = name}
tinsert(profile.lists, default)
local list = CollectionList:SelectedCollectionList(#profile.lists)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
BW_CollectionList_Dropdown:SetupMenu(GeneratorFunction);
return true
end
function CollectionList:RenameList(name)
if not name then return false end
local profile = addon.collectionListDB.profile
local list = CollectionList:CurrentList()
list.name = name
--BW_CollectionList_DropdownText:SetText(list.name)
BW_CollectionList_Dropdown:SetupMenu(GeneratorFunction);
return true
end
function CollectionList:DeleteList()
local profile = addon.collectionListDB.profile
if #profile.lists == 1 then
--Error cant delete last list
return false
end
tremove(profile.lists, CollectionList:SelectedCollectionList())
CollectionList:SelectedCollectionList(1)
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
BW_CollectionList_Dropdown:SetupMenu(GeneratorFunction);
return true
end
function CollectionList:IsInList(itemID, itemType, full)
itemType = itemType or "item"
if full then
local profile = addon.collectionListDB.profile.lists
local count = 0
for i, data in ipairs(profile) do
local collectionList = profile[i]
if not collectionList then return end
local isInList = collectionList[itemType][itemID]
if isInList then count = count + 1 end
end
return count ~= 0, count
else
local collectionList = addon.CollectionList:CurrentList()
local isInList = collectionList[itemType][itemID] or false
return isInList
end
end
--[[ if Wow.IsAddonEnabled("TheUndermineJournal") and TUJMarketInfo then
local function GetTUJPrice(itemLink, arg)
local data = TUJMarketInfo(itemLink)
return data and data[arg] or nil
end
]]
function CollectionList:ListCount(type)
local list = CollectionList:CurrentList()
local counter = 0
if not list then return counter end
type = type or "item"
list = list[type]
for i in pairs(list) do
counter = counter + 1
end
return counter
end
function CollectionList:CurrentList()
local selectedList = CollectionList:SelectedCollectionList()
if selectedList == MogItKey then
return addon.MogIt.GetMogitWishlist()
else
return addon.collectionListDB.profile.lists[selectedList]
end
end
--Returns selected list and sets list if value is included
function CollectionList:SelectedCollectionList(value)
if value then
addon.collectionListDB.profile.selectedCollectionList = value
local list = CollectionList:CurrentList()
if not list then return end
end
return addon.collectionListDB.profile.selectedCollectionList
end
local function GetCustomPriceValue(source, itemID)
return TSM_API.GetCustomPriceValue(source, itemID)
end
local function MoneyToString(priceMarket)
return TSM_API.FormatMoneyString(priceMarket)
end
local TSMSources
local function TSMPricelookup(itemID)
if (not C_AddOns.IsAddOnLoaded("TradeSkillMaster")) then return "" end
if not TSMSources then
TSMSources = {}
TSM_API.GetPriceSourceKeys(TSMSources)
end
local source = TSMSources[addon.db.profile["TSM_Market"]] or "DBMarket"
return MoneyToString((GetCustomPriceValue(source, "i:"..itemID) or 0))
end
local function GetBossInfo(itemID)
local drops = C_TransmogCollection.GetAppearanceSourceDrops(itemID)
local sourceText = ""
if (#drops == 1) then
sourceText = _G["TRANSMOG_SOURCE_"..TRANSMOG_SOURCE_BOSS_DROP]..": "..string.format(WARDROBE_TOOLTIP_ENCOUNTER_SOURCE, drops[1].encounter, drops[1].instance)
showDifficulty = true
end
return sourceText
end
local LISTWINDOW
local AceGUI = LibStub("AceGUI-3.0")
function CollectionList:GenerateListView()
if self.LISTWINDOW then self.LISTWINDOW:Hide() end
-- Create a container frame
local f = AceGUI:Create("Window")
f:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end)
f:SetTitle("Collection List")
f:SetLayout("Flow")
--f:SetAutoAdjustHeight(true)
f:EnableResize(false)
_G["BetterWardrobeCollectionListWindow"] = f.frame
self.LISTWINDOW = f
tinsert(UISpecialFrames, "BetterWardrobeCollectionListWindow")
local scrollcontainer = AceGUI:Create("SimpleGroup")
scrollcontainer:SetFullWidth(true)
scrollcontainer:SetHeight(f.frame:GetHeight()-75)
scrollcontainer:SetLayout("Fill") -- important!
f:AddChild(scrollcontainer)
local scroll = AceGUI:Create("ScrollFrame")
scroll:SetLayout("Flow")
scroll:SetFullWidth(true)
scroll:SetFullHeight(true)
scrollcontainer:AddChild(scroll)
local btn = AceGUI:Create("Button")
btn:SetWidth(170)
btn:SetHeight(25)
btn:SetText(L["Export TSM Groups"])
btn:SetCallback("OnClick", function() CollectionList:TSMGroupExport() end)
f:AddChild(btn)
btn:ClearAllPoints()
btn:SetPoint("BOTTOMRIGHT")
local list = CollectionList:BuildShoppingList()
for i, data in ipairs(list) do
if data then
local GetItemInfo = C_Item and C_Item.GetItemInfo
local _, itemLink, _, _, _, _, _, _, _, itemIcon, _, _, _, _, expacID = GetItemInfo(data.itemID)
local nameColor = ITEM_QUALITY_COLORS[data.quality] or ""
local transmogSource = data.sourceType and _G["TRANSMOG_SOURCE_"..(data.sourceType)] or L.OM_GOLD..L["Collected"]..L.ENDCOLOR
local bossInfo = ""
local CheckBox = AceGUI:Create("InteractiveLabel")
local priceText = TSMPricelookup(data.itemID)
local name = data.name and nameColor.hex..data.name..L.ENDCOLOR or ""
if data.sourceType and data.sourceType == 1 then
bossinfo = GetBossInfo(data.sourceID)
CheckBox:SetText(L.COLLECTIONLIST_TEXT:format(name, bossinfo))
elseif data.sourceType and (data.sourceType == 3 or data.sourceType == 4 or data.sourceType == 6) then
CheckBox:SetText(L.SHOPPINGLIST_TEXT:format(name, transmogSource, priceText))
else
CheckBox:SetText(L.COLLECTIONLIST_TEXT:format(name, transmogSource))
end
CheckBox:SetImage(itemIcon)
CheckBox:SetImageSize(20,20)
CheckBox:SetFullWidth(true)
if i == 1 or list[i-1].visualID ~= data.visualID then
local Heading = AceGUI:Create("Heading")
Heading:SetFullWidth(true)
scroll:AddChild(Heading)
end
CheckBox:SetCallback("OnClick", function()
if IsModifiedClick("CHATLINK") then
if (itemLink) then
HandleModifiedItemClick(itemLink)
end
elseif IsModifiedClick("DRESSUP") then
DressUpVisual(data.sourceID)
end
end)
CheckBox:SetCallback("OnEnter", function()
GameTooltip:SetOwner(UIParent, "ANCHOR_CURSOR", 0, 0)
if itemLink then
GameTooltip:SetHyperlink(itemLink)
GameTooltip:Show()
end
end)
CheckBox:SetCallback("OnLeave", function()
GameTooltip:Hide()
end)
scroll:AddChild(CheckBox)
end
end
end
function CollectionList:TSMGroupExport()
if self.LISTWINDOW then self.LISTWINDOW:Hide() end
local f = AceGUI:Create("Window")
f:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end)
--f:SetTitle("TSM Export")
f:SetLayout("Fill")
--f:SetAutoAdjustHeight(true)
f:EnableResize(false)
_G["BetterWardrobeCollectionExportWindow"] = f.frame
LISTWINDOW = f
tinsert(UISpecialFrames, "BetterWardrobeCollectionExportWindow")
local CheckBox = AceGUI:Create("MultiLineEditBox")
CheckBox:SetFullHeight(true)
CheckBox:SetFullWidth(true)
CheckBox:DisableButton(true)
CheckBox:SetLabel("")
f:AddChild(CheckBox)
local list = CollectionList:BuildShoppingList()
local itemString = ""
local groupCount = 1
local lastVisual
for i, data in ipairs(list) do
if data.sourceType and (data.sourceType == 3 or data.sourceType == 4 or data.sourceType == 6) then
if i == 1 or lastVisual ~= data.visualID then
itemString = L["%sgroup:Appearance Group %s,"]:format(itemString, groupCount)
groupCount = groupCount + 1
lastVisual = data.visualID
end
itemString = itemString.."i:"..data.itemID..","
end
end
CheckBox:SetText(itemString)
end
function CollectionListTooltip_OnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
GameTooltip:SetText(L["Click: Show Collection List"])
GameTooltip:AddLine(L["Shift Click: Show Detail List"])
GameTooltip:Show()
end
BW_CollectionListDropDownMixin = {}
function BW_CollectionListDropDownMixin:OnLoad()
local button = _G[self:GetName().."Button"]
button:Hide()
end
StaticPopupDialogs["BETTER_WARDROBE_COLLECTIONLIST_ITEM_POPUP"] = {
text = L["Type the item ID in the text box below"],
preferredIndex = 3,
button1 = ADD,
button2 = CANCEL,
hasEditBox = true,
maxLetters = 512,
editBoxWidth = 260,
OnShow = function() if LISTWINDOW then LISTWINDOW:Hide() end end,
OnAccept = function(self)
local itemID = self.editBox:GetText()
if not itemID then return false end
local appearanceID, sourceID = C_TransmogCollection.GetItemInfo(tonumber(itemID))
if not appearanceID then return false end
CollectionList:UpdateList("item", appearanceID, true)
end,
EditBoxOnEnterPressed = function(self)
if self:GetParent().button1:IsEnabled() then
StaticPopup_OnClick(self:GetParent(), 1)
end
end,
EditBoxOnEscapePressed = HideParentPanel,
exclusive = true,
whileDead = true,
}
StaticPopupDialogs["BW_NAME_COLLECTION"] = {
preferredIndex = 3,
text = L["List Name"],
button1 = SAVE,
button2 = CANCEL,
OnAccept = function(self)
local name = self.editBox:GetText()
if action == "add" then
CollectionList:AddList(name)
elseif action == "rename" then
CollectionList:RenameList(name)
end
action = nil
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
hasEditBox = 1,
maxLetters = 31,
OnShow = function(self)
self.button1:Disable()
self.button2:Enable()
self.editBox:SetFocus()
end,
OnHide = function(self)
self.editBox:SetText("")
end,
EditBoxOnEnterPressed = function(self)
if self:GetParent().button1:IsEnabled() then
StaticPopup_OnClick(self:GetParent(), 1)
end
end,
EditBoxOnTextChanged = function (self)
local parent = self:GetParent()
if parent.editBox:GetText() ~= "" then
parent.button1:Enable()
else
parent.button1:Disable()
end
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide()
end
}