diff --git a/ElvUI/Classic/Modules/Skins/Friends.lua b/ElvUI/Classic/Modules/Skins/Friends.lua index 81de00aace..1c94e07b66 100644 --- a/ElvUI/Classic/Modules/Skins/Friends.lua +++ b/ElvUI/Classic/Modules/Skins/Friends.lua @@ -6,29 +6,143 @@ local unpack, pairs = unpack, pairs local BNConnected = BNConnected local BNFeaturesEnabled = BNFeaturesEnabled -local GetNumSubgroupMembers = GetNumSubgroupMembers +local GetGuildRosterInfo = GetGuildRosterInfo local GetQuestDifficultyColor = GetQuestDifficultyColor local hooksecurefunc = hooksecurefunc +local GUILDMEMBERS_TO_DISPLAY = GUILDMEMBERS_TO_DISPLAY local C_FriendList_GetNumWhoResults = C_FriendList.GetNumWhoResults local C_FriendList_GetWhoInfo = C_FriendList.GetWhoInfo -local function skinFriendRequest(frame) +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 CheckBattlenetStatus() + if BNFeaturesEnabled() then + _G.FriendsFrameBattlenetFrame.BroadcastButton:Hide() + + if BNConnected() then + _G.FriendsFrameBattlenetFrame:Hide() + _G.FriendsFrameBroadcastInput:Show() + _G.FriendsFrameBroadcastInput_UpdateDisplay() + end + end +end + +local function UpdateFriendsFrame() + if _G.FriendsFrame.selectedTab == 1 and _G.FriendsTabHeader.selectedTab == 1 and _G.FriendsFrameBattlenetFrame.Tag:IsShown() then + _G.FriendsFrameTitleText:Hide() + else + _G.FriendsFrameTitleText:Show() + end +end + +local function AcquireInvitePool(pool) + if pool.activeObjects then + for object in pairs(pool.activeObjects) do + SkinFriendRequest(object) + end + end +end + +local function UpdateWhoList() + local numWhos = C_FriendList_GetNumWhoResults() + if numWhos == 0 then return end + + if numWhos > _G.WHOS_TO_DISPLAY then + numWhos = _G.WHOS_TO_DISPLAY + end + + local playerZone = E.MapInfo.realZoneText + for i = 1, numWhos do + local button = _G['WhoFrameButton'..i] + if button and button.whoIndex then + local info = C_FriendList_GetWhoInfo(button.whoIndex) + if info.filename then + local classTextColor = E:ClassColor(info.filename) + _G['WhoFrameButton'..i..'Name']:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b) + + button.icon:Show() + button.icon:SetTexCoord(E:GetClassCoords(info.filename)) + else + local classTextColor = _G.HIGHLIGHT_FONT_COLOR + _G['WhoFrameButton'..i..'Name']:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b) + + button.icon:Hide() + end + + local levelTextColor = GetQuestDifficultyColor(info.level) + _G['WhoFrameButton'..i..'Level']:SetTextColor(levelTextColor.r, levelTextColor.g, levelTextColor.b) + _G['WhoFrameButton'..i..'Class']:SetTextColor(1, 1, 1) + + if info.area == playerZone then + _G['WhoFrameButton'..i..'Variable']:SetTextColor(0, 1, 0) + else + _G['WhoFrameButton'..i..'Variable']:SetTextColor(1, 1, 1) + end + end + end +end + +local function RaidInfoFrame_OnShow() + _G.RaidInfoFrame:Point('TOPLEFT', _G.RaidFrame, 'TOPRIGHT', 0, 0) +end + +local function UpdateGuildStatus() + if _G.FriendsFrame.playerStatusFrame then + local playerZone = E.MapInfo.realZoneText + for i = 1, GUILDMEMBERS_TO_DISPLAY do + local button = _G['GuildFrameButton'..i] + if button and button.guildIndex then + local _, _, _, level, className, zone, _, _, online = GetGuildRosterInfo(button.guildIndex) + local classFileName = E:UnlocalizedClassName(className) + if classFileName then + if online then + local classTextColor = E:ClassColor(classFileName) + local levelTextColor = GetQuestDifficultyColor(level) + _G['GuildFrameButton'..i..'Name']:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b) + _G['GuildFrameButton'..i..'Level']:SetTextColor(levelTextColor.r, levelTextColor.g, levelTextColor.b) + + if zone == playerZone then + _G['GuildFrameButton'..i..'Zone']:SetTextColor(0, 1, 0) + else + _G['GuildFrameButton'..i..'Zone']:SetTextColor(1, 1, 1) + end + end + + button.icon:SetTexCoord(E:GetClassCoords(classFileName)) + end + end + end + else + for i = 1, GUILDMEMBERS_TO_DISPLAY do + local button = _G['GuildFrameGuildStatusButton'..i] + if button and button.guildIndex then + local _, _, _, _, className, _, _, _, online = GetGuildRosterInfo(button.guildIndex) + local classFileName = online and E:UnlocalizedClassName(className) + if classFileName then + local classTextColor = E:ClassColor(classFileName) + _G['GuildFrameGuildStatusButton'..i..'Name']:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b) + _G['GuildFrameGuildStatusButton'..i..'Online']:SetTextColor(1, 1, 1) + end + end + end + end +end + function S:FriendsFrame() if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.friends) then return end -- Friends Frame local FriendsFrame = _G.FriendsFrame S:HandleFrame(FriendsFrame, true, nil, -5, 0, -2) - _G.FriendsFrameCloseButton:Point('TOPRIGHT', 0, 2) - S:HandleDropDownBox(_G.FriendsFrameStatusDropdown, 70) _G.FriendsFrameStatusDropdown:PointXY(256, -55) @@ -42,7 +156,7 @@ function S:FriendsFrame() _G.FriendsFrameTab2:Point('TOPLEFT', _G.FriendsFrameTab1, 'TOPRIGHT', -19, 0) _G.FriendsFrameTab3:Point('TOPLEFT', _G.FriendsFrameTab2, 'TOPRIGHT', -19, 0) _G.FriendsFrameTab4:Point('TOPLEFT', _G.FriendsFrameTab3, 'TOPRIGHT', -19, 0) - _G.FriendsFrameTab5:Point('TOPLEFT', _G.FriendsFrameTab4, 'TOPRIGHT', -19, 0) + -- _G.FriendsFrameTab5:Point('TOPLEFT', _G.FriendsFrameTab4, 'TOPRIGHT', -19, 0) -- Friends List Frame for i = 1, _G.FRIEND_HEADER_TAB_IGNORE do @@ -55,12 +169,13 @@ function S:FriendsFrame() for i = 1, _G.FRIENDS_FRIENDS_TO_DISPLAY do local button = 'FriendsFrameFriendsScrollFrameButton'..i + local btn = _G[button] _G[button..'SummonButtonIcon']:SetTexCoord(unpack(E.TexCoords)) _G[button..'SummonButtonNormalTexture']:SetAlpha(0) _G[button..'SummonButton']:StyleButton() - _G[button].highlight:SetTexture(E.Media.Textures.Highlight) - _G[button].highlight:SetAlpha(0.3) + btn.highlight:SetTexture(E.Media.Textures.Highlight) + btn.highlight:SetAlpha(0.3) end for i = 1, _G.FRIENDS_FRIENDS_TO_DISPLAY do @@ -68,22 +183,18 @@ function S:FriendsFrame() end S:HandleScrollBar(_G.FriendsFrameFriendsScrollFrameScrollBar) - S:HandleButton(_G.AddFriendEntryFrameAcceptButton) S:HandleButton(_G.AddFriendEntryFrameCancelButton) S:HandleButton(_G.FriendsFrameAddFriendButton) S:HandleButton(_G.FriendsFrameSendMessageButton) S:HandleButton(_G.FriendsFrameUnsquelchButton) - _G.FriendsFrameAddFriendButton:PointXY(-1, 4) -- Battle.net local FriendsFrameBattlenetFrame = _G.FriendsFrameBattlenetFrame FriendsFrameBattlenetFrame:StripTextures() FriendsFrameBattlenetFrame:GetRegions():Hide() - FriendsFrameBattlenetFrame.UnavailableInfoFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 1, -18) - FriendsFrameBattlenetFrame.Tag:SetParent(_G.FriendsListFrame) FriendsFrameBattlenetFrame.Tag:Point('TOP', FriendsFrame, 'TOP', 0, -8) @@ -97,41 +208,21 @@ function S:FriendsFrame() _G.FriendsFrameBroadcastInputRight:Kill() _G.FriendsFrameBroadcastInputMiddle:Kill() - hooksecurefunc('FriendsFrame_CheckBattlenetStatus', function() - if BNFeaturesEnabled() then - - FriendsFrameBattlenetFrame.BroadcastButton:Hide() - - if BNConnected() then - FriendsFrameBattlenetFrame:Hide() - _G.FriendsFrameBroadcastInput:Show() - _G.FriendsFrameBroadcastInput_UpdateDisplay() - end - end - end) + hooksecurefunc('FriendsFrame_CheckBattlenetStatus', CheckBattlenetStatus) _G.FriendsFrame_CheckBattlenetStatus() - hooksecurefunc('FriendsFrame_Update', function() - if FriendsFrame.selectedTab == 1 and _G.FriendsTabHeader.selectedTab == 1 and _G.FriendsFrameBattlenetFrame.Tag:IsShown() then - _G.FriendsFrameTitleText:Hide() - else - _G.FriendsFrameTitleText:Show() - end - end) + hooksecurefunc('FriendsFrame_Update', UpdateFriendsFrame) S:HandleEditBox(_G.AddFriendNameEditBox) - _G.AddFriendFrame:SetTemplate('Transparent') -- Pending invites _G.FriendsFrameFriendsScrollFrame:StripTextures() - S:HandleButton(_G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton, true) _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton:SetScript('OnMouseUp', nil) _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton:SetScript('OnMouseDown', nil) - _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton.RightArrow:SetTexture(E.Media.Textures.ArrowUp) _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton.RightArrow:SetRotation(S.ArrowRotation['right']) _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton.DownArrow:SetTexture(E.Media.Textures.ArrowUp) @@ -139,34 +230,22 @@ function S:FriendsFrame() _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton.RightArrow:SetPoint('LEFT', 11, 0) _G.FriendsFrameFriendsScrollFrame.PendingInvitesHeaderButton.DownArrow:SetPoint('TOPLEFT', 8, -10) - hooksecurefunc(_G.FriendsFrameFriendsScrollFrame.invitePool, 'Acquire', function(pool) - if pool.activeObjects then - for object in pairs(pool.activeObjects) do - skinFriendRequest(object) - end - end - end) + hooksecurefunc(_G.FriendsFrameFriendsScrollFrame.invitePool, 'Acquire', AcquireInvitePool) S:HandleFrame(_G.FriendsFriendsFrame, true) - _G.FriendsFriendsList:StripTextures() _G.IgnoreListFrame:StripTextures() S:HandleButton(_G.FriendsFriendsCloseButton) S:HandleButton(_G.FriendsFriendsSendRequestButton) - S:HandleEditBox(_G.FriendsFriendsList) - S:HandleScrollBar(_G.FriendsFriendsScrollFrameScrollBar) - S:HandleDropDownBox(_G.FriendsFriendsFrameDropdown, 150) -- Ignore List Frame _G.IgnoreListFrame:StripTextures() - S:HandleButton(_G.FriendsFrameIgnorePlayerButton, true) S:HandleButton(_G.FriendsFrameUnsquelchButton, true) - S:HandleScrollBar(_G.FriendsFrameIgnoreScrollFrameScrollBar) -- Who Frame @@ -216,7 +295,7 @@ function S:FriendsFrame() local button = _G['WhoFrameButton'..i] local level = _G['WhoFrameButton'..i..'Level'] local name = _G['WhoFrameButton'..i..'Name'] - local class = _G['WhoFrameButton'..i..'Class'] + local className = _G['WhoFrameButton'..i..'Class'] button.icon = button:CreateTexture('$parentIcon', 'ARTWORK') button.icon:Point('LEFT', 45, 0) @@ -233,70 +312,163 @@ function S:FriendsFrame() name:ClearAllPoints() name:SetPoint('LEFT', 85, 0) - class:Hide() + className:Hide() end - hooksecurefunc('WhoList_Update', function() - local numWhos = C_FriendList_GetNumWhoResults() - if numWhos == 0 then return end + hooksecurefunc('WhoList_Update', UpdateWhoList) + + -- Guild Frame (/groster) + _G.GuildFrame:StripTextures() + _G.GuildFrameColumnHeader3:ClearAllPoints() + _G.GuildFrameColumnHeader3:Point('TOPLEFT', 8, -57) + _G.GuildFrameColumnHeader4:ClearAllPoints() + _G.GuildFrameColumnHeader4:Point('LEFT', _G.GuildFrameColumnHeader3, 'RIGHT', -2, -0) + _G.GuildFrameColumnHeader4:Width(50) + _G.GuildFrameColumnHeader1:ClearAllPoints() + _G.GuildFrameColumnHeader1:Point('LEFT', _G.GuildFrameColumnHeader4, 'RIGHT', -2, -0) + _G.GuildFrameColumnHeader1:Width(105) + _G.GuildFrameColumnHeader2:ClearAllPoints() + _G.GuildFrameColumnHeader2:Point('LEFT', _G.GuildFrameColumnHeader1, 'RIGHT', -2, -0) + _G.GuildFrameColumnHeader2:Width(127) + + for i = 1, GUILDMEMBERS_TO_DISPLAY do + local button = _G['GuildFrameButton'..i] + local level = _G['GuildFrameButton'..i..'Level'] + local name = _G['GuildFrameButton'..i..'Name'] + local classButton = _G['GuildFrameButton'..i..'Class'] + local statusButton = _G['GuildFrameGuildStatusButton'..i] + local statusName = _G['GuildFrameGuildStatusButton'..i..'Name'] - if numWhos > _G.WHOS_TO_DISPLAY then - numWhos = _G.WHOS_TO_DISPLAY - end + button.icon = button:CreateTexture('$parentIcon', 'ARTWORK') + button.icon:Point('LEFT', 48, 0) + button.icon:Size(15) + button.icon:SetTexture([[Interface\WorldStateFrame\Icons-Classes]]) + button.icon:CreateBackdrop(nil, true, nil, nil, nil, nil, nil, button.icon) - local playerZone = E.MapInfo.realZoneText - local classTextColor, levelTextColor + S:HandleButtonHighlight(button) + S:HandleButtonHighlight(statusButton) + level:ClearAllPoints() + level:SetPoint('TOPLEFT', 10, -1) + name:SetSize(100, 14) + name:ClearAllPoints() + name:SetPoint('LEFT', 85, 0) + classButton:Hide() + statusName:ClearAllPoints() + statusName:SetPoint('LEFT', 10, 0) + end - for i = 1, numWhos do - local button = _G['WhoFrameButton'..i] - local info = C_FriendList_GetWhoInfo(button.whoIndex) + hooksecurefunc('GuildStatus_Update', UpdateGuildStatus) - if info.filename then - classTextColor = E:ClassColor(info.filename) - button.icon:Show() - button.icon:SetTexCoord(E:GetClassCoords(info.filename)) - else - classTextColor = _G.HIGHLIGHT_FONT_COLOR - button.icon:Hide() - end + S:HandleFrame(_G.GuildFrameLFGFrame, true) + S:HandleCheckBox(_G.GuildFrameLFGButton) - levelTextColor = GetQuestDifficultyColor(info.level) + for i = 1, 4 do + _G['GuildFrameColumnHeader'..i]:StripTextures() + _G['GuildFrameColumnHeader'..i]:StyleButton() + _G['GuildFrameGuildStatusColumnHeader'..i]:StripTextures() + _G['GuildFrameGuildStatusColumnHeader'..i]:StyleButton() + end - _G['WhoFrameButton'..i..'Name']:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b) - _G['WhoFrameButton'..i..'Level']:SetTextColor(levelTextColor.r, levelTextColor.g, levelTextColor.b) - _G['WhoFrameButton'..i..'Class']:SetTextColor(1, 1, 1) + _G.GuildListScrollFrame:StripTextures() + S:HandleScrollBar(_G.GuildListScrollFrameScrollBar) + S:HandleNextPrevButton(_G.GuildFrameGuildListToggleButton, 'left') + S:HandleButton(_G.GuildFrameGuildInformationButton) + _G.GuildFrameGuildInformationButton:Point('BOTTOMLEFT', -1, 4) + S:HandleButton(_G.GuildFrameAddMemberButton) + S:HandleButton(_G.GuildFrameControlButton) - if info.area == playerZone then - _G['WhoFrameButton'..i..'Variable']:SetTextColor(0, 1, 0) - else - _G['WhoFrameButton'..i..'Variable']:SetTextColor(1, 1, 1) - end + if _G.GuildFrameImpeachButton then + S:HandleButton(_G.GuildFrameImpeachButton) + end + + -- Member Detail Frame + _G.GuildMemberDetailFrame:StripTextures() + _G.GuildMemberDetailFrame:CreateBackdrop('Transparent') + _G.GuildMemberDetailFrame:Point('TOPLEFT', _G.GuildFrame, 'TOPRIGHT', 3, -1) + S:HandleCloseButton(_G.GuildMemberDetailCloseButton, _G.GuildMemberDetailFrame.backdrop) + S:HandleButton(_G.GuildMemberRemoveButton) + _G.GuildMemberRemoveButton:Point('BOTTOMLEFT', 3, 3) + S:HandleButton(_G.GuildMemberGroupInviteButton) + _G.GuildMemberGroupInviteButton:Point('BOTTOMRIGHT', -3, 3) + + -- Not the reason of the taint + S:HandleNextPrevButton(_G.GuildFramePromoteButton, 'up') + _G.GuildFramePromoteButton:SetHitRectInsets(0, 0, 0, 0) + _G.GuildFramePromoteButton:SetPoint('TOPLEFT', _G.GuildMemberDetailFrame, 'TOPLEFT', 155, -68) + S:HandleNextPrevButton(_G.GuildFrameDemoteButton) + _G.GuildFrameDemoteButton:SetHitRectInsets(0, 0, 0, 0) + _G.GuildFrameDemoteButton:Point('LEFT', _G.GuildFramePromoteButton, 'RIGHT', 2, 0) + _G.GuildMemberNoteBackground:StripTextures() + _G.GuildMemberNoteBackground:CreateBackdrop() + _G.GuildMemberNoteBackground.backdrop:Point('TOPLEFT', 0, -2) + _G.GuildMemberNoteBackground.backdrop:Point('BOTTOMRIGHT', 0, 2) + _G.PersonalNoteText:Point('TOPLEFT', 4, -4) + _G.GuildMemberOfficerNoteBackground:StripTextures() + _G.GuildMemberOfficerNoteBackground:CreateBackdrop() + _G.GuildMemberOfficerNoteBackground.backdrop:Point('TOPLEFT', 0, -2) + _G.GuildMemberOfficerNoteBackground.backdrop:Point('BOTTOMRIGHT', 0, -1) + _G.GuildFrameNotesLabel:Point('TOPLEFT', _G.GuildFrame, 'TOPLEFT', 6, -328) + _G.GuildFrameNotesText:Point('TOPLEFT', _G.GuildFrameNotesLabel, 'BOTTOMLEFT', 0, -6) + _G.GuildFrameBarLeft:StripTextures() + _G.GuildMOTDEditButton:CreateBackdrop() + _G.GuildMOTDEditButton.backdrop:Point('TOPLEFT', -7, 3) + _G.GuildMOTDEditButton.backdrop:Point('BOTTOMRIGHT', 7, -2) + _G.GuildMOTDEditButton:SetHitRectInsets(-7, -7, -3, -2) + + -- Info Frame + _G.GuildInfoFrame:StripTextures() + _G.GuildInfoFrame:CreateBackdrop('Transparent') + _G.GuildInfoFrame:Point('TOPLEFT', _G.GuildFrame, 'TOPRIGHT', -1, 6) + _G.GuildInfoFrame.backdrop:Point('TOPLEFT', 3, -6) + _G.GuildInfoFrame.backdrop:Point('BOTTOMRIGHT', -2, 3) + _G.GuildInfoTextBackground.NineSlice:SetTemplate('Transparent') + S:HandleScrollBar(_G.GuildInfoFrameScrollFrameScrollBar) + S:HandleCloseButton(_G.GuildInfoCloseButton, _G.GuildInfoFrame.backdrop) + S:HandleButton(_G.GuildInfoSaveButton) + S:HandleButton(_G.GuildInfoCancelButton) + _G.GuildInfoCancelButton:ClearAllPoints() + _G.GuildInfoCancelButton:Point('BOTTOMRIGHT', _G.GuildInfoFrame, -10, 8) + _G.GuildInfoSaveButton:ClearAllPoints() + _G.GuildInfoSaveButton:Point('RIGHT', _G.GuildInfoCancelButton, 'LEFT', -4, 0) + + -- Guild Control Frame (Guild Master Only) + _G.GuildControlPopupFrame:StripTextures() + _G.GuildControlPopupFrame:CreateBackdrop('Transparent') + _G.GuildControlPopupFrame.backdrop:Point('TOPLEFT', 3, 0) + S:HandleDropDownBox(_G.GuildControlPopupFrameDropdown, 170) + -- _G.GuildControlPopupFrameDropdownButton:Size(18) + S:HandleCollapseTexture(_G.GuildControlPopupFrameAddRankButton, nil, true) + _G.GuildControlPopupFrameAddRankButton:Point('LEFT', _G.GuildControlPopupFrameDropdown, 'RIGHT', -2, 3) + S:HandleCollapseTexture(_G.GuildControlPopupFrameRemoveRankButton, nil, true) + _G.GuildControlPopupFrameRemoveRankButton:Point('LEFT', _G.GuildControlPopupFrameAddRankButton, 'RIGHT', 2, 0) + _G.GuildControlPopupFrameEditBox:StripTextures() + S:HandleEditBox(_G.GuildControlPopupFrameEditBox) + _G.GuildControlPopupFrameEditBox.backdrop:Point('TOPLEFT', 0, -5) + _G.GuildControlPopupFrameEditBox.backdrop:Point('BOTTOMRIGHT', 0, 5) + + for _, checkBox in pairs({ _G.GuildControlPopupFrameCheckboxes:GetChildren()}) do + if checkBox:IsObjectType('CheckButton') then + S:HandleCheckBox(checkBox) end - end) + end + + S:HandleButton(_G.GuildControlPopupAcceptButton) + S:HandleButton(_G.GuildControlPopupFrameCancelButton) -- Raid Frame S:HandleButton(_G.RaidFrameConvertToRaidButton) _G.RaidFrameConvertToRaidButton:Point('BOTTOMRIGHT', -6, 4) S:HandleButton(_G.RaidFrameRaidInfoButton) - S:HandleCheckBox(_G.RaidFrameAllAssistCheckButton) -- Raid Info Frame _G.RaidInfoFrame:StripTextures(true) _G.RaidInfoFrame:CreateBackdrop('Transparent') - - _G.RaidInfoFrame:HookScript('OnShow', function() - if GetNumSubgroupMembers() > 0 then - _G.RaidInfoFrame:Point('TOPLEFT', _G.RaidFrame, 'TOPRIGHT', 0, 0) - else - _G.RaidInfoFrame:Point('TOPLEFT', _G.RaidFrame, 'TOPRIGHT', 0, 0) - end - end) - - S:HandleCloseButton(_G.RaidInfoCloseButton, _G.RaidInfoFrame) + _G.RaidInfoFrame:HookScript('OnShow', RaidInfoFrame_OnShow) _G.RaidInfoScrollFrame:StripTextures() S:HandleScrollBar(_G.RaidInfoScrollFrameScrollBar) + S:HandleCloseButton(_G.RaidInfoCloseButton, _G.RaidInfoFrame) end S:AddCallback('FriendsFrame') diff --git a/ElvUI/Classic/Modules/Skins/LFG.lua b/ElvUI/Classic/Modules/Skins/LFG.lua new file mode 100644 index 0000000000..6bcbb85ec5 --- /dev/null +++ b/ElvUI/Classic/Modules/Skins/LFG.lua @@ -0,0 +1,158 @@ +local E, L, V, P, G = unpack(ElvUI) +local S = E:GetModule('Skins') +local TT = E:GetModule('Tooltip') + +local _G = _G +local pairs, next = pairs, next +local hooksecurefunc = hooksecurefunc + +local function LFGTabs() + _G.LFGParentFrameTab1:ClearAllPoints() + _G.LFGParentFrameTab1:Point('TOPLEFT', _G.LFGParentFrame, 'BOTTOMLEFT', 1, 72) + + _G.LFGParentFrameTab2:ClearAllPoints() + _G.LFGParentFrameTab2:Point('LEFT', _G.LFGParentFrameTab1, 'RIGHT', -19, 0) +end + +local function InitActivityButton(button, data) + local checkButton = button.CheckButton + if checkButton then + if not checkButton.IsSkinned then + S:HandleCheckBox(checkButton, nil, true) + end + + if data and data.activityID then + checkButton:SetChecked(_G.LFGListingFrame:IsActivitySelected(data.activityID)) + checkButton:SetCheckedTexture([[Interface\Buttons\UI-CheckBox-Check]]) + end + end +end + +local function InitActivityGroupButton(button, _, isCollapsed) + if button.ExpandOrCollapseButton then + if isCollapsed then + button.ExpandOrCollapseButton:SetNormalTexture(E.Media.Textures.PlusButton) + else + button.ExpandOrCollapseButton:SetNormalTexture(E.Media.Textures.MinusButton) + end + end + + local checkButton = button.CheckButton + if checkButton and not checkButton.IsSkinned then + S:HandleCheckBox(button.CheckButton, nil, true) + end +end + +function S:Blizzard_GroupFinder_VanillaStyle() + if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.lfg) then return end + + -- Main Frame and both Tabs + _G.LFGParentFramePortrait:Kill() + _G.LFGListingFrameActivityViewBarLeft:StripTextures() + _G.LFGListingFrameActivityViewBarMiddle:StripTextures() + _G.LFGListingFrameActivityViewBarRight:StripTextures() + + local LFGListingFrame = _G.LFGListingFrame + S:HandleFrame(LFGListingFrame, true, nil, 11, -12, -30, 72) + LFGListingFrame:HookScript('OnShow', LFGTabs) + + local LFGBrowseFrame = _G.LFGBrowseFrame + S:HandleTrimScrollBar(_G.LFGListingFrameActivityViewScrollBar) + S:HandleFrame(LFGBrowseFrame, true, nil, 11, -12, -30, 72) + LFGBrowseFrame:HookScript('OnShow', LFGTabs) + + -- Mouseover Tooltip + if E.private.skins.blizzard.tooltip then + TT:SetStyle(_G.LFGBrowseSearchEntryTooltip) + end + + -- Buttons + local buttons = { + _G.LFGListingFrameBackButton, + _G.LFGListingFramePostButton, + _G.LFGBrowseFrameSendMessageButton, + _G.LFGBrowseFrameGroupInviteButton + } + + for _, button in pairs(buttons) do + S:HandleButton(button) + end + + _G.LFGListingFrameBackButton:ClearAllPoints() + _G.LFGListingFrameBackButton:Point('TOPLEFT', _G.LFGParentFrameTab1, 'TOPLEFT', 14, 24) + _G.LFGBrowseFrameSendMessageButton:ClearAllPoints() + _G.LFGBrowseFrameSendMessageButton:Point('TOPLEFT', _G.LFGParentFrameTab1, 'TOPLEFT', 14, 24) + + _G.LFGListingFramePostButton:Point('BOTTOMRIGHT', LFGListingFrame, 'BOTTOMRIGHT', -40, 76) + _G.LFGBrowseFrameGroupInviteButton:Point('BOTTOMRIGHT', LFGBrowseFrame, 'BOTTOMRIGHT', -40, 76) + + _G.LFGBrowseFrameActivityDropDown.ResetButton:ClearAllPoints() + _G.LFGBrowseFrameActivityDropDown.ResetButton:Point('TOPRIGHT', _G.LFGBrowseFrameActivityDropDown, 'TOPRIGHT', 0, 12) + + -- CheckBoxes + local checkBoxes = { + _G.LFGListingFrameSoloRoleButtonsRoleButtonTank.CheckButton, + _G.LFGListingFrameSoloRoleButtonsRoleButtonHealer.CheckButton, + _G.LFGListingFrameSoloRoleButtonsRoleButtonDPS.CheckButton, + _G.LFGListingFrameNewPlayerFriendlyButton.CheckButton, + } + + for _, checkbox in pairs(checkBoxes) do + S:HandleCheckBox(checkbox, nil, nil, true) + end + + S:HandleButton(_G.LFGListingFrameGroupRoleButtonsInitiateRolePoll) + S:HandleEditBox(_G.LFGListingComment) + + -- DropDowns + S:HandleDropDownBox(_G.LFGListingFrameGroupRoleButtonsRoleDropDown, 180) + S:HandleDropDownBox(_G.LFGBrowseFrameActivityDropDown, 180) + S:HandleDropDownBox(_G.LFGBrowseFrameCategoryDropDown, 140) + + _G.LFGBrowseFrameCategoryDropDown:ClearAllPoints() + _G.LFGBrowseFrameCategoryDropDown:Point('TOPLEFT', _G.LFGParentFrame, 'TOPLEFT', 22, -90) + _G.LFGBrowseFrameActivityDropDown:ClearAllPoints() + _G.LFGBrowseFrameActivityDropDown:Point('LEFT', _G.LFGBrowseFrameCategoryDropDown, 'RIGHT', 4, 0) + + -- Refresh + S:HandleButton(_G.LFGBrowseFrameRefreshButton) + _G.LFGBrowseFrameRefreshButton:Size(22, 22) + _G.LFGBrowseFrameRefreshButton:ClearAllPoints() + _G.LFGBrowseFrameRefreshButton:Point('BOTTOM', _G.LFGBrowseFrame.backdrop.Center, 'BOTTOM', 0, 4) + + -- Role check popup + S:HandleFrame(_G.RolePollPopup) + S:HandleButton(_G.RolePollPopupAcceptButton) + S:HandleCloseButton(_G.RolePollPopupCloseButton) + + S:HandleCheckBox(_G.RolePollPopupRoleButtonTank.checkButton) + S:HandleCheckBox(_G.RolePollPopupRoleButtonHealer.checkButton) + S:HandleCheckBox(_G.RolePollPopupRoleButtonDPS.checkButton) + + do + local i = 1 + local tab = _G['LFGParentFrameTab'..i] + while tab do + S:HandleTab(tab) + tab.IsSkinned = true + + i = i + 1 + tab = _G['LFGParentFrameTab'..i] + end + end + + for _, child in next, { _G.LFGParentFrame:GetChildren() } do + if child:IsObjectType('Button') and not child.IsSkinned then + S:HandleCloseButton(child) + + child:ClearAllPoints() + child:Point('TOPRIGHT', -26, -6) + child.IsSkinned = true + end + end + + hooksecurefunc('LFGListingActivityView_InitActivityButton', InitActivityButton) + hooksecurefunc('LFGListingActivityView_InitActivityGroupButton', InitActivityGroupButton) +end + +S:AddCallbackForAddon('Blizzard_GroupFinder_VanillaStyle') diff --git a/ElvUI/Classic/Modules/Skins/Load_Skins.xml b/ElvUI/Classic/Modules/Skins/Load_Skins.xml index ed2eeee8bb..c0711b4391 100644 --- a/ElvUI/Classic/Modules/Skins/Load_Skins.xml +++ b/ElvUI/Classic/Modules/Skins/Load_Skins.xml @@ -22,6 +22,7 @@