Skip to content

Commit

Permalink
Sort order configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
artscout committed Sep 26, 2024
1 parent 91b0127 commit ed9848b
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 25 deletions.
2 changes: 1 addition & 1 deletion Broker_Portals.toc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Notes: Provides access to all Portal and Teleport spells on right click of one button.
## Author: CrazyBenny of Stormrage-EU and Bissental on FlameGor-EU
## LastUpdate: 2024-09-22T02:09:00Z
## Version: 1.14.1
## Version: 1.14.2
## OptionalDeps: LibDBIcon-1.0

## SavedVariables: PortalsDB
Expand Down
3 changes: 3 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
1.14.2
- Configurable items sort order, either original or alphabetical

1.14.1
- Implemented scrolling (#6)
- Implemented submenu's for items, engineering items, challenges, portals, hearstones. Enabled or disabled in options window (#13)
Expand Down
12 changes: 8 additions & 4 deletions locales.lua
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ L["SHOW_ITEMS_SUBCAT"] = "Move various items to submenu"
L["SHOW_HS_ITEMS_SUBCAT"] = "Move Heartstone analogues to submenu"
L["HEARTHSTONE"] = "Hearthstone"
L["HEARTHSTONE_ANALOGUES"] = "Hearthstone analogues"
L["SORT_ITEMS"] = "Sort items alphabetically"

L["SHOW_ITEMS_TOOLTIP"] = "Show various items that has teleport/portals functionality"
L["SHOW_ITEMS_SUBCAT_TOOLTIP"] = "When checked various items with teleport/portal functionality will be shown in submenu, otherwise they will be mixed in main menu with other spells/items"
Expand All @@ -26,6 +27,7 @@ L["SHOW_TELEPORTS_SUBCAT_TOOLTIP"] = "When checked teleport and portal spells wi
L["SHOW_CHALLENGE_TELEPORTS_TOOLTIP"] = "Show teleports earned with gold challenges"
L["SHOW_CHALLENGE_TELEPORTS_SUBCAT_TOOLTIP"] = "When checked challenge teleports spells will be shown in challenge teleports submenu, otherwise they will be mixed in main menu with other spells/items"
L["SHOW_ITEM_COOLDOWNS_TOOLTIP"] = "When checked items cooldowns will be shown in Tooltip"
L["SORT_ITEMS_TOOLTIP"] = "When checked items will be show in alphabetical order, otherwise they will be show in order they filled in database, like always"

L["INN"] = "Inn:"
L["MIN"] = "mins"
Expand Down Expand Up @@ -265,6 +267,7 @@ L["SHOW_TELEPORTS_SUBCAT"] = "Показывать телепорты/порта
L["SHOW_CHALLENGE_TELEPORTS_SUBCAT"] = "Показывать телепорты Испытаний в подменю"
L["SHOW_ITEMS_SUBCAT"] = "Показывать предметы с функционалом телепорта в подменю"
L["SHOW_HS_ITEMS_SUBCAT"] = "Показывать аналоги камня возвращения в подменю"
L["SORT_ITEMS"] = "Сортировать предметы в алфавитном порядке"
L["HEARTHSTONE"] = "Камень Возвращения"
L["HEARTHSTONE_ANALOGUES"] = "Аналоги камней Возвращения"
L["INN"] = "Таверна: "
Expand All @@ -286,14 +289,15 @@ L["TP_P"] = "Телепорты / Порталы"
L["SHOW_ITEMS_TOOLTIP"] = "Показывать предметы с функционалом телепортов/порталов"
L["SHOW_ITEMS_SUBCAT_TOOLTIP"] = "При включении различные предметы с функционалом телепортов/порталов будут показываться в отдельном подменю, иначе будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_HS_ITEMS_TOOLTIP"] = "Показывать аналоги камней возвращения"
L["SHOW_HS_ITEMS_SUBCAT_TOOLTIP"] = "При включении аналоги камней возвращения будут показываться в отдельном подменю, иначе будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_TELEPORTS_SUBCAT_TOOLTIP"] = "При включении заклинания телепортов/порталов будут показываться в отдельном подменю, иначе будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_HS_ITEMS_SUBCAT_TOOLTIP"] = "При включении аналоги камней возвращения будут показываться в отдельном подменю, в противном случае они будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_TELEPORTS_SUBCAT_TOOLTIP"] = "При включении заклинания телепортов/порталов будут показываться в отдельном подменю, в противном случае они будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_CHALLENGE_TELEPORTS_TOOLTIP"] = "Показывать заклинания телепортов из Испытаний"
L["SHOW_CHALLENGE_TELEPORTS_SUBCAT_TOOLTIP"] = "При включении залинания телепортов из Испытаний будут показываться в отдельном подменю, иначе будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_CHALLENGE_TELEPORTS_SUBCAT_TOOLTIP"] = "При включении залинания телепортов из Испытаний будут показываться в отдельном подменю, в противном случае они будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_ITEM_COOLDOWNS_TOOLTIP"] = "Показывать время восстановления предметов при наведении на кнопку у миникарты"
L["SHOW_ENGINEERING_SUBCAT_TOOLTIP"] = "При включении предметы инженерного дела с функционалом телепортов/порталов удут показываться в отдельном подменю, иначе будут показаны в общем меню с другими предметами/заклинаниями"
L["SHOW_ENGINEERING_SUBCAT_TOOLTIP"] = "При включении предметы инженерного дела с функционалом телепортов/порталов удут показываться в отдельном подменю, в противном случае они будут показаны в общем меню с другими предметами/заклинаниями"
L["MAIN_ITEMS"] = "Различные предметы"
L["ANNOUNCE_TOOLTIP"] = "При включении применение заклинаний телепортов/порталов будет анонсировано группе/рейду"
L["SORT_ITEMS_TOOLTIP"] = "При включении предметы будут выводиться в алфавитном порядке, в противном случае сортировка будет в порядке, в котором предметы занесены в базу данных"

end

Expand Down
55 changes: 35 additions & 20 deletions portals.lua
Original file line number Diff line number Diff line change
Expand Up @@ -430,9 +430,20 @@ local function CreateSettingsPanel()
PortalsDB.showItemCooldowns = not PortalsDB.showItemCooldowns
end)

local sortItemsAlphabeticalyCheckBox = CreateFrame("CheckButton", "sortItemsAlphabeticalyCheckBox", OptionsFrame, "InterfaceOptionsCheckButtonTemplate")
sortItemsAlphabeticalyCheckBox:SetPoint("TOPLEFT", 320, -254)
sortItemsAlphabeticalyCheckBox.Text:SetText(L["SORT_ITEMS"])
sortItemsAlphabeticalyCheckBox.tooltipText = L["SORT_ITEMS_TOOLTIP"]
sortItemsAlphabeticalyCheckBox:SetChecked(PortalsDB.sortItems)

sortItemsAlphabeticalyCheckBox:SetScript("OnClick", function(self)
PortalsDB.sortItems = not PortalsDB.sortItems
end)


if not isCataclysmClassic then
local showChallengeTeleportsCheckBox = CreateFrame("CheckButton", "showChallengeTeleportsCheckBox", OptionsFrame, "InterfaceOptionsCheckButtonTemplate")
showChallengeTeleportsCheckBox:SetPoint("TOPLEFT", 16, -254)
showChallengeTeleportsCheckBox:SetPoint("TOPLEFT", 16, -302)
showChallengeTeleportsCheckBox.Text:SetText(L["SHOW_CHALLENGE_TELEPORTS"])
showChallengeTeleportsCheckBox.tooltipText = L["SHOW_CHALLENGE_TELEPORTS_TOOLTIP"]
showChallengeTeleportsCheckBox:SetChecked(PortalsDB.showChallengeTeleports)
Expand All @@ -447,7 +458,7 @@ local function CreateSettingsPanel()
end)

local showChallengeSubCatCheckBox = CreateFrame("CheckButton", "showChallengeSubCatCheckBox", OptionsFrame, "InterfaceOptionsCheckButtonTemplate")
showChallengeSubCatCheckBox:SetPoint("TOPLEFT", 320, -254)
showChallengeSubCatCheckBox:SetPoint("TOPLEFT", 320, -302)
showChallengeSubCatCheckBox.Text:SetText(L["SHOW_CHALLENGE_TELEPORTS_SUBCAT"])
showChallengeSubCatCheckBox.tooltipText = L["SHOW_CHALLENGE_TELEPORTS_SUBCAT_TOOLTIP"]
showChallengeSubCatCheckBox:SetChecked(PortalsDB.showChallengeSubCat)
Expand All @@ -462,12 +473,14 @@ local function CreateSettingsPanel()
end
end

local function pairsByKeys(t)
local function pairsByKeys(t, sortTable)
local a = {}
for n in pairs(t) do
table.insert(a, n)
end
table.sort(a)
if sortTable then
table.sort(a)
end

local i = 0
local iter = function()
Expand Down Expand Up @@ -757,9 +770,9 @@ local function UpdateIcon(icon)
obj.icon = icon
end

local function ShowMenuEntries(category)
local function ShowMenuEntries(category, sortTable)
if methods[category] then
for _, menuEntry in pairsByKeys(methods[category]) do
for _, menuEntry in pairsByKeys(methods[category], sortTable) do
if menuEntry.itemType == "spell" then
local spellCooldown
if isCataclysmClassic then spellCooldown = GetSpellCooldown(menuEntry.itemName) else spellCooldown = GetSpellCooldown(menuEntry.itemName).startTime end
Expand Down Expand Up @@ -940,28 +953,28 @@ local function UpdateMenu(level, value)

if portals then
if not PortalsDB.showTeleportsSubCat then
ShowMenuEntries("mainspells")
ShowMenuEntries("mainspells", true)
end
end

if PortalsDB.showItems then
if not PortalsDB.showItemsSubCat then
ShowMenuEntries("mainitems")
ShowMenuEntries("mainitems", PortalsDB.sortItems)
end
if not PortalsDB.showEngineeringSubCat and engineringItemsCount > 0 then
ShowMenuEntries("engineering")
ShowMenuEntries("engineering", PortalsDB.sortItems)
end
end

if PortalsDB.showChallengeTeleports and not isCataclysmClassic and challengeSpellCount > 0 then
if not PortalsDB.showChallengeSubCat then
ShowMenuEntries("challenges")
ShowMenuEntries("challenges", PortalsDB.sortItems)
end
end

if PortalsDB.showHSItems and heartstoneItemsCount > 0 then
if not PortalsDB.showHSItemsSubCat then
ShowMenuEntries("heartstones")
ShowMenuEntries("heartstones", PortalsDB.sortItems)
end
end

Expand Down Expand Up @@ -1020,8 +1033,6 @@ local function UpdateMenu(level, value)
end
end

dewdrop:AddLine()

ShowHearthstone()
ShowWhistle()

Expand All @@ -1040,15 +1051,15 @@ local function UpdateMenu(level, value)
'closeWhenClicked', true)

elseif level == 2 and value == 'mainspells' then
ShowMenuEntries("mainspells")
ShowMenuEntries("mainspells", true)
elseif level == 2 and value == 'mainitems' then
ShowMenuEntries("mainitems")
ShowMenuEntries("mainitems", PortalsDB.sortItems)
elseif level == 2 and value == 'heartstones' then
ShowMenuEntries("heartstones")
ShowMenuEntries("heartstones", PortalsDB.sortItems)
elseif level == 2 and value == 'challenges' then
ShowMenuEntries("challenges")
ShowMenuEntries("challenges", PortalsDB.sortItems)
elseif level == 2 and value == 'engineering' then
ShowMenuEntries("engineering")
ShowMenuEntries("engineering", PortalsDB.sortItems)
end
end

Expand All @@ -1067,13 +1078,17 @@ function frame:PLAYER_LOGIN()
PortalsDB.showChallengeSubCat = false
PortalsDB.showTeleportsSubCat = false
PortalsDB.scrollListSize = 33
PortalsDB.sortItems = false
PortalsDB.announce = false
PortalsDB.announce = false
PortalsDB.fontSize = UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT
PortalsDB.version = 7
PortalsDB.version = 9
end
-- upgrade from versions
if PortalsDB.version == 7 then
if PortalsDB.version == 8 then
PortalsDB.sortItems = false
PortalsDB.version = 9
elseif PortalsDB.version == 7 then
PortalsDB.showEngineeringSubCat = true
PortalsDB.showChallengeSubCat = false
PortalsDB.showTeleportsSubCat = false
Expand Down

0 comments on commit ed9848b

Please sign in to comment.