ElvUI/Modules/Skins/Blizzard/Friends.lua

303 lines
9.8 KiB
Lua

local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select, unpack = pairs, select, unpack
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local WhoFrameColumn_SetWidth = WhoFrameColumn_SetWidth
--Tab Regions
local tabs = {
'LeftDisabled',
'MiddleDisabled',
'RightDisabled',
'Left',
'Middle',
'Right',
}
local function SkinFriendRequest(frame)
if frame.isSkinned then return; end
S:HandleButton(frame.DeclineButton, nil, true)
S:HandleButton(frame.AcceptButton)
frame.isSkinned = true
end
local function UpdateWhoSkins()
_G.WhoListScrollFrame:StripTextures()
end
--Social Frame
local function SkinSocialHeaderTab(tab)
if not tab then return end
for _, object in pairs(tabs) do
local tex = _G[tab:GetName()..object]
tex:SetTexture()
end
tab:GetHighlightTexture():SetTexture()
tab.backdrop = CreateFrame('Frame', nil, tab, 'BackdropTemplate')
tab.backdrop:SetTemplate()
tab.backdrop:SetFrameLevel(tab:GetFrameLevel() - 1)
tab.backdrop:Point('TOPLEFT', 3, -8)
tab.backdrop:Point('BOTTOMRIGHT', -6, 0)
end
local function BattleNetFrame_OnEnter(button)
if not button.backdrop then return end
local bnetColor = _G.FRIENDS_BNET_NAME_COLOR
button.backdrop:SetBackdropBorderColor(bnetColor.r, bnetColor.g, bnetColor.b)
end
local function BattleNetFrame_OnLeave(button)
if not button.backdrop then return end
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
local function RAFRewards()
for reward in _G.RecruitAFriendRewardsFrame.rewardPool:EnumerateActive() do
S:HandleIcon(reward.Button.Icon)
reward.Button.IconBorder:Kill()
end
end
function S:FriendsFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.friends) then return end
S:HandleScrollBar(_G.FriendsListFrameScrollFrame.scrollBar, 5)
S:HandleScrollBar(_G.WhoListScrollFrame.scrollBar, 5)
local StripAllTextures = {
'FriendsTabHeaderTab1',
'FriendsTabHeaderTab2',
'WhoFrameColumnHeader1',
'WhoFrameColumnHeader2',
'WhoFrameColumnHeader3',
'WhoFrameColumnHeader4',
'AddFriendFrame',
}
local buttons = {
'FriendsFrameAddFriendButton',
'FriendsFrameSendMessageButton',
'WhoFrameWhoButton',
'WhoFrameAddFriendButton',
'WhoFrameGroupInviteButton',
'FriendsFrameIgnorePlayerButton',
'FriendsFrameUnsquelchButton',
'AddFriendEntryFrameAcceptButton',
'AddFriendEntryFrameCancelButton',
'AddFriendInfoFrameContinueButton',
}
for _, button in pairs(buttons) do
S:HandleButton(_G[button])
end
for _, object in pairs(StripAllTextures) do
_G[object]:StripTextures()
end
local mainFrames = {
'WhoFrame',
'LFRQueueFrame',
}
for _, frame in pairs(mainFrames) do
_G[frame]:StripTextures()
end
local FriendsFrame = _G.FriendsFrame
S:HandlePortraitFrame(FriendsFrame)
_G.WhoFrameListInset:StripTextures()
_G.WhoFrameListInset.NineSlice:Hide()
_G.WhoFrameEditBoxInset:StripTextures()
_G.WhoFrameEditBoxInset.NineSlice:Hide()
-- Kill the Portrait!
for i = 1, FriendsFrame:GetNumRegions() do
local region = select(i, FriendsFrame:GetRegions())
if region:IsObjectType('Texture') then
region:SetTexture()
region:SetAlpha(0)
end
end
_G.IgnoreListFrame:StripTextures()
S:HandleScrollBar(_G.IgnoreListFrameScrollFrame.scrollBar, 4)
S:HandleDropDownBox(_G.FriendsFrameStatusDropDown, 70)
_G.FriendsFrameStatusDropDown:ClearAllPoints()
_G.FriendsFrameStatusDropDown:Point('TOPLEFT', FriendsFrame, 'TOPLEFT', 5, -24)
local FriendsFrameBattlenetFrame = _G.FriendsFrameBattlenetFrame
FriendsFrameBattlenetFrame:StripTextures()
FriendsFrameBattlenetFrame:CreateBackdrop('Transparent')
FriendsFrameBattlenetFrame.backdrop:SetAllPoints()
local bnetColor = _G.FRIENDS_BNET_BACKGROUND_COLOR
local button = CreateFrame('Button', nil, FriendsFrameBattlenetFrame)
button:Point('TOPLEFT', FriendsFrameBattlenetFrame, 'TOPLEFT')
button:Point('BOTTOMRIGHT', FriendsFrameBattlenetFrame, 'BOTTOMRIGHT')
button:Size(FriendsFrameBattlenetFrame:GetSize())
button:CreateBackdrop()
button.backdrop:SetBackdropColor(bnetColor.r, bnetColor.g, bnetColor.b, bnetColor.a)
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
button:SetScript('OnClick', function() FriendsFrameBattlenetFrame.BroadcastFrame:ToggleFrame() end)
button:SetScript('OnEnter', BattleNetFrame_OnEnter)
button:SetScript('OnLeave', BattleNetFrame_OnLeave)
FriendsFrameBattlenetFrame.BroadcastButton:Kill() -- We use the BattlenetFrame to enter a Status Message
FriendsFrameBattlenetFrame.UnavailableInfoFrame:ClearAllPoints()
FriendsFrameBattlenetFrame.UnavailableInfoFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 1, -18)
FriendsFrameBattlenetFrame.BroadcastFrame:StripTextures()
FriendsFrameBattlenetFrame.BroadcastFrame:CreateBackdrop('Transparent')
FriendsFrameBattlenetFrame.BroadcastFrame.EditBox:StripTextures()
FriendsFrameBattlenetFrame.BroadcastFrame:ClearAllPoints()
FriendsFrameBattlenetFrame.BroadcastFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 3, -1)
S:HandleEditBox(FriendsFrameBattlenetFrame.BroadcastFrame.EditBox)
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.UpdateButton)
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.CancelButton)
S:HandleEditBox(_G.AddFriendNameEditBox)
_G.AddFriendFrame:CreateBackdrop('Transparent')
--Pending invites
S:HandleButton(_G.FriendsListFrameScrollFrame.PendingInvitesHeaderButton)
hooksecurefunc(_G.FriendsListFrameScrollFrame.invitePool, 'Acquire', function()
for object in pairs(_G.FriendsListFrameScrollFrame.invitePool.activeObjects) do
SkinFriendRequest(object)
end
end)
--Who Frame
_G.WhoFrame:HookScript('OnShow', UpdateWhoSkins)
hooksecurefunc('FriendsFrame_OnEvent', UpdateWhoSkins)
--Increase width of Level column slightly
WhoFrameColumn_SetWidth(_G.WhoFrameColumnHeader3, 37) --Default is 32
for i = 1, 17 do
local level = _G['WhoFrameButton'..i..'Level']
if level then
level:Width(level:GetWidth() + 5)
end
end
S:HandleDropDownBox(_G.WhoFrameDropDown, 120)
--Bottom Tabs
for i = 1, 4 do
S:HandleTab(_G['FriendsFrameTab'..i])
end
for i = 1, 3 do
SkinSocialHeaderTab(_G['FriendsTabHeaderTab'..i])
end
--View Friends BN Frame
local FriendsFriendsFrame = _G.FriendsFriendsFrame
FriendsFriendsFrame:StripTextures()
FriendsFriendsFrame.ScrollFrameBorder:Hide()
FriendsFriendsFrame:CreateBackdrop('Transparent')
S:HandleDropDownBox(_G.FriendsFriendsFrameDropDown, 150)
S:HandleButton(FriendsFriendsFrame.SendRequestButton)
S:HandleButton(FriendsFriendsFrame.CloseButton)
S:HandleScrollBar(_G.FriendsFriendsScrollFrame.scrollBar)
--Quick join
local QuickJoinFrame = _G.QuickJoinFrame
local QuickJoinRoleSelectionFrame = _G.QuickJoinRoleSelectionFrame
S:HandleScrollBar(_G.QuickJoinScrollFrame.scrollBar, 5)
S:HandleButton(_G.QuickJoinFrame.JoinQueueButton)
QuickJoinFrame.JoinQueueButton:Size(131, 21) --Match button on other tab
QuickJoinFrame.JoinQueueButton:ClearAllPoints()
QuickJoinFrame.JoinQueueButton:Point('BOTTOMRIGHT', QuickJoinFrame, 'BOTTOMRIGHT', -6, 4)
_G.QuickJoinScrollFrameTop:SetTexture()
_G.QuickJoinScrollFrameBottom:SetTexture()
_G.QuickJoinScrollFrameMiddle:SetTexture()
QuickJoinRoleSelectionFrame:StripTextures()
QuickJoinRoleSelectionFrame:CreateBackdrop('Transparent')
S:HandleButton(QuickJoinRoleSelectionFrame.AcceptButton)
S:HandleButton(QuickJoinRoleSelectionFrame.CancelButton)
S:HandleCloseButton(QuickJoinRoleSelectionFrame.CloseButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonTank.CheckButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonHealer.CheckButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonDPS.CheckButton)
-- GameIcons
for i = 1, _G.FRIENDS_TO_DISPLAY do
local btn = _G['FriendsListFrameScrollFrameButton'..i]
local icon = _G['FriendsListFrameScrollFrameButton'..i..'GameIcon']
icon:Size(22, 22)
icon:SetTexCoord(.15, .85, .15, .85)
icon:ClearAllPoints()
icon:Point('RIGHT', btn, 'RIGHT', -24, 0)
icon.SetPoint = E.noop
end
-- RecruitAFriend 8.2.5
local RAF = _G.RecruitAFriendFrame
S:HandleButton(RAF.RecruitmentButton)
-- /run RecruitAFriendFrame:ShowSplashScreen()
local SplashFrame = RAF.SplashFrame
S:HandleButton(SplashFrame.OKButton)
if E.private.skins.parchmentRemoverEnable then
SplashFrame.Background:SetColorTexture(unpack(E.media.bordercolor))
SplashFrame.PictureFrame:Hide()
SplashFrame.Bracket_TopLeft:Hide()
SplashFrame.Bracket_TopRight:Hide()
SplashFrame.Bracket_BottomRight:Hide()
SplashFrame.Bracket_BottomLeft:Hide()
SplashFrame.PictureFrame_Bracket_TopLeft:Hide()
SplashFrame.PictureFrame_Bracket_TopRight:Hide()
SplashFrame.PictureFrame_Bracket_BottomRight:Hide()
SplashFrame.PictureFrame_Bracket_BottomLeft:Hide()
end
local Claiming = RAF.RewardClaiming
Claiming:StripTextures()
Claiming:CreateBackdrop('Transparent')
S:HandleIcon(Claiming.NextRewardButton.Icon)
Claiming.NextRewardButton.CircleMask:Hide()
Claiming.NextRewardButton.IconBorder:Kill()
S:HandleButton(Claiming.ClaimOrViewRewardButton)
local RecruitList = RAF.RecruitList
RecruitList.Header:StripTextures()
RecruitList.ScrollFrameInset:StripTextures()
RecruitList.ScrollFrameInset:CreateBackdrop('Transparent')
S:HandleScrollBar(RecruitList.ScrollFrame.Slider)
-- Recruitment
local Recruitment = _G.RecruitAFriendRecruitmentFrame
Recruitment:StripTextures()
Recruitment:CreateBackdrop('Transparent')
S:HandleEditBox(Recruitment.EditBox)
S:HandleButton(Recruitment.GenerateOrCopyLinkButton)
S:HandleCloseButton(Recruitment.CloseButton)
-- Rewards
local Reward = _G.RecruitAFriendRewardsFrame
Reward:StripTextures()
Reward:CreateBackdrop('Transparent')
S:HandleCloseButton(Reward.CloseButton)
hooksecurefunc(Reward, 'UpdateRewards', RAFRewards)
RAFRewards() -- Because it's loaded already. The securehook is for when it updates in game. Thanks for playing.
end
S:AddCallback('FriendsFrame')