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.
82 lines
2.3 KiB
82 lines
2.3 KiB
local TSM = select(2, ...) |
|
local Sidebar = TSM:NewModule("Sidebar", "AceEvent-3.0") |
|
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Shopping") -- loads the localization table |
|
|
|
local private = {pages={}, order={}, createFunctions={}, updateFunctions={}, currentPage=nil} |
|
|
|
|
|
function Sidebar:Show(parent) |
|
private.frame = private.frame or private:CreateSidebar(parent) |
|
private.frame:Show() |
|
end |
|
|
|
function Sidebar:Hide() |
|
if not private.frame then return end |
|
private.frame:Hide() |
|
end |
|
|
|
function private:CreateSidebar(parent) |
|
TSM.Util:ShowSearchFrame(nil, L["% Market Value"]) |
|
local frame = CreateFrame("Frame", nil, parent) |
|
frame:SetPoint("TOPLEFT", parent, "TOPRIGHT", 2, 0) |
|
frame:SetPoint("BOTTOMLEFT", parent, "BOTTOMRIGHT", 2, 0) |
|
frame:SetWidth(300) |
|
TSMAPI.Design:SetFrameBackdropColor(frame) |
|
|
|
local content = CreateFrame("Frame", nil, frame) |
|
content:SetPoint("TOPLEFT", 5, -5) |
|
content:SetPoint("BOTTOMRIGHT", -5, 5) |
|
frame.content = content |
|
|
|
for label, func in pairs(private.createFunctions) do |
|
frame.content[label] = func(content) |
|
frame.content[label]:Hide() |
|
end |
|
private.currentPage = private.currentPage or private.order[1] |
|
frame.content[private.currentPage]:Show() |
|
|
|
return frame |
|
end |
|
|
|
function Sidebar:AddSidebarFeature(label, createFunc, updateFunc) |
|
private.pages[label] = label |
|
private.createFunctions[label] = createFunc |
|
private.updateFunctions[label] = updateFunc |
|
tinsert(private.order, label) |
|
end |
|
|
|
function Sidebar:UpdateCurrentFrame() |
|
if private.currentPage and private.updateFunctions[private.currentPage] then |
|
private.updateFunctions[private.currentPage]() |
|
end |
|
end |
|
|
|
function Sidebar:GetPages() |
|
return private.order |
|
end |
|
|
|
function Sidebar:ButtonClick(key) |
|
for i in pairs(private.pages) do |
|
private.frame.content[i]:Hide() |
|
end |
|
private.frame.content[key]:Show() |
|
private.currentPage = key |
|
end |
|
|
|
function Sidebar:GetCurrentPage() |
|
if not private.frame or not private.frame:IsVisible() then return end |
|
|
|
if private.currentPage == L["Saved Searches"] then |
|
return "saved" |
|
elseif private.currentPage == L["TSM Groups"] then |
|
return "groups" |
|
elseif private.currentPage == L["Log"] then |
|
return "log" |
|
elseif private.currentPage == L["Quick Posting"] then |
|
return "quick" |
|
elseif private.currentPage == L["Custom Filter"] then |
|
return "custom" |
|
elseif private.currentPage == OTHER then |
|
return "other" |
|
end |
|
end |