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.
306 lines
11 KiB
306 lines
11 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local next = next
|
|
local ipairs, select = ipairs, select
|
|
|
|
local C_CreatureInfo_GetClassInfo = C_CreatureInfo.GetClassInfo
|
|
local BATTLENET_FONT_COLOR = BATTLENET_FONT_COLOR
|
|
local FRIENDS_BNET_BACKGROUND_COLOR = FRIENDS_BNET_BACKGROUND_COLOR
|
|
local FRIENDS_WOW_BACKGROUND_COLOR = FRIENDS_WOW_BACKGROUND_COLOR
|
|
local GREEN_FONT_COLOR = GREEN_FONT_COLOR
|
|
local CreateFrame = CreateFrame
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
local ClubTypeGuild = Enum.ClubType.Guild
|
|
local ClubTypeBattleNet = Enum.ClubType.BattleNet
|
|
|
|
local function UpdateNames(button)
|
|
if not button.expanded then return end
|
|
|
|
local memberInfo = button:GetMemberInfo()
|
|
if memberInfo and memberInfo.classID then
|
|
local classInfo = C_CreatureInfo_GetClassInfo(memberInfo.classID)
|
|
if classInfo then
|
|
local tcoords = _G.CLASS_ICON_TCOORDS[classInfo.classFile]
|
|
button.Class:SetTexCoord(tcoords[1] + .022, tcoords[2] - .025, tcoords[3] + .022, tcoords[4] - .025)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function HandleCommunitiesButtons(button, color)
|
|
button.Background:Hide()
|
|
button.CircleMask:Hide()
|
|
button:SetFrameLevel(button:GetFrameLevel() + 5)
|
|
|
|
S:HandleIcon(button.Icon)
|
|
button.Icon:ClearAllPoints()
|
|
button.Icon:Point('TOPLEFT', 15, -18)
|
|
button.IconRing:Hide()
|
|
|
|
if not button.bg then
|
|
button.bg = CreateFrame('Frame', nil, button)
|
|
button.bg:SetTemplate('Transparent')
|
|
button.bg:Point('TOPLEFT', 7, -16)
|
|
button.bg:Point('BOTTOMRIGHT', -10, 12)
|
|
button.bg:SetFrameLevel(button:GetFrameLevel())
|
|
end
|
|
|
|
if button.IconBorder then
|
|
button.IconBorder:Hide()
|
|
end
|
|
|
|
if color then
|
|
button.Selection:ClearAllPoints()
|
|
button.Selection:SetAllPoints(button.bg)
|
|
|
|
if color == 1 then
|
|
button.Selection:SetAtlas(nil)
|
|
button.Selection:SetColorTexture(GREEN_FONT_COLOR.r, GREEN_FONT_COLOR.g, GREEN_FONT_COLOR.b, 0.2)
|
|
else
|
|
button.Selection:SetAtlas(nil)
|
|
button.Selection:SetColorTexture(BATTLENET_FONT_COLOR.r, BATTLENET_FONT_COLOR.g, BATTLENET_FONT_COLOR.b, 0.2)
|
|
end
|
|
end
|
|
|
|
local highlight = button:GetHighlightTexture()
|
|
highlight:SetColorTexture(1, 1, 1, 0.3)
|
|
highlight:SetInside(button.bg)
|
|
end
|
|
|
|
function S:Blizzard_Communities()
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.communities) then return end
|
|
|
|
local CommunitiesFrame = _G.CommunitiesFrame
|
|
CommunitiesFrame:StripTextures()
|
|
_G.CommunitiesFrameInset.Bg:Hide()
|
|
CommunitiesFrame.CommunitiesList.InsetFrame:StripTextures()
|
|
|
|
S:HandlePortraitFrame(CommunitiesFrame)
|
|
|
|
local CommunitiesFrameCommunitiesList = _G.CommunitiesFrameCommunitiesList
|
|
CommunitiesFrameCommunitiesList.FilligreeOverlay:Hide()
|
|
CommunitiesFrameCommunitiesList.Bg:Hide()
|
|
CommunitiesFrameCommunitiesList.TopFiligree:Hide()
|
|
CommunitiesFrameCommunitiesList.BottomFiligree:Hide()
|
|
_G.CommunitiesFrameCommunitiesListListScrollFrame:StripTextures()
|
|
|
|
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetClubInfo', function(s, clubInfo, isInvitation, isTicket)
|
|
if clubInfo then
|
|
s.Background:Hide()
|
|
s.CircleMask:Hide()
|
|
|
|
s.Icon:ClearAllPoints()
|
|
s.Icon:Point('TOPLEFT', 8, -17)
|
|
S:HandleIcon(s.Icon)
|
|
s.IconRing:Hide()
|
|
|
|
if not s.IconBorder then
|
|
s.IconBorder = s:CreateTexture(nil, 'BORDER')
|
|
s.IconBorder:SetOutside(s.Icon)
|
|
s.IconBorder:Hide()
|
|
end
|
|
|
|
if not s.bg then
|
|
s.bg = CreateFrame('Frame', nil, s)
|
|
s.bg:SetTemplate('Transparent')
|
|
s.bg:Point('TOPLEFT', 7, -16)
|
|
s.bg:Point('BOTTOMRIGHT', -10, 12)
|
|
s.bg:SetFrameLevel(s:GetFrameLevel())
|
|
end
|
|
|
|
local isGuild = clubInfo.clubType == ClubTypeGuild
|
|
if isGuild then
|
|
s.Background:SetAtlas(nil)
|
|
s.Selection:SetAtlas(nil)
|
|
s.Selection:SetAllPoints(s.bg)
|
|
s.Selection:SetColorTexture(0, 1, 0, 0.2)
|
|
else
|
|
s.Background:SetAtlas(nil)
|
|
s.Selection:SetAtlas(nil)
|
|
s.Selection:SetAllPoints(s.bg)
|
|
s.Selection:SetColorTexture(FRIENDS_BNET_BACKGROUND_COLOR.r, FRIENDS_BNET_BACKGROUND_COLOR.g, FRIENDS_BNET_BACKGROUND_COLOR.b, 0.2)
|
|
end
|
|
|
|
if not isInvitation and not isGuild and not isTicket then
|
|
if clubInfo.clubType == ClubTypeBattleNet then
|
|
s.IconBorder:SetColorTexture(FRIENDS_BNET_BACKGROUND_COLOR.r, FRIENDS_BNET_BACKGROUND_COLOR.g, FRIENDS_BNET_BACKGROUND_COLOR.b)
|
|
else
|
|
s.IconBorder:SetColorTexture(FRIENDS_WOW_BACKGROUND_COLOR.r, FRIENDS_WOW_BACKGROUND_COLOR.g, FRIENDS_WOW_BACKGROUND_COLOR.b)
|
|
end
|
|
s.IconBorder:Show()
|
|
else
|
|
s.IconBorder:Hide()
|
|
end
|
|
|
|
local highlight = s:GetHighlightTexture()
|
|
highlight:SetColorTexture(1, 1, 1, 0.3)
|
|
highlight:SetAllPoints(s.bg)
|
|
end
|
|
end)
|
|
|
|
-- Add Community Button
|
|
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetAddCommunity', function(s) HandleCommunitiesButtons(s, 1) end)
|
|
|
|
S:HandleItemButton(CommunitiesFrame.ChatTab)
|
|
CommunitiesFrame.ChatTab:Point('TOPLEFT', '$parent', 'TOPRIGHT', E.PixelMode and 0 or E.Border + E.Spacing, -36)
|
|
S:HandleItemButton(CommunitiesFrame.RosterTab)
|
|
|
|
S:HandleInsetFrame(CommunitiesFrame.CommunitiesList)
|
|
S:HandleMaxMinFrame(CommunitiesFrame.MaximizeMinimizeFrame)
|
|
CommunitiesFrame.MaximizeMinimizeFrame:ClearAllPoints()
|
|
CommunitiesFrame.MaximizeMinimizeFrame:Point('RIGHT', CommunitiesFrame.CloseButton, 'LEFT', 12, 0)
|
|
|
|
S:HandleButton(CommunitiesFrame.InviteButton)
|
|
S:HandleNextPrevButton(CommunitiesFrame.AddToChatButton)
|
|
CommunitiesFrame.AddToChatButton:Point('TOPRIGHT', CommunitiesFrame.ChatEditBox, 'BOTTOMRIGHT', 6, -12)
|
|
|
|
S:HandleScrollBar(CommunitiesFrame.MemberList.ListScrollFrame.scrollBar)
|
|
S:HandleScrollBar(CommunitiesFrame.Chat.MessageFrame.ScrollBar)
|
|
S:HandleScrollBar(_G.CommunitiesFrameCommunitiesListListScrollFrame.ScrollBar)
|
|
|
|
S:HandleDropDownBox(CommunitiesFrame.StreamDropDownMenu)
|
|
S:HandleDropDownBox(CommunitiesFrame.CommunitiesListDropDownMenu)
|
|
|
|
hooksecurefunc(_G.CommunitiesNotificationSettingsStreamEntryMixin, 'SetFilter', function(s)
|
|
s.ShowNotificationsButton:Size(20, 20)
|
|
s.HideNotificationsButton:Size(20, 20)
|
|
S:HandleCheckBox(s.ShowNotificationsButton)
|
|
S:HandleCheckBox(s.HideNotificationsButton)
|
|
end)
|
|
|
|
-- Chat Tab
|
|
CommunitiesFrame.MemberList:StripTextures()
|
|
CommunitiesFrame.MemberList.InsetFrame:Hide()
|
|
|
|
CommunitiesFrame.Chat:StripTextures()
|
|
CommunitiesFrame.Chat.InsetFrame:CreateBackdrop('Transparent')
|
|
|
|
S:HandleEditBox(CommunitiesFrame.ChatEditBox)
|
|
CommunitiesFrame.ChatEditBox:Size(120, 20)
|
|
|
|
-- Roster Tab
|
|
local MemberList = CommunitiesFrame.MemberList
|
|
local ColumnDisplay = MemberList.ColumnDisplay
|
|
ColumnDisplay:StripTextures()
|
|
ColumnDisplay.InsetBorderLeft:Hide()
|
|
ColumnDisplay.InsetBorderBottomLeft:Hide()
|
|
ColumnDisplay.InsetBorderTopLeft:Hide()
|
|
ColumnDisplay.InsetBorderTop:Hide()
|
|
|
|
S:HandleInsetFrame(CommunitiesFrame.MemberList.InsetFrame)
|
|
S:HandleButton(CommunitiesFrame.CommunitiesControlFrame.CommunitiesSettingsButton)
|
|
CommunitiesFrame.CommunitiesControlFrame.CommunitiesSettingsButton:Size(129, 19)
|
|
S:HandleCheckBox(CommunitiesFrame.MemberList.ShowOfflineButton)
|
|
CommunitiesFrame.MemberList.ShowOfflineButton:Size(25, 25)
|
|
|
|
hooksecurefunc(CommunitiesFrame.MemberList, 'RefreshListDisplay', function(s)
|
|
for _, child in next, { s.ColumnDisplay:GetChildren() } do
|
|
child:StripTextures()
|
|
child:CreateBackdrop('Transparent')
|
|
end
|
|
|
|
for _, button in ipairs(s.ListScrollFrame.buttons or {}) do
|
|
if button and not button.hooked then
|
|
hooksecurefunc(button, 'RefreshExpandedColumns', UpdateNames)
|
|
if button.ProfessionHeader then
|
|
local header = button.ProfessionHeader
|
|
for i = 1, 3 do
|
|
select(i, header:GetRegions()):Hide()
|
|
end
|
|
|
|
header:CreateBackdrop('Transparent')
|
|
end
|
|
|
|
button.hooked = true
|
|
end
|
|
if button and button.bg then
|
|
button.bg:SetShown(button.Class:IsShown())
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Notification Settings Dialog
|
|
local NotificationSettings = _G.CommunitiesFrame.NotificationSettingsDialog
|
|
NotificationSettings:StripTextures()
|
|
NotificationSettings:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, true)
|
|
|
|
S:HandleDropDownBox(CommunitiesFrame.NotificationSettingsDialog.CommunitiesListDropDownMenu)
|
|
S:HandleCheckBox(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.QuickJoinButton)
|
|
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.AllButton)
|
|
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.NoneButton)
|
|
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.OkayButton)
|
|
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.CancelButton)
|
|
S:HandleScrollBar(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.ScrollBar) -- Adjust me
|
|
|
|
-- Create Channel Dialog
|
|
local EditStreamDialog = CommunitiesFrame.EditStreamDialog
|
|
EditStreamDialog:StripTextures()
|
|
EditStreamDialog:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, true)
|
|
|
|
S:HandleEditBox(EditStreamDialog.NameEdit)
|
|
EditStreamDialog.NameEdit:Size(280, 20)
|
|
S:HandleEditBox(EditStreamDialog.Description)
|
|
S:HandleCheckBox(EditStreamDialog.TypeCheckBox)
|
|
|
|
S:HandleButton(EditStreamDialog.Accept)
|
|
S:HandleButton(EditStreamDialog.Cancel)
|
|
|
|
-- Communities Settings
|
|
local Settings = _G.CommunitiesSettingsDialog
|
|
Settings:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, true)
|
|
S:HandleIcon(Settings.IconPreview)
|
|
Settings.IconPreviewRing:Hide()
|
|
|
|
S:HandleEditBox(Settings.NameEdit)
|
|
S:HandleEditBox(Settings.ShortNameEdit)
|
|
S:HandleEditBox(Settings.Description)
|
|
S:HandleEditBox(Settings.MessageOfTheDay)
|
|
|
|
S:HandleButton(Settings.ChangeAvatarButton)
|
|
S:HandleButton(Settings.Accept)
|
|
S:HandleButton(Settings.Delete)
|
|
S:HandleButton(Settings.Cancel)
|
|
|
|
-- Avatar Picker
|
|
local Avatar = _G.CommunitiesAvatarPickerDialog
|
|
Avatar:StripTextures()
|
|
Avatar:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, true)
|
|
|
|
Avatar.ScrollFrame:StripTextures()
|
|
S:HandleScrollBar(_G.CommunitiesAvatarPickerDialogScrollBar)
|
|
|
|
S:HandleButton(Avatar.OkayButton)
|
|
S:HandleButton(Avatar.CancelButton)
|
|
|
|
-- Invite Frame
|
|
local TicketManager = _G.CommunitiesTicketManagerDialog
|
|
TicketManager:StripTextures()
|
|
TicketManager.InviteManager.ArtOverlay:Hide()
|
|
TicketManager.InviteManager.ColumnDisplay:StripTextures()
|
|
TicketManager.InviteManager.ColumnDisplay.InsetBorderLeft:Hide()
|
|
TicketManager.InviteManager.ColumnDisplay.InsetBorderBottomLeft:Hide()
|
|
|
|
TicketManager.InviteManager.ListScrollFrame:StripTextures()
|
|
|
|
TicketManager:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, true)
|
|
|
|
S:HandleButton(TicketManager.LinkToChat)
|
|
S:HandleButton(TicketManager.Copy)
|
|
S:HandleButton(TicketManager.Close)
|
|
S:HandleButton(TicketManager.GenerateLinkButton)
|
|
|
|
S:HandleDropDownBox(TicketManager.ExpiresDropDownMenu)
|
|
S:HandleDropDownBox(TicketManager.UsesDropDownMenu)
|
|
|
|
S:HandleScrollBar(TicketManager.InviteManager.ListScrollFrame.scrollBar)
|
|
S:HandleButton(TicketManager.MaximizeButton)
|
|
|
|
-- Bottom Tabs
|
|
for i = 1, 5 do
|
|
S:HandleTab(_G['CommunitiesFrameTab'..i])
|
|
end
|
|
end
|
|
|
|
S:AddCallbackForAddon('Blizzard_Communities')
|
|
|