local name, addon = ... |
local parentName = addon['parentName'] or "BrokerPack" |
local childName = "GuildFinderFilter" |
local wholib = LibStub:GetLibrary('LibWho-2.0'):Library() |
addon['childs'] = addon['childs'] or {} |
addon['childs'][#addon['childs'] + 1] = childName |
local defaults = {} |
local options = {} |
local db |
|
addon['inits'] = addon['inits'] or {} |
|
local function OnText(message) |
addon['OnText'](message, childName) |
end |
-- DeclineGuildApplicant |
-- GetGuildApplicantInfo |
-- GetNumGuildApplicants |
-- LF_GUILD_BROWSE_UPDATED |
-- LF_GUILD_MEMBERSHIP_LIST_CHANGED |
-- LF_GUILD_MEMBERSHIP_LIST_UPDATED |
-- LF_GUILD_POST_UPDATED |
-- LF_GUILD_RECRUITS_UPDATED |
-- LF_GUILD_RECRUIT_LIST_CHANGED |
|
local apps = {} |
local appsInfo = {} |
local function updateDisplay() |
local n = 0 |
for k,v in pairs(apps) do |
if(v) then |
n = n + 1 |
-- print("on", k) |
end |
end |
OnText(format("%i/%i",n,GetNumGuildApplicants())) |
end |
|
local function UserDataReturned(user, t) |
if(not user) then return end |
apps[user['Name']] = user['Online'] |
updateDisplay() |
end |
|
local function scan() |
apps = {} |
for i=1,GetNumGuildApplicants() do |
local name = GetGuildApplicantInfo(i) |
appsInfo[name] = {GetGuildApplicantInfo(i)} |
local user,t = wholib:UserInfo(name, { callback = UserDataReturned } ) |
if(user) then |
UserDataReturned(user, t) |
end |
end |
|
end |
|
local function onevent(self, event, arg1, ...) |
if(self.nextevent > GetTime()) then return end |
self.nextevent = GetTime() + 1 |
if(event=="ADDON_LOADED") then |
if(arg1=="Blizzard_LookingForGuildUI") then |
RequestGuildApplicantsList() |
end |
else |
scan() |
end |
end |
|
local function onupdate(self, elapsed) |
if(self.next > GetTime()) then return end |
self.next = GetTime() + 300 |
RequestGuildApplicantsList() |
end |
|
local function OnTooltip() |
GameTooltip:ClearLines() |
GameTooltip:AddLine(childName) |
for k,v in pairs(apps) do |
if(v) then |
GameTooltip:AddLine(format("%s (%i)",k,appsInfo[k][2])) |
end |
end |
end |
|
local function init() |
-- print("init",childName) |
local f=CreateFrame("Frame") |
-- LoadAddOn("Blizzard_GuildUI") |
|
f.next = 0 |
f.nextevent = 0 |
f:SetScript("OnUpdate", onupdate) |
f:SetScript("OnEvent", onevent) |
f:RegisterEvent("LF_GUILD_BROWSE_UPDATED") |
f:RegisterEvent("LF_GUILD_MEMBERSHIP_LIST_CHANGED") |
f:RegisterEvent("LF_GUILD_MEMBERSHIP_LIST_UPDATED") |
f:RegisterEvent("LF_GUILD_POST_UPDATED") |
f:RegisterEvent("LF_GUILD_RECRUITS_UPDATED") |
f:RegisterEvent("LF_GUILD_RECRUIT_LIST_CHANGED") |
f:RegisterEvent("ADDON_LOADED") |
LoadAddOn("Blizzard_LookingForGuildUI") |
addon['ldbs'][#addon['ldbs'] + 1] = { |
['name'] = childName, |
['type'] = "data source", |
['OnTooltipShow'] = OnTooltip, |
} |
options = addon['setupPrefs'](childName, parentName, addon['db'], defaults, false) |
db = addon['db']['profile'][childName] |
end |
|
addon['inits'][childName] = init |