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.
863 lines
33 KiB
863 lines
33 KiB
|
2 years ago
|
local PetJournalEnhanced = LibStub("AceAddon-3.0"):GetAddon("PetJournalEnhanced")
|
||
|
|
local DropDown = PetJournalEnhanced:NewModule("DropDown")
|
||
|
|
local Config = PetJournalEnhanced:GetModule("Config")
|
||
|
|
local Sorting = PetJournalEnhanced:GetModule("Sorting")
|
||
|
|
local ASCENDING = 1
|
||
|
|
local DESCENDING = 2
|
||
|
|
local breedInfo = LibStub("LibPetBreedInfo-1.0")
|
||
|
|
-- local ZoneFiltering = PetJournalEnhanced:GetModule("ZoneFiltering")
|
||
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("PetJournalEnhanced")
|
||
|
|
|
||
|
|
-- luacheck: globals UIDropDownMenu_Initialize UIDropDownMenu_CreateInfo UIDropDownMenu_AddButton UIDROPDOWNMENU_MENU_VALUE
|
||
|
|
-- luacheck: globals UIDropDownMenu_Refresh UIDropDownMenu_EnableButton UIDropDownMenu_DisableButton
|
||
|
|
|
||
|
|
local FILTER_CURRENT_ZONE = L["Filter pets by current zone"]
|
||
|
|
local FILTER_BREED = L["Breed"]
|
||
|
|
local FILTER_SHOW_HIDDEN = L["Show player hidden pets"]
|
||
|
|
local FILTER_RESET_HIDDEN = L["Reset player hidden pets"]
|
||
|
|
local FILTER_SORTING = L["Sorting"]
|
||
|
|
local FILTER_RESET = L["Reset Filters"]
|
||
|
|
local FILTER_CAN_BATTLE = L["Can Battle"]
|
||
|
|
local FILTER_CANT_BATTLE = L["Can't Battle"]
|
||
|
|
local FILTER_CAN_TRADE = L["Can Trade"]
|
||
|
|
local FILTER_CANT_TRADE = L["Can't Trade"]
|
||
|
|
local FILTER_UNKNOWN_ZONE = L["Unknown Zone"]
|
||
|
|
local FILTER_SORT_FAVORITES = L["Sort favorites to the top"]
|
||
|
|
local FILTER_SORT_DIRECTION = L["Sort Direction:"]
|
||
|
|
local FILTER_SORT_ASCENDING = L["Sort Ascending"]
|
||
|
|
local FILTER_SORT_DESCENDING = L["Sort Descending"]
|
||
|
|
|
||
|
|
local FILTER_SORT_ORDER = L["Sort Order:"]
|
||
|
|
local levelBrackets = {"1","2-10","11-20","21-24","25"}
|
||
|
|
local specializations = {
|
||
|
|
L["Balanced"],
|
||
|
|
FAST,
|
||
|
|
L["Resilient"],
|
||
|
|
L["Powerful"],
|
||
|
|
}
|
||
|
|
|
||
|
|
local sortTypes = {
|
||
|
|
LEVEL,
|
||
|
|
NAME,
|
||
|
|
TYPE,
|
||
|
|
RARITY,
|
||
|
|
L["Highest Stat"],
|
||
|
|
}--,["Added to Pet Journal"]=SORT_PETID}
|
||
|
|
|
||
|
|
local FILTER_MENU_NAMES = {
|
||
|
|
MISCELLANEOUS,
|
||
|
|
LEVEL,
|
||
|
|
L["Ability Type"],
|
||
|
|
L["Zones"],
|
||
|
|
QUALITY,
|
||
|
|
SPECIALIZATION,
|
||
|
|
L["Quantity"],
|
||
|
|
}
|
||
|
|
|
||
|
|
local FILTER_MENU_VALUES = {10, 11, 12, 3, 6, 4, 8}
|
||
|
|
|
||
|
|
|
||
|
|
local function CreateDropdownMenu(self, level)
|
||
|
|
if level == 1 then
|
||
|
|
--create check boxes
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = COLLECTED
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
C_PetJournal.SetFilterChecked(LE_PET_JOURNAL_FILTER_COLLECTED, value)
|
||
|
|
if (value) then
|
||
|
|
UIDropDownMenu_EnableButton(1, 2)
|
||
|
|
else
|
||
|
|
UIDropDownMenu_DisableButton(1, 2)
|
||
|
|
end
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = C_PetJournal.IsFilterChecked(LE_PET_JOURNAL_FILTER_COLLECTED)
|
||
|
|
info.isNotRadio = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FAVORITES_FILTER
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.favoritesOnly = value
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = Sorting.filtering.favoritesOnly
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.leftPadding = 16
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.leftPadding = 0
|
||
|
|
info.disabled = nil
|
||
|
|
|
||
|
|
info.text = NOT_COLLECTED
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
C_PetJournal.SetFilterChecked(LE_PET_JOURNAL_FILTER_NOT_COLLECTED, value)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = C_PetJournal.IsFilterChecked(LE_PET_JOURNAL_FILTER_NOT_COLLECTED)
|
||
|
|
info.isNotRadio = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.leftPadding = 0
|
||
|
|
info.disabled = nil
|
||
|
|
|
||
|
|
info.text = FILTER_CURRENT_ZONE
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.currentZone = not Sorting.filtering.currentZone
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.currentZone
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
--create sub menu headers
|
||
|
|
info.checked = nil
|
||
|
|
info.isNotRadio = nil
|
||
|
|
info.func = nil
|
||
|
|
info.hasArrow = true
|
||
|
|
info.notCheckable = true
|
||
|
|
|
||
|
|
info.text = PET_FAMILIES
|
||
|
|
info.value = 1
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = SOURCES
|
||
|
|
info.value = 2
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i=1,#FILTER_MENU_NAMES do
|
||
|
|
info.text = FILTER_MENU_NAMES[i]
|
||
|
|
info.value = FILTER_MENU_VALUES[i]
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
if Config.display.breedInfo then
|
||
|
|
info.text = FILTER_BREED
|
||
|
|
info.value = 9
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
info.text = FILTER_SORTING
|
||
|
|
info.value = 5
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = FILTER_RESET
|
||
|
|
info.value = 7
|
||
|
|
info.func = function()
|
||
|
|
Sorting:Reset()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
if level == 2 then
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
|
||
|
|
if Config.display.breedInfo and UIDROPDOWNMENU_MENU_VALUE == 9 then --breed filter
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.breed do
|
||
|
|
Sorting.filtering.breed[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.breed do
|
||
|
|
Sorting.filtering.breed[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i,breedName in breedInfo:IterateBreedNames() do
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = breedName
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.breed[i] = not Sorting.filtering.breed[i]
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.breed[i]
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 11 then -- Level filter
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.level do
|
||
|
|
Sorting.filtering.level[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.level do
|
||
|
|
Sorting.filtering.level[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
|
||
|
|
for i=1,#levelBrackets do
|
||
|
|
info.text = levelBrackets[i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.level[i] = not Sorting.filtering.level[i]
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.level[i]
|
||
|
|
end
|
||
|
|
info.isNotRadio = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 10 then -- misc filter
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
Sorting.filtering.canBattle = true
|
||
|
|
Sorting.filtering.cantBattle = true
|
||
|
|
Sorting.filtering.canTrade = true
|
||
|
|
Sorting.filtering.cantTrade = true
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
Sorting.filtering.canBattle = false
|
||
|
|
Sorting.filtering.cantBattle = false
|
||
|
|
Sorting.filtering.canTrade = false
|
||
|
|
Sorting.filtering.cantTrade = false
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
|
||
|
|
info.text = FILTER_CAN_BATTLE
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.canBattle = not Sorting.filtering.canBattle
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.canBattle
|
||
|
|
end
|
||
|
|
info.isNotRadio = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FILTER_CANT_BATTLE
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.cantBattle = not Sorting.filtering.cantBattle
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.cantBattle
|
||
|
|
end
|
||
|
|
info.isNotRadio = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FILTER_CAN_TRADE
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.canTrade = not Sorting.filtering.canTrade
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.canTrade
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FILTER_CANT_TRADE
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.cantTrade = not Sorting.filtering.cantTrade
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.cantTrade
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FILTER_SHOW_HIDDEN
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.hiddenSpecies = not Sorting.filtering.hiddenSpecies
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.hiddenSpecies
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = FILTER_RESET_HIDDEN
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting:ResetSpeciesHidden()
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 12 then -- ability type filter
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.abilityType do
|
||
|
|
Sorting.filtering.abilityType[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.abilityType do
|
||
|
|
Sorting.filtering.abilityType[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i=1, C_PetJournal.GetNumPetTypes() do
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = _G["BATTLE_PET_NAME_"..i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.abilityType[i] = not Sorting.filtering.abilityType[i]
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.abilityType[i]
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 8 then --quantity
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.quantity do
|
||
|
|
Sorting.filtering.quantity[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.quantity do
|
||
|
|
Sorting.filtering.quantity[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i=1,#Sorting.filtering.quantity do
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = i
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.quantity[i] = not Sorting.filtering.quantity[i]
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.quantity[i]
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 1 then --blizzard pet families
|
||
|
|
info.hasArrow = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetAllPetTypesChecked(true)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetAllPetTypesChecked(false)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
local numTypes = C_PetJournal.GetNumPetTypes()
|
||
|
|
for i=1,numTypes do
|
||
|
|
info.text = _G["BATTLE_PET_NAME_"..i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
C_PetJournal.SetPetTypeFilter(i, value)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return C_PetJournal.IsPetTypeChecked(i)
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 2 then --blizzard pet sources
|
||
|
|
info.hasArrow = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetAllPetSourcesChecked(true)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 2, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetAllPetSourcesChecked(false)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 2, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
local numSources = C_PetJournal.GetNumPetSources()
|
||
|
|
for i=1,numSources do
|
||
|
|
info.text = _G["BATTLE_PET_SOURCE_"..i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
C_PetJournal.SetPetSourceChecked(i, value)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return C_PetJournal.IsPetSourceChecked(i)
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- elseif UIDROPDOWNMENU_MENU_VALUE == 3 then --zone filter
|
||
|
|
-- local info = UIDropDownMenu_CreateInfo()
|
||
|
|
-- local zoneTree = ZoneFiltering:GetZoneGroupMapping()
|
||
|
|
-- info.hasArrow = false
|
||
|
|
-- info.isNotRadio = true
|
||
|
|
-- info.notCheckable = true
|
||
|
|
-- info.keepShownOnClick = true
|
||
|
|
-- info.text = CHECK_ALL
|
||
|
|
-- info.func = function()
|
||
|
|
-- ZoneFiltering:SetAllFiltered(true)
|
||
|
|
-- Sorting.filtering.unknownZone = true
|
||
|
|
-- Sorting:UpdatePets()
|
||
|
|
-- UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
-- end
|
||
|
|
-- UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
-- info.text = UNCHECK_ALL
|
||
|
|
-- info.func = function()
|
||
|
|
-- ZoneFiltering:SetAllFiltered(false)
|
||
|
|
-- Sorting.filtering.unknownZone = false
|
||
|
|
-- Sorting:UpdatePets()
|
||
|
|
-- UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
-- end
|
||
|
|
-- UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
-- info.notCheckable = false
|
||
|
|
-- info.keepShownOnClick = true
|
||
|
|
-- info.checked = false
|
||
|
|
-- info.isNotRadio = true
|
||
|
|
-- info.text = FILTER_UNKNOWN_ZONE
|
||
|
|
-- info.func = function(_, _, _, value)
|
||
|
|
-- Sorting.filtering.unknownZone = not Sorting.filtering.unknownZone
|
||
|
|
-- UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
-- Sorting:UpdatePets()
|
||
|
|
-- end
|
||
|
|
-- info.checked = function()
|
||
|
|
-- return Sorting.filtering.unknownZone
|
||
|
|
-- end
|
||
|
|
-- UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
-- local ZoneGroupMap = ZoneFiltering:GetZoneGroupMapping()
|
||
|
|
-- for i=1,ZoneFiltering:GetNumZoneGroups() do
|
||
|
|
-- info.hasArrow = true
|
||
|
|
-- info.notCheckable = true
|
||
|
|
-- info.keepShownOnClick = true
|
||
|
|
-- info.checked = false
|
||
|
|
-- info.isNotRadio = true
|
||
|
|
-- info.text = ZoneFiltering:GetZoneGroupNames(i)
|
||
|
|
-- info.value = i
|
||
|
|
-- info.func = nil
|
||
|
|
-- info.checked = nil
|
||
|
|
-- UIDropDownMenu_AddButton(info, level)
|
||
|
|
-- end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 4 then --pet specialization
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
|
||
|
|
info.hasArrow = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = true
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.specialization do
|
||
|
|
Sorting.filtering.specialization[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.specialization do
|
||
|
|
Sorting.filtering.specialization[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i=1,4 do
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = specializations[i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.specialization[i] = not Sorting.filtering.specialization[i]
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.specialization[i]
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 5 then --sorting menu
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = FILTER_SORT_FAVORITES
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.sorting.favoritesFirst = not Sorting.sorting.favoritesFirst
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.sorting.favoritesFirst
|
||
|
|
end
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = false
|
||
|
|
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = FILTER_SORT_ORDER
|
||
|
|
info.func = nil
|
||
|
|
info.notCheckable = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
|
||
|
|
--create sort menu options
|
||
|
|
for i=1,#sortTypes do
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = false
|
||
|
|
info.text = sortTypes[i]
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.sorting.selection = i
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.sorting.selection == i
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
if Config.display.breedInfo then
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = false
|
||
|
|
info.text = FILTER_BREED
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.sorting.selection = #sortTypes + 1
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.sorting.selection == #sortTypes + 1
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = false
|
||
|
|
|
||
|
|
info.text = FILTER_SORT_DIRECTION
|
||
|
|
info.func = nil
|
||
|
|
info.notCheckable = true
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.notCheckable = false
|
||
|
|
info.text = FILTER_SORT_ASCENDING
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.sorting.order = ASCENDING
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.sorting.order == ASCENDING
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = FILTER_SORT_DESCENDING
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.sorting.order = DESCENDING
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.sorting.order == DESCENDING
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
elseif UIDROPDOWNMENU_MENU_VALUE == 6 then
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
|
||
|
|
info.hasArrow = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = true
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.rarity do
|
||
|
|
Sorting.filtering.rarity[i] = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
for i=1,#Sorting.filtering.rarity do
|
||
|
|
Sorting.filtering.rarity[i] = false
|
||
|
|
end
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
for i=1,4 do
|
||
|
|
local r,g,b,hex = GetItemQualityColor(i-1)
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = string.format("|c%s%s|r",hex,_G["BATTLE_PET_BREED_QUALITY"..i])
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
Sorting.filtering.rarity[i] = not Sorting.filtering.rarity[i]
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 2)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return Sorting.filtering.rarity[i]
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if level == 3 then
|
||
|
|
if UIDROPDOWNMENU_MENU_VALUE >= 1 and UIDROPDOWNMENU_MENU_VALUE <= ZoneFiltering:GetNumZoneGroups() then
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
|
||
|
|
info.hasArrow = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.notCheckable = true
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.text = CHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
ZoneFiltering:SetAllGroupFiltered(UIDROPDOWNMENU_MENU_VALUE,true)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 3)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
info.text = UNCHECK_ALL
|
||
|
|
info.func = function()
|
||
|
|
ZoneFiltering:SetAllGroupFiltered(UIDROPDOWNMENU_MENU_VALUE,false)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 3)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
|
||
|
|
local zoneIDs = ZoneFiltering:GetZoneGroup(UIDROPDOWNMENU_MENU_VALUE)
|
||
|
|
for i=1, #zoneIDs do
|
||
|
|
local zoneID = zoneIDs[i]
|
||
|
|
info.hasArrow = false
|
||
|
|
info.notCheckable = false
|
||
|
|
info.keepShownOnClick = true
|
||
|
|
info.checked = false
|
||
|
|
info.isNotRadio = true
|
||
|
|
info.text = GetMapNameByID(zoneID)
|
||
|
|
info.value = zoneID
|
||
|
|
info.func = function(_, _, _, value)
|
||
|
|
local isEnabled = ZoneFiltering:GetFiltered(zoneID)
|
||
|
|
ZoneFiltering:SetFiltered(zoneID,not isEnabled)
|
||
|
|
UIDropDownMenu_Refresh(PetJournalFilterDropDown, 1, 3)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.checked = function()
|
||
|
|
return ZoneFiltering:GetFiltered(zoneID)
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local function PetOptionsMenu_Init(self, level)
|
||
|
|
local pet = DropDown.petOptionsMenu.pet
|
||
|
|
local info = UIDropDownMenu_CreateInfo()
|
||
|
|
info.notCheckable = true
|
||
|
|
|
||
|
|
local isRevoked = pet and pet.petID and C_PetJournal.PetIsRevoked(pet.petID)
|
||
|
|
local isLockedForConvert = pet and pet.petID and C_PetJournal.PetIsLockedForConvert(pet.petID)
|
||
|
|
|
||
|
|
if (pet and pet.petID and not isRevoked and not isLockedForConvert) then
|
||
|
|
info.text = BATTLE_PET_SUMMON
|
||
|
|
if (pet.petID and C_PetJournal.GetSummonedPetGUID() == pet.petID) then
|
||
|
|
info.text = PET_DISMISS
|
||
|
|
end
|
||
|
|
info.func = function() C_PetJournal.SummonPetByGUID(pet.petID) end
|
||
|
|
if (pet.petID and not C_PetJournal.PetIsSummonable(pet.petID)) then
|
||
|
|
info.disabled = true
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
if (pet and pet.petID and not isRevoked and not isLockedForConvert) then
|
||
|
|
info.text = BATTLE_PET_RENAME
|
||
|
|
info.func = function()
|
||
|
|
StaticPopup_Show("BATTLE_PET_RENAME", nil, nil, pet.petID)
|
||
|
|
end
|
||
|
|
info.disabled = not C_PetJournal.IsJournalUnlocked()
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
local isFavorite = pet and pet.petID and C_PetJournal.PetIsFavorite(pet.petID)
|
||
|
|
if pet and pet.petID and (isFavorite or (not isRevoked and not isLockedForConvert)) then
|
||
|
|
if (isFavorite) then
|
||
|
|
info.text = BATTLE_PET_UNFAVORITE
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetFavorite(pet.petID, 0)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
info.text = BATTLE_PET_FAVORITE
|
||
|
|
info.func = function()
|
||
|
|
C_PetJournal.SetFavorite(pet.petID, 1)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
info.disabled = not C_PetJournal.IsJournalUnlocked()
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
if(pet and pet.petID and C_PetJournal.PetCanBeReleased(pet.petID)) then
|
||
|
|
info.text = BATTLE_PET_RELEASE
|
||
|
|
info.func = function() StaticPopup_Show("BATTLE_PET_RELEASE", PetJournalUtil_GetDisplayName(pet.petID), nil, pet.petID) end
|
||
|
|
if (C_PetJournal.PetIsSlotted(pet.petID) or C_PetBattles.IsInBattle() or not C_PetJournal.IsJournalUnlocked()) then
|
||
|
|
info.disabled = true
|
||
|
|
else
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
if(pet and pet.petID and pet.petID and C_PetJournal.PetIsTradable(pet.petID)) then
|
||
|
|
info.text = BATTLE_PET_PUT_IN_CAGE
|
||
|
|
info.func = function() StaticPopup_Show("BATTLE_PET_PUT_IN_CAGE", nil, nil, pet.petID) end
|
||
|
|
--only if it isn't in a battle slot and has full health
|
||
|
|
info.disabled = nil
|
||
|
|
if (not info.disabled and C_PetJournal.PetIsSlotted(pet.petID)) then
|
||
|
|
info.disabled = true
|
||
|
|
info.text = BATTLE_PET_PUT_IN_CAGE_SLOTTED
|
||
|
|
end
|
||
|
|
if (not info.disabled and C_PetJournal.PetIsHurt(pet.petID)) then
|
||
|
|
info.disabled = true
|
||
|
|
info.text = BATTLE_PET_PUT_IN_CAGE_HEALTH
|
||
|
|
end
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
info.disabled = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
if (pet and pet.speciesID) then
|
||
|
|
local isSpciesHidden = Sorting:IsSpeciesHidden(pet.speciesID)
|
||
|
|
local hideSpeciesName = isSpciesHidden and SHOW or HIDE
|
||
|
|
info.text = hideSpeciesName
|
||
|
|
info.func = function()
|
||
|
|
Sorting:SetSpeciesHidden(pet.speciesID, not isSpciesHidden)
|
||
|
|
Sorting:UpdatePets()
|
||
|
|
end
|
||
|
|
info.disabled = nil
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
info.text = CANCEL
|
||
|
|
info.func = nil
|
||
|
|
UIDropDownMenu_AddButton(info, level)
|
||
|
|
end
|
||
|
|
|
||
|
|
function DropDown:OnInitialize()
|
||
|
|
PetJournalFilterButton:Hide()
|
||
|
|
|
||
|
|
self.menuFrame = CreateFrame("Frame","PetJournalEnhancedFilterDropDown",PetJournal,"UIDropDownMenuTemplate")
|
||
|
|
self.petOptionsMenu = CreateFrame("Frame","PetJournalEnhancedPetMenu",PetJournal,"UIDropDownMenuTemplate")
|
||
|
|
self.filterButton = CreateFrame("Button","PetJournalEnhancedFilterButton",PetJournal,"UIMenuButtonStretchTemplate")
|
||
|
|
self.filterButton:SetText(FILTER)
|
||
|
|
self.filterButton:SetAllPoints("PetJournalFilterButton")
|
||
|
|
|
||
|
|
UIDropDownMenu_Initialize(self.menuFrame, CreateDropdownMenu , "MENU")
|
||
|
|
UIDropDownMenu_Initialize(self.petOptionsMenu, PetOptionsMenu_Init , "MENU")
|
||
|
|
self.filterButton:SetScript("OnClick",function()
|
||
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
|
||
|
|
ToggleDropDownMenu(1, nil, self.menuFrame, "PetJournalEnhancedFilterButton", 74, 15)
|
||
|
|
end)
|
||
|
|
end
|