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.
586 lines
18 KiB
586 lines
18 KiB
|
1 year ago
|
local addonName, addon = ...
|
||
|
|
addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
|
||
|
|
|
||
|
|
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
|
||
|
|
local AceGUI = LibStub("AceGUI-3.0")
|
||
|
|
|
||
|
|
|
||
|
|
local CollectionList = addon.CollectionList
|
||
|
|
CollectionList.showAll = true
|
||
|
|
|
||
|
|
local MogItLoaded = false
|
||
|
|
local refresh = false
|
||
|
|
local LISTWINDOW
|
||
|
|
local vendorDB = {}
|
||
|
|
local locationDB = {}
|
||
|
|
|
||
|
|
local RetrievingDataText = RED_FONT_COLOR_CODE..RETRIEVING_ITEM_INFO
|
||
|
|
|
||
|
|
local function GetBossInfo(itemID)
|
||
|
|
local drops = C_TransmogCollection.GetAppearanceSourceDrops(itemID)
|
||
|
|
local sourceText = ""
|
||
|
|
if #drops == 1 then
|
||
|
|
sourceText = string.format(WARDROBE_TOOLTIP_ENCOUNTER_SOURCE, drops[1].encounter, drops[1].instance)
|
||
|
|
|
||
|
|
local drop = drops[1]
|
||
|
|
local diffText = drop.difficulties[1]
|
||
|
|
if diffText then
|
||
|
|
for i = 2, #drop.difficulties do
|
||
|
|
diffText = diffText..", "..drop.difficulties[i]
|
||
|
|
end
|
||
|
|
|
||
|
|
sourceText = sourceText.." "..string.format(PARENS_TEMPLATE, diffText)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return sourceText
|
||
|
|
end
|
||
|
|
|
||
|
|
local inspectScantip = CreateFrame("GameTooltip", addonName.."ScanningTooltip", nil, "GameTooltipTemplate")
|
||
|
|
inspectScantip:SetOwner(UIParent, "ANCHOR_NONE")
|
||
|
|
local needsRefresh
|
||
|
|
local refreshData
|
||
|
|
local function GetQuestnfo(questData)
|
||
|
|
--for i = 1, #questData do
|
||
|
|
local sourceData
|
||
|
|
local questID = questData
|
||
|
|
local questName
|
||
|
|
local link = "quest:"..questID
|
||
|
|
inspectScantip:SetHyperlink("quest:"..questID)
|
||
|
|
--local link = "\124cffffff00\124Hquest:%s\124h[%s]\124h\124r"
|
||
|
|
|
||
|
|
if inspectScantip:NumLines() > 0 then
|
||
|
|
needsRefresh = nil
|
||
|
|
local tooltipLine = _G[addonName.."ScanningTooltipTextLeft1"]
|
||
|
|
local text = tooltipLine:GetText()
|
||
|
|
if text and text ~= "" then
|
||
|
|
questName = text
|
||
|
|
--link = link:format(questID,questName)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
needsRefresh = true
|
||
|
|
end
|
||
|
|
inspectScantip:ClearLines()
|
||
|
|
--local zoneName = ("%s: "):format(locationDB[questID][1]) --GetZoneName(QuestToZone[questID],"%s: ").
|
||
|
|
local questlocationDB = _G.BetterWardrobeData.questlocationDB or {}
|
||
|
|
local zoneid = questlocationDB[tonumber(questID)]
|
||
|
|
local zoneid = zoneid and zoneid[1] or 0
|
||
|
|
local zoneName = locationDB[zoneid] --GetZoneName(QuestToZone[questID],"%s: ")
|
||
|
|
|
||
|
|
return questName, zoneName, questID, link
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
local function GetDropInfo(dropData)
|
||
|
|
local zonelist = {}
|
||
|
|
local objectlist = {}
|
||
|
|
local containerlist = {}
|
||
|
|
|
||
|
|
for zoneID in string.gmatch(dropData, "(%w+),") do
|
||
|
|
if string.match(zoneID, "c") then
|
||
|
|
zoneID = string.gsub(tostring(zoneID),"c","")
|
||
|
|
table.insert(containerlist, tonumber(zoneID))
|
||
|
|
|
||
|
|
elseif string.match(zoneID, "o") then
|
||
|
|
zoneID = string.gsub(tostring(zoneID),"o","")
|
||
|
|
table.insert(objectlist, tonumber(zoneID))
|
||
|
|
|
||
|
|
else
|
||
|
|
table.insert(zonelist, tonumber(zoneID))
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
return zonelist, objectlist, containerlist
|
||
|
|
end
|
||
|
|
|
||
|
|
local function GetSourceInfo(itemID)
|
||
|
|
local zonelist = {}
|
||
|
|
local objectlist = {}
|
||
|
|
local containerlist = {}
|
||
|
|
local questList = {}
|
||
|
|
local achievementList = {}
|
||
|
|
local professionList = {}
|
||
|
|
local vendorList = {}
|
||
|
|
local itemSourceDB = (_G.BetterWardrobeData and _G.BetterWardrobeData.sourceDB )or {}
|
||
|
|
local dropData = itemSourceDB[tonumber(itemID)]
|
||
|
|
|
||
|
|
if dropData then
|
||
|
|
--for sourceID in string.gmatch(dropData, '(%a:%-?%d+:-),') do
|
||
|
|
|
||
|
|
for sourceID in string.gmatch(dropData, '(%a:%-?%d+:-"-[%s%w%p]-"-),') do
|
||
|
|
if string.match(sourceID, "p:") then
|
||
|
|
--sourceID = string.gsub(tostring(sourceID),"p","")
|
||
|
|
for id, pr in string.gmatch(sourceID, 'p:(%w+):(.+)') do
|
||
|
|
table.insert(professionList, {id,pr})
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "c:") then
|
||
|
|
sourceID = string.gsub(tostring(sourceID),"c:","")
|
||
|
|
table.insert(containerlist, tonumber(sourceID))
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "o:") then
|
||
|
|
sourceID = string.gsub(tostring(sourceID),"o:","")
|
||
|
|
table.insert(objectlist, tonumber(sourceID))
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "q:") then
|
||
|
|
for id in string.gmatch(sourceID, 'q:(%w+)') do
|
||
|
|
table.insert(questList, id)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "v:") then
|
||
|
|
for id, pr in string.gmatch(sourceID, 'v:(%w+):(.+)') do
|
||
|
|
table.insert(vendorList, {id,pr})
|
||
|
|
end
|
||
|
|
--table.insert(vendorList, tonumber(sourceID))
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "a:") then
|
||
|
|
sourceID = string.gsub(tostring(sourceID),"a:","")
|
||
|
|
table.insert(achievementList, tonumber(sourceID))
|
||
|
|
|
||
|
|
elseif string.match(sourceID, "l:") then
|
||
|
|
sourceID = string.gsub(tostring(sourceID),"l:","")
|
||
|
|
table.insert(zonelist, tonumber(sourceID))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
else
|
||
|
|
end
|
||
|
|
|
||
|
|
return zonelist, objectlist, containerlist, questList, achievementList, professionList, vendorList
|
||
|
|
|
||
|
|
--[[for i = 1, #questData do
|
||
|
|
local sourceData
|
||
|
|
local questID = questData[i]
|
||
|
|
local questName
|
||
|
|
inspectScantip:SetHyperlink("quest:"..questID)
|
||
|
|
--local link = "\124cffffff00\124Hquest:%s\124h[%s]\124h\124r"
|
||
|
|
|
||
|
|
|
||
|
|
if inspectScantip:NumLines() > 0 then
|
||
|
|
local tooltipLine = _G[addonName.."ScanningTooltipTextLeft1"]
|
||
|
|
local text = tooltipLine:GetText()
|
||
|
|
if text and text ~= "" then
|
||
|
|
questName = text
|
||
|
|
--link = link:format(questID,questName)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
inspectScantip:ClearLines()
|
||
|
|
--local zoneName = ("%s: "):format(locationDB[questID][1]) --GetZoneName(QuestToZone[questID],"%s: ")
|
||
|
|
local zoneName = locationDB[questID][1] or "" --GetZoneName(QuestToZone[questID],"%s: ")
|
||
|
|
|
||
|
|
if questName then
|
||
|
|
return questName or "", zoneName
|
||
|
|
--GameTooltip:AddLine(zoneName..questName)
|
||
|
|
--else
|
||
|
|
--GameTooltip:AddLine(zoneName.."Quest: "..questID)
|
||
|
|
end
|
||
|
|
end]]
|
||
|
|
end
|
||
|
|
|
||
|
|
local function BuildSourceList(visualID)
|
||
|
|
if not IsAddOnLoaded("BetterWardrobe_SourceData") then
|
||
|
|
EnableAddOn("BetterWardrobe_SourceData")
|
||
|
|
LoadAddOn("BetterWardrobe_SourceData")
|
||
|
|
vendorDB = (_G.BetterWardrobeData and _G.BetterWardrobeData.vendorDB) or {}
|
||
|
|
locationDB = (_G.BetterWardrobeData and _G.BetterWardrobeData.locationDB) or {}
|
||
|
|
end
|
||
|
|
|
||
|
|
local itemSourceDB =( _G.BetterWardrobeData and _G.BetterWardrobeData.sourceDB) or {}
|
||
|
|
|
||
|
|
local sources = C_TransmogCollection.GetAllAppearanceSources(visualID)
|
||
|
|
local sourceID = sources and sources.sourceID
|
||
|
|
local data = {}
|
||
|
|
local data_index = 1
|
||
|
|
if sources then
|
||
|
|
for i=1,#sources do
|
||
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(sources[i])
|
||
|
|
local _,_,_,_,_,itemLink = C_TransmogCollection.GetAppearanceSourceInfo(sources[i])
|
||
|
|
if itemLink then
|
||
|
|
local itemID = itemLink:match("item:(%d+)")
|
||
|
|
itemID = tonumber(itemID)
|
||
|
|
local sourceData = itemID and itemSourceDB[itemID] or sourceInfo
|
||
|
|
local sourceType = sourceInfo.sourceType
|
||
|
|
--Don't want to list items with hidden sources
|
||
|
|
if sourceType then
|
||
|
|
data[data_index] = {
|
||
|
|
["itemID"] = itemID ,
|
||
|
|
["itemLink"] = itemLink,
|
||
|
|
["sourceType"] = sourceType,
|
||
|
|
["sourceData"] = sourceData,
|
||
|
|
["sourceID"] = sources[i],
|
||
|
|
}
|
||
|
|
data_index = data_index + 1
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
return data
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
local function GetZoneName(zone)
|
||
|
|
return ""
|
||
|
|
end
|
||
|
|
|
||
|
|
local function GetPrice(itemID)
|
||
|
|
local itemCostDB = (_G.BetterWardrobeData and _G.BetterWardrobeData.itemCostDB) or {}
|
||
|
|
local data = itemCostDB[tonumber(itemID)] or "NoData"
|
||
|
|
local prices, item, currency = 0, {}, {}
|
||
|
|
|
||
|
|
local index = 0
|
||
|
|
for price in string.gmatch(data, '([%d,]-):') do
|
||
|
|
index = index + 1
|
||
|
|
if index == 1 then
|
||
|
|
prices = price
|
||
|
|
|
||
|
|
elseif index == 2 then
|
||
|
|
for itemID, cost in string.gmatch(price, '(%d+),(%d+)') do
|
||
|
|
if tonumber(itemID) ~= 0 then
|
||
|
|
table.insert(currency, tonumber(itemID))
|
||
|
|
table.insert(currency, tonumber(cost))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif index == 3 then
|
||
|
|
for itemID, cost in string.gmatch(price, '(%d+),(%d+)') do
|
||
|
|
if tonumber(itemID) ~= 0 then
|
||
|
|
table.insert(item, tonumber(itemID))
|
||
|
|
table.insert(item, cost)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
return prices, currency, item
|
||
|
|
end
|
||
|
|
|
||
|
|
local refresh_count = 0
|
||
|
|
local function AddAdditional(parent, index, data, itemID)
|
||
|
|
local f = {}
|
||
|
|
local Collected = AceGUI:Create("Icon")
|
||
|
|
Collected:SetImageSize(20,20)
|
||
|
|
Collected:SetWidth(30)
|
||
|
|
parent:AddChild(Collected)
|
||
|
|
|
||
|
|
local SourceInfo = AceGUI:Create("InteractiveLabel")
|
||
|
|
SourceInfo:SetHeight(20)
|
||
|
|
local link, sourceName
|
||
|
|
|
||
|
|
--Boss Drop
|
||
|
|
if index == 0 then
|
||
|
|
sourceName = data
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_1"] or ""
|
||
|
|
SourceInfo:SetText(("-%s: %s"):format(transmogSource, sourceName or L["No Data Available"]))
|
||
|
|
|
||
|
|
--World Drop
|
||
|
|
elseif index == 1 then
|
||
|
|
sourceName = data
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_4"] or ""
|
||
|
|
local zoneList = ""
|
||
|
|
for index, zone in ipairs(data) do
|
||
|
|
if locationDB[zone] then
|
||
|
|
zoneList = zoneList .. (locationDB[zone])..", "
|
||
|
|
end
|
||
|
|
end
|
||
|
|
SourceInfo:SetText(("-%s: %s"):format(transmogSource, zoneList))
|
||
|
|
|
||
|
|
--Container
|
||
|
|
elseif index == 2 then
|
||
|
|
local item = Item:CreateFromItemID(tonumber(data))
|
||
|
|
item:ContinueOnItemLoad(function()
|
||
|
|
local name = item:GetItemName()
|
||
|
|
SourceInfo:SetText(("-%s: %s"):format(L["Created by"], name))
|
||
|
|
end)
|
||
|
|
elseif index == 3 then
|
||
|
|
local item = Item:CreateFromItemID(tonumber(data))
|
||
|
|
item:ContinueOnItemLoad(function()
|
||
|
|
local name = item:GetItemName()
|
||
|
|
SourceInfo:SetText(("-%s: %s"):format(L["Contained in"], name))
|
||
|
|
end)
|
||
|
|
|
||
|
|
--Quest
|
||
|
|
elseif index == 4 then
|
||
|
|
sourceName, zoneName, questID, link = GetQuestnfo(data)
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_2"] or ""
|
||
|
|
|
||
|
|
if sourceName then
|
||
|
|
sourceName = ACHIEVEMENT_COLOR_CODE..sourceName..L.ENDCOLOR
|
||
|
|
else
|
||
|
|
if refresh_count < 100 then
|
||
|
|
sourceName = RetrievingDataText..L.ENDCOLOR
|
||
|
|
else
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if zoneName then
|
||
|
|
SourceInfo:SetText(("-%s: %s - [%s] "):format(transmogSource, zoneName, sourceName or L["No Data Available"].." (QuestID:"..questID..")"))
|
||
|
|
else
|
||
|
|
SourceInfo:SetText(("-%s: [%s] "):format(transmogSource, sourceName or "Quest"..questID))
|
||
|
|
end
|
||
|
|
|
||
|
|
--Achievement
|
||
|
|
elseif index == 5 then
|
||
|
|
local id, name, points = GetAchievementInfo(data)
|
||
|
|
sourceName = name
|
||
|
|
link = GetAchievementLink(id)
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_5"] or ""
|
||
|
|
sourceName = ACHIEVEMENT_COLOR_CODE..sourceName..L.ENDCOLOR
|
||
|
|
SourceInfo:SetText(("-%s: [%s]"):format(transmogSource, sourceName))
|
||
|
|
|
||
|
|
--Profession
|
||
|
|
elseif index == 6 then
|
||
|
|
spellID = data[1]
|
||
|
|
profession = data[2]
|
||
|
|
link = GetSpellLink(spellID)
|
||
|
|
|
||
|
|
local name, rank, icon, castTime, minRange, maxRange, spellId = GetSpellInfo(spellID)
|
||
|
|
--local id, name, points = GetAchievementInfo(sourceName)
|
||
|
|
sourceName = name
|
||
|
|
sourceName = ACHIEVEMENT_COLOR_CODE..sourceName..L.ENDCOLOR
|
||
|
|
SourceInfo:SetText(("-%s: [%s]"):format(L[profession], sourceName or L["No Data Available"]))
|
||
|
|
|
||
|
|
--Vendor
|
||
|
|
elseif index == 7 then
|
||
|
|
sourceName = data[1]
|
||
|
|
vendorName = data[2]
|
||
|
|
local zonedata = vendorDB[tonumber(sourceName)] or {}
|
||
|
|
local zones = ""
|
||
|
|
for i, zondID in ipairs(zonedata) do
|
||
|
|
if locationDB[tonumber(zondID)] then
|
||
|
|
zones = zones..locationDB[tonumber(zondID)]..","
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_3"] or ""
|
||
|
|
prices, currency, items = GetPrice(itemID)
|
||
|
|
price_text = ""
|
||
|
|
local goldCost = tonumber(prices)
|
||
|
|
if goldCost > 0 then
|
||
|
|
price_text = price_text .. GetCoinTextureString(goldCost).." "
|
||
|
|
SourceInfo:SetText(("-%s: %s - %s: %s - Price: %s"):format( transmogSource, L[vendorName] or L["No Data Available"], L["Zone"], zones or "?", price_text))
|
||
|
|
end
|
||
|
|
|
||
|
|
for i = 1, #currency, 2 do
|
||
|
|
if currency[i] then
|
||
|
|
local currencyInfo = C_CurrencyInfo.GetCurrencyInfo(tonumber(currency[i]))
|
||
|
|
local name = currencyInfo.name
|
||
|
|
local icon = currencyInfo.iconFileID
|
||
|
|
local cost = currency[i + 1] or 0
|
||
|
|
|
||
|
|
local text = price_text
|
||
|
|
price_text = price_text..cost.." |T"..icon..":0|t ".."["..name.."] "
|
||
|
|
SourceInfo:SetText(("-%s: %s - %s: %s - Price: %s"):format( transmogSource, L[vendorName] or L["No Data Available"], L["Zone"], zones or "?", price_text))
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
for i = 1, #items, 2 do
|
||
|
|
if items[i] then
|
||
|
|
local item = Item:CreateFromItemID(tonumber(items[i]))
|
||
|
|
local cost = items[i + 1]
|
||
|
|
item:ContinueOnItemLoad(function()
|
||
|
|
local name = item:GetItemName()
|
||
|
|
local icon = item:GetItemIcon()
|
||
|
|
local text = price_text
|
||
|
|
text = text..cost.." |T"..icon..":0|t ".."["..name.."] "
|
||
|
|
SourceInfo:SetText(("-%s: %s - %s: %s - Price: %s"):format( transmogSource, L[vendorName] or L["No Data Available"], L["Zone"], zones or "?", text))
|
||
|
|
|
||
|
|
end)
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
else
|
||
|
|
if data then
|
||
|
|
transmogSource = _G["TRANSMOG_SOURCE_"..data] or ""
|
||
|
|
SourceInfo:SetText(("-%s: %s"):format(transmogSource,L["No Data Available"]))
|
||
|
|
|
||
|
|
else
|
||
|
|
SourceInfo:SetText(("-%s"):format(L["No Data Available"]))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
SourceInfo:SetCallback("OnEnter", function()
|
||
|
|
GameTooltip:SetOwner(UIParent, "ANCHOR_CURSOR", 0, 0)
|
||
|
|
if (link) then
|
||
|
|
GameTooltip:SetHyperlink(link)
|
||
|
|
GameTooltip:Show()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
SourceInfo:SetCallback("OnLeave", function() GameTooltip:Hide() end)
|
||
|
|
SourceInfo:SetRelativeWidth(.86)
|
||
|
|
parent:AddChild(SourceInfo)
|
||
|
|
|
||
|
|
local LinkButton = AceGUI:Create("InteractiveLabel")
|
||
|
|
LinkButton:SetWidth(60)
|
||
|
|
LinkButton:SetHeight(20)
|
||
|
|
|
||
|
|
parent:AddChild(LinkButton)
|
||
|
|
local sourceName = ""
|
||
|
|
local zoneName, questlink
|
||
|
|
end
|
||
|
|
|
||
|
|
local refresh_VisID
|
||
|
|
function CollectionList:GenerateSourceListView(visualID)
|
||
|
|
if self.LISTWINDOW then self.LISTWINDOW:Hide() end
|
||
|
|
local f = AceGUI:Create("Window")
|
||
|
|
f:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end)
|
||
|
|
f:SetCallback("OnHide",function(widget) AceGUI:Release(widget) end)
|
||
|
|
|
||
|
|
f:SetTitle(L["Sources"])
|
||
|
|
f:SetStatusText("Status Bar")
|
||
|
|
f:SetLayout("LIST")
|
||
|
|
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()-85)
|
||
|
|
scrollcontainer:SetLayout("Fill") -- important!
|
||
|
|
f:AddChild(scrollcontainer)
|
||
|
|
|
||
|
|
local MultiLineEditBox = AceGUI:Create("MultiLineEditBox")
|
||
|
|
MultiLineEditBox:SetFullWidth(true)
|
||
|
|
MultiLineEditBox:SetLabel("")
|
||
|
|
MultiLineEditBox.button:Hide()
|
||
|
|
MultiLineEditBox.scrollBar:Hide()
|
||
|
|
MultiLineEditBox:SetHeight(25)
|
||
|
|
|
||
|
|
f:AddChild(MultiLineEditBox)
|
||
|
|
MultiLineEditBox.frame:ClearAllPoints()
|
||
|
|
local scroll = AceGUI:Create("ScrollFrame")
|
||
|
|
scroll:SetLayout("Flow")
|
||
|
|
scroll:SetFullWidth(true)
|
||
|
|
scroll:SetFullHeight(true)
|
||
|
|
scrollcontainer:AddChild(scroll)
|
||
|
|
|
||
|
|
local list = BuildSourceList(visualID)
|
||
|
|
for i, data in ipairs(list) do
|
||
|
|
if data then
|
||
|
|
local categoryID, visualID, canEnchant, itemIcon, isCollected, itemLink, transmogLink = C_TransmogCollection.GetAppearanceSourceInfo(data.sourceID)
|
||
|
|
local collectedStatus = ""
|
||
|
|
|
||
|
|
if isCollected then
|
||
|
|
collectedStatus = GREEN_FONT_COLOR_CODE.."["..L["Collected"].."]"..L.ENDCOLOR
|
||
|
|
else
|
||
|
|
collectedStatus = RED_FONT_COLOR_CODE.."["..L["Not Collected"].."]"..L.ENDCOLOR
|
||
|
|
end
|
||
|
|
|
||
|
|
local itemName, _, itemQuality = GetItemInfo(itemLink)
|
||
|
|
--local itemID =GetItemInfoFromHyperlink(itemLink)
|
||
|
|
local nameColor = ITEM_QUALITY_COLORS[itemQuality] or ""
|
||
|
|
local transmogSource = data.sourceType and _G["TRANSMOG_SOURCE_"..(data.sourceType)] or ""
|
||
|
|
local bossInfo = ""
|
||
|
|
--Additionals:SetText(("|TInterface\\RaidFrame\\ReadyCheck-Ready:0|t +%s More"):format(total_count-1))
|
||
|
|
|
||
|
|
local Collected = AceGUI:Create("Icon")
|
||
|
|
if isCollected then
|
||
|
|
Collected:SetImage("Interface\\RaidFrame\\ReadyCheck-Ready")
|
||
|
|
else
|
||
|
|
Collected:SetImage("Interface\\RaidFrame\\ReadyCheck-NotReady")
|
||
|
|
end
|
||
|
|
|
||
|
|
Collected:SetImageSize(20, 20)
|
||
|
|
Collected:SetWidth(25)
|
||
|
|
scroll:AddChild(Collected)
|
||
|
|
|
||
|
|
local icon = AceGUI:Create("Icon")
|
||
|
|
icon:SetImage(itemIcon)
|
||
|
|
icon:SetImageSize(20,20)
|
||
|
|
scroll:AddChild(icon)
|
||
|
|
icon:SetWidth(25)
|
||
|
|
|
||
|
|
local CheckBox = AceGUI:Create("InteractiveLabel")
|
||
|
|
CheckBox:SetHeight(25)
|
||
|
|
|
||
|
|
local priceText = ""
|
||
|
|
itemName = itemName and nameColor.hex..itemName..L.ENDCOLOR or ""
|
||
|
|
CheckBox:SetText(itemName)
|
||
|
|
|
||
|
|
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)
|
||
|
|
|
||
|
|
CheckBox:SetRelativeWidth(.83)
|
||
|
|
scroll:AddChild(CheckBox)
|
||
|
|
|
||
|
|
local LinkButton = AceGUI:Create("Button")
|
||
|
|
LinkButton:SetText("Link")
|
||
|
|
LinkButton:SetWidth(60)
|
||
|
|
LinkButton:SetHeight(25)
|
||
|
|
LinkButton:SetCallback("OnClick", function()
|
||
|
|
local url = "https://www.wowhead.com/item="
|
||
|
|
MultiLineEditBox:SetText(url..data.itemID)
|
||
|
|
end)
|
||
|
|
|
||
|
|
scroll:AddChild(LinkButton)
|
||
|
|
local sourceName = ""
|
||
|
|
local zoneName, questlink
|
||
|
|
local datafound = false
|
||
|
|
|
||
|
|
if data.sourceType and data.sourceType == 1 then
|
||
|
|
sourceName = GetBossInfo(data.sourceID)
|
||
|
|
AddAdditional(scroll, 0, sourceName, data.itemID)
|
||
|
|
datafound = true
|
||
|
|
end
|
||
|
|
|
||
|
|
local zonelist, objectlist, containerlist, questList, achievementList, professionList, vendorList = GetSourceInfo(data.itemID) if #zonelist > 0 then
|
||
|
|
AddAdditional(scroll, 1, zonelist, data.itemID)
|
||
|
|
datafound = true
|
||
|
|
end
|
||
|
|
|
||
|
|
local DB_List = {objectlist,containerlist,questList,achievementList ,professionList,vendorList}
|
||
|
|
for index, list in ipairs(DB_List) do
|
||
|
|
for _, db_data in ipairs(list) do
|
||
|
|
AddAdditional(scroll, index + 1, db_data, data.itemID)
|
||
|
|
datafound = true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if not datafound then
|
||
|
|
AddAdditional(scroll, 10, data.sourceType, data.itemID)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
MultiLineEditBox.frame:SetPoint("BOTTOM", f.frame,"BOTTOM", 0, -15)
|
||
|
|
if needsRefresh and refresh_count < 100 then
|
||
|
|
refresh_VisID = visualID
|
||
|
|
refresh_count = refresh_count + 1
|
||
|
|
C_Timer.After(0, function() CollectionList:GenerateSourceListView(refresh_VisID) end)
|
||
|
|
|
||
|
|
else
|
||
|
|
refresh_VisID = nil
|
||
|
|
refresh_count = 0
|
||
|
|
end
|
||
|
|
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 = {}
|