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.
200 lines
6.7 KiB
200 lines
6.7 KiB
-- ///////////////////////////////////////////////////////////////////////////////////////////
|
|
--
|
|
-- Module to create the saved set character scrolling menu
|
|
|
|
-- ///////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
local addonName, addon = ...
|
|
addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
|
|
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
|
|
|
|
BetterWardrobeSavedOutfitDropDownMenuMixin = {}
|
|
|
|
function BetterWardrobeSavedOutfitDropDownMenuMixin:OnLoad()
|
|
local button = _G[self:GetName().."Button"]
|
|
button:SetScript("OnMouseDown", function(self)
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
|
|
BetterWardrobeSavedOutfitDropdownFrame:Toggle(self:GetParent())
|
|
end
|
|
)
|
|
BW_UIDropDownMenu_JustifyText(self, "LEFT")
|
|
if ( self.width ) then
|
|
BW_UIDropDownMenu_SetWidth(self, self.width)
|
|
end
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropDownMenuMixin:OnShow()
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropDownMenuMixin:OnHide()
|
|
if BetterWardrobeSavedOutfitDropdownFrame.dropDown == self then
|
|
BetterWardrobeSavedOutfitDropdownFrame:Hide()
|
|
end
|
|
end
|
|
|
|
----
|
|
|
|
local OUTFIT_FRAME_MIN_STRING_WIDTH = 152
|
|
local OUTFIT_FRAME_MAX_STRING_WIDTH = 216
|
|
local OUTFIT_FRAME_ADDED_PIXELS = 90 -- pixels added to string width
|
|
|
|
BetterWardrobeSavedOutfitDropdownFrameMixin = {}
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:OnHide()
|
|
self.timer = nil
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:Toggle(dropDown)
|
|
if ( self.dropDown == dropDown and self:IsShown() ) then
|
|
BetterWardrobeSavedOutfitDropdownFrame:Hide()
|
|
else
|
|
CloseDropDownMenus()
|
|
self.dropDown = dropDown
|
|
self:Show()
|
|
self:SetPoint("TOPLEFT", self.dropDown, "BOTTOMLEFT", 8, -3)
|
|
self:Update()
|
|
end
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:OnUpdate(elapsed)
|
|
local mouseFocus = GetMouseFocus()
|
|
for i = 1, #self.Buttons do
|
|
local button = self.Buttons[i]
|
|
if ( button == mouseFocus or button:IsMouseOver() ) then
|
|
button.Highlight:Show()
|
|
else
|
|
button.Highlight:Hide()
|
|
end
|
|
end
|
|
|
|
if ( BW_UIDROPDOWNMENU_OPEN_MENU ) then
|
|
self:Hide()
|
|
end
|
|
|
|
if ( self.timer ) then
|
|
self.timer = self.timer - elapsed
|
|
if ( self.timer < 0 ) then
|
|
self:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:StartHideCountDown()
|
|
self.timer = BW_UIDROPDOWNMENU_SHOW_TIME
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:StopHideCountDown()
|
|
self.timer = nil
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:Update()
|
|
local buttons = self.Buttons
|
|
local numButtons = 1
|
|
local stringWidth = 0
|
|
local minStringWidth = self.dropDown.minMenuStringWidth or OUTFIT_FRAME_MIN_STRING_WIDTH
|
|
local maxStringWidth = self.dropDown.maxMenuStringWidth or OUTFIT_FRAME_MAX_STRING_WIDTH
|
|
self:SetWidth(maxStringWidth + OUTFIT_FRAME_ADDED_PIXELS)
|
|
|
|
for name in pairs(addon.setdb.global.sets)do
|
|
local button = buttons[numButtons]
|
|
if ( not button ) then
|
|
button = CreateFrame("BUTTON", nil, self.Content, "BetterWardrobeCharacterOutfitButtonTemplate")
|
|
if numButtons == 1 then
|
|
button:SetPoint("TOPLEFT", self.Content, "TOPLEFT")
|
|
button:SetPoint("TOPRIGHT", self.Content, "TOPRIGHT", -20, 0)
|
|
else
|
|
button:SetPoint("TOPLEFT", buttons[numButtons-1], "BOTTOMLEFT", 0, 0)
|
|
button:SetPoint("TOPRIGHT", buttons[numButtons-1], "BOTTOMRIGHT", 0, 0)
|
|
end
|
|
end
|
|
|
|
button:Show();
|
|
button.name = name
|
|
button.Selection:Hide();
|
|
button.Check:Hide();
|
|
button.Text:SetWidth(0);
|
|
button:SetText(NORMAL_FONT_COLOR_CODE..name..FONT_COLOR_CODE_CLOSE);
|
|
|
|
stringWidth = max(stringWidth, button.Text:GetStringWidth())
|
|
if ( button.Text:GetStringWidth() > maxStringWidth ) then
|
|
button.Text:SetWidth(maxStringWidth)
|
|
end
|
|
numButtons = numButtons + 1
|
|
end
|
|
|
|
for count = numButtons, #buttons do
|
|
buttons[count]:Hide()
|
|
end
|
|
|
|
stringWidth = max(stringWidth, minStringWidth)
|
|
stringWidth = min(stringWidth, maxStringWidth)
|
|
self:SetWidth(stringWidth + OUTFIT_FRAME_ADDED_PIXELS)
|
|
|
|
if numButtons > 12 then
|
|
self:SetHeight(30 + 12 * 20)
|
|
|
|
else
|
|
self:SetHeight(30 + numButtons * 20)
|
|
end
|
|
end
|
|
|
|
function BetterWardrobeSavedOutfitDropdownFrameMixin:CreateScrollFrame()
|
|
self:SetFrameLevel(5000)
|
|
self.scrollframe = self.scrollframe or CreateFrame("ScrollFrame", self:GetName().."ScrollFrame", self, "UIPanelScrollFrameTemplate")
|
|
self.scrollchild = self.scrollchild or CreateFrame("Frame") -- not sure what happens if you do, but to be safe, don't parent this yet (or do anything with it)
|
|
|
|
local scrollbarName = self.scrollframe:GetName()
|
|
self.scrollbar = _G[scrollbarName.."ScrollBar"]
|
|
self.scrollupbutton = _G[scrollbarName.."ScrollBarScrollUpButton"]
|
|
self.scrolldownbutton = _G[scrollbarName.."ScrollBarScrollDownButton"]
|
|
|
|
self.scrollupbutton:ClearAllPoints()
|
|
self.scrollupbutton:SetPoint("TOPRIGHT", self.scrollframe, "TOPRIGHT", -2, -2)
|
|
|
|
self.scrolldownbutton:ClearAllPoints()
|
|
self.scrolldownbutton:SetPoint("BOTTOMRIGHT", self.scrollframe, "BOTTOMRIGHT", -2, 2)
|
|
|
|
self.scrollbar:ClearAllPoints()
|
|
self.scrollbar:SetPoint("TOP", self.scrollupbutton, "BOTTOM", 0, -2)
|
|
self.scrollbar:SetPoint("BOTTOM", self.scrolldownbutton, "TOP", 0, 2)
|
|
|
|
self.scrollframe:SetScrollChild(self.scrollchild)
|
|
self.scrollframe:SetAllPoints(self)
|
|
self.scrollframe:ClearAllPoints()
|
|
self.scrollframe:SetPoint("TOPLEFT", self, "TOPLEFT", 11, -15)
|
|
self.scrollframe:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", -11, 15)
|
|
self.scrollchild:SetSize(self.scrollframe:GetWidth(), ( self.scrollframe:GetHeight() * 2 ))
|
|
|
|
self.moduleoptions = self.moduleoptions or CreateFrame("Frame", nil, self.scrollchild)
|
|
self.moduleoptions:SetAllPoints(self.scrollchild)
|
|
|
|
self.Content = self.moduleoptions
|
|
|
|
function self.moduleoptions:StartHideCountDown()
|
|
return BetterWardrobeSavedOutfitDropdownFrame:StartHideCountDown()
|
|
end
|
|
|
|
function self.moduleoptions:StopHideCountDown()
|
|
return BetterWardrobeSavedOutfitDropdownFrame:StopHideCountDown()
|
|
end
|
|
self.moduleoptions.Buttons = self.moduleoptions.Buttons or {}
|
|
self.Buttons = self.moduleoptions.Buttons
|
|
end
|
|
|
|
--===================================================================================================================================
|
|
BetterWardrobeSavedOutfitButtonTemplate = { }
|
|
|
|
function BetterWardrobeSavedOutfitButtonTemplate:OnClick()
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
|
|
BetterWardrobeSavedOutfitDropdownFrame:Hide()
|
|
|
|
if ( self.name ~= addon.setdb:GetCurrentProfile() ) then
|
|
addon.SelecteSavedList = self.name
|
|
else
|
|
addon.SelecteSavedList = false
|
|
end
|
|
|
|
BetterWardrobeCollectionFrame.SetsCollectionFrame:OnSearchUpdate()
|
|
BetterWardrobeCollectionFrame.SetsTransmogFrame:OnSearchUpdate()
|
|
BW_UIDropDownMenu_SetText(SavedOutfitDropDownMenu, self.name)
|
|
end
|