Files
coa-elvui/ElvUI/Modules/Skins/Blizzard/Calendar.lua
T
Andrew6810 60ef8a38af init
2022-10-21 07:09:01 -07:00

395 lines
15 KiB
Lua

local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins")
--Lua functions
local _G = _G
local unpack = unpack
local fmod = math.fmod
--WoW API / Variables
local hooksecurefunc = hooksecurefunc
local CLASS_SORT_ORDER = CLASS_SORT_ORDER
S:AddCallbackForAddon("Blizzard_Calendar", "Skin_Blizzard_Calendar", function()
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.calendar then return end
CalendarFrame:StripTextures()
CalendarFrame:CreateBackdrop("Transparent")
CalendarFrame.backdrop:Point("TOPLEFT", 3, -7)
CalendarFrame.backdrop:Point("BOTTOMRIGHT", -2, -4)
S:SecureHook("Calendar_Show", function()
S:SetUIPanelWindowInfo(CalendarFrame, "xoffset", 8, nil, true)
S:SetUIPanelWindowInfo(CalendarFrame, "yoffset", -5, nil, true)
S:SetUIPanelWindowInfo(CalendarFrame, "width", nil, -8)
S:SetBackdropHitRect(CalendarFrame)
S:Unhook("Calendar_Show")
end)
CalendarFrameModalOverlay:SetFrameStrata("DIALOG")
CalendarModalDummy:SetAllPoints(CalendarFrameModalOverlay)
CalendarFrameBlocker:SetAllPoints(CalendarFrameModalOverlay)
CalendarFrame:EnableMouseWheel(true)
CalendarFrame:SetScript("OnMouseWheel", function(_, value)
if value > 0 then
if CalendarPrevMonthButton:IsEnabled() == 1 then
CalendarPrevMonthButton_OnClick()
end
else
if CalendarNextMonthButton:IsEnabled() == 1 then
CalendarNextMonthButton_OnClick()
end
end
end)
S:HandleCloseButton(CalendarCloseButton, CalendarFrame.backdrop)
S:HandleNextPrevButton(CalendarPrevMonthButton)
S:HandleNextPrevButton(CalendarNextMonthButton)
CalendarPrevMonthButton:Point("RIGHT", CalendarMonthBackground, "LEFT", 0, -8)
CalendarNextMonthButton:Point("LEFT", CalendarMonthBackground, "RIGHT", 0, -8)
do
local frame = CalendarFilterFrame
local button = CalendarFilterButton
local text = CalendarFilterFrameText
frame:StripTextures()
frame:Width(155)
frame:Point("TOPRIGHT", -32, -24)
text:Point("RIGHT", -34, 3)
button:Point("RIGHT", frame, "RIGHT", -10, 3)
button.SetPoint = E.noop
S:HandleNextPrevButton(button)
frame:CreateBackdrop("Default")
frame.backdrop:Point("TOPLEFT", 20, 4)
frame.backdrop:Point("BOTTOMRIGHT", button, "BOTTOMRIGHT", 2, -2)
end
local bg = CreateFrame("Frame", "CalendarFrameBackdrop", CalendarFrame)
bg:SetTemplate("Default")
bg:SetOutside(CalendarDayButton1, 3, 3, CalendarDayButton42)
CalendarContextMenu:SetTemplate("Transparent")
CalendarContextMenu.SetBackdropColor = E.noop
CalendarContextMenu.SetBackdropBorderColor = E.noop
CalendarInviteStatusContextMenu:SetTemplate("Transparent")
CalendarInviteStatusContextMenu.SetBackdropColor = E.noop
CalendarInviteStatusContextMenu.SetBackdropBorderColor = E.noop
for i = 1, 7 do
_G["CalendarContextMenuButton"..i]:StyleButton()
end
for i = 1, 42 do
local button = _G["CalendarDayButton"..i]
local eventTexture = _G["CalendarDayButton"..i.."EventTexture"]
local overlayFrame = _G["CalendarDayButton"..i.."OverlayFrame"]
button:SetFrameLevel(button:GetFrameLevel() + 1)
button:Size(91 - E.Border)
button:SetTemplate("Default", nil, true)
button:SetBackdropColor(0, 0, 0, 0)
button:GetNormalTexture():SetInside()
button:GetNormalTexture():SetDrawLayer("BACKGROUND")
button:GetHighlightTexture():SetInside()
button:GetHighlightTexture():SetTexture(1, 1, 1, 0.3)
eventTexture:SetInside()
overlayFrame:SetInside()
hooksecurefunc(eventTexture, "SetTexCoord", function(self, left, right, top, bottom)
if left == 0 and right == 1 and top == 0 and bottom == 1 then
if self._blocked then return end
self._blocked = true
self:SetTexCoord(unpack(E.TexCoords))
self._blocked = nil
end
end)
for j = 1, 4 do
local EventButton = _G["CalendarDayButton"..i.."EventButton"..j]
EventButton:StripTextures()
EventButton:StyleButton()
end
button:ClearAllPoints()
if i == 1 then
button:SetPoint("TOPLEFT", CalendarWeekday1Background, "BOTTOMLEFT", 0, 0)
elseif fmod(i, 7) == 1 then
button:SetPoint("TOPLEFT", _G["CalendarDayButton"..(i - 7)], "BOTTOMLEFT", 0, -E.Border)
else
button:SetPoint("TOPLEFT", _G["CalendarDayButton"..(i - 1)], "TOPRIGHT", E.Border, 0)
end
end
CalendarTodayFrame:StripTextures()
CalendarTodayFrame:SetTemplate("Default")
CalendarTodayFrame:Size(CalendarDayButton1:GetWidth(), CalendarDayButton1:GetHeight())
CalendarTodayFrame:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
local value = E.db.general.valuecolor
CalendarTodayFrame:SetBackdropColor(value.r, value.g, value.b, 0.5)
CalendarTodayFrame:HookScript("OnUpdate", function(self) self:SetAlpha(CalendarTodayTextureGlow:GetAlpha()) end)
CalendarTodayFrame:CreateShadow()
CalendarTodayFrame.shadow:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
CalendarCreateEventFrame:StripTextures()
CalendarCreateEventFrame:SetTemplate("Transparent")
CalendarCreateEventFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
CalendarCreateEventTitleFrame:StripTextures()
CalendarCreateEventFrameModalOverlay:SetAllPoints(CalendarCreateEventFrame)
CalendarCreateEventFrameModalOverlay:SetFrameStrata("DIALOG")
CalendarEventFrameBlocker:SetAllPoints(CalendarCreateEventFrameModalOverlay)
S:HandleButton(CalendarCreateEventCreateButton, true)
S:HandleButton(CalendarCreateEventMassInviteButton, true)
S:HandleButton(CalendarCreateEventInviteButton, true)
CalendarCreateEventInviteButton:Point("TOPLEFT", CalendarCreateEventInviteEdit, "TOPRIGHT", 4, 1)
CalendarCreateEventInviteEdit:Width(CalendarCreateEventInviteEdit:GetWidth() - 2)
CalendarCreateEventInviteList:StripTextures()
CalendarCreateEventInviteList:SetTemplate("Default")
S:HandleEditBox(CalendarCreateEventInviteEdit)
S:HandleEditBox(CalendarCreateEventTitleEdit)
S:HandleDropDownBox(CalendarCreateEventTypeDropDown, 157)
CalendarCreateEventDescriptionContainer:StripTextures()
CalendarCreateEventDescriptionContainer:SetTemplate("Default")
S:HandleCloseButton(CalendarCreateEventCloseButton, CalendarCreateEventFrame)
S:HandleCheckBox(CalendarCreateEventLockEventCheck)
S:HandleDropDownBox(CalendarCreateEventHourDropDown, 68)
S:HandleDropDownBox(CalendarCreateEventMinuteDropDown, 68)
S:HandleDropDownBox(CalendarCreateEventAMPMDropDown, 68)
S:HandleDropDownBox(CalendarCreateEventRepeatOptionDropDown, 157)
CalendarCreateEventIcon:CreateBackdrop()
CalendarCreateEventIcon:Point("TOPLEFT", 14, -26)
CalendarCreateEventIcon:SetTexCoord(unpack(E.TexCoords))
CalendarCreateEventIcon.SetTexCoord = E.noop
CalendarCreateEventTitleEdit:Size(160, 18)
CalendarCreateEventTitleEdit:Point("TOPLEFT", 14, -85)
CalendarCreateEventTypeDropDown:Point("TOPLEFT", 158, -81)
CalendarCreateEventHourDropDown:Point("TOPLEFT", -7, -108)
CalendarCreateEventMinuteDropDown:Point("LEFT", CalendarCreateEventHourDropDown, "RIGHT", -23, 0)
CalendarCreateEventAMPMDropDown:Point("LEFT", CalendarCreateEventMinuteDropDown, "RIGHT", -23, 0)
CalendarCreateEventRepeatOptionDropDown:Point("TOPLEFT", 158, -108)
CalendarCreateEventDescriptionContainer:Size(294, 68)
CalendarCreateEventDescriptionContainer:Point("TOPLEFT", 13, -138)
CalendarCreateEventLockEventCheck:Point("TOPRIGHT", -122, 1)
CalendarCreateEventInviteList:Point("TOP", 0, -43)
CalendarCreateEventInviteEdit:Point("TOPLEFT", CalendarCreateEventInviteList, "BOTTOMLEFT", 1, -8)
CalendarCreateEventMassInviteButton:Point("BOTTOMLEFT", 13, 13)
CalendarCreateEventCreateButton:Point("BOTTOMRIGHT", -13, 13)
CalendarCreateEventInviteListSection:StripTextures()
CalendarClassButtonContainer:HookScript("OnShow", function()
for i, class in ipairs(CLASS_SORT_ORDER) do
local button = _G["CalendarClassButton"..i]
button:StripTextures()
button:CreateBackdrop("Default")
button:Size(23)
local coords = CLASS_ICON_TCOORDS[class]
local buttonIcon = button:GetNormalTexture()
buttonIcon:SetTexture("Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes")
buttonIcon:SetTexCoord(coords[1] + 0.02, coords[2] - 0.02, coords[3] + 0.02, coords[4] - 0.02)
end
CalendarClassButton1:Point("TOPLEFT", 2, 0)
CalendarClassTotalsButton:StripTextures()
CalendarClassTotalsButton:CreateBackdrop("Default")
CalendarClassTotalsButton:Size(23)
end)
-- Texture Picker Frame
CalendarTexturePickerFrame:StripTextures()
CalendarTexturePickerTitleFrame:StripTextures()
CalendarTexturePickerFrame:SetTemplate("Transparent")
CalendarTexturePickerFrame:Width(280)
CalendarTexturePickerFrame:ClearAllPoints()
CalendarTexturePickerFrame:Point("TOPLEFT", CalendarEventFrameBlocker, "TOPRIGHT", 31, 0)
S:HandleScrollBar(CalendarTexturePickerScrollBar)
S:HandleButton(CalendarTexturePickerAcceptButton, true)
S:HandleButton(CalendarTexturePickerCancelButton, true)
S:HandleButton(CalendarCreateEventInviteButton, true)
S:HandleButton(CalendarCreateEventRaidInviteButton, true)
for i = 1, 16 do
_G["CalendarTexturePickerScrollFrameButton"..i]:StyleButton()
end
CalendarTexturePickerScrollFrame:CreateBackdrop("Transparent")
CalendarTexturePickerScrollFrame.backdrop:Point("TOPLEFT", -2, 2)
CalendarTexturePickerScrollFrame.backdrop:Point("BOTTOMRIGHT", 2, -4)
CalendarTexturePickerScrollFrame:Point("TOPLEFT", 10, -20)
CalendarTexturePickerScrollBar:Point("TOPLEFT", CalendarTexturePickerScrollFrame, "TOPRIGHT", 5, -17)
CalendarTexturePickerScrollBar:Point("BOTTOMLEFT", CalendarTexturePickerScrollFrame, "BOTTOMRIGHT", 5, 15)
CalendarTexturePickerCancelButton:Point("BOTTOMRIGHT", -8, 8)
-- Mass Invite Frame
CalendarMassInviteFrame:StripTextures()
CalendarMassInviteFrame:SetTemplate("Transparent")
S:HandleCloseButton(CalendarMassInviteCloseButton, CalendarMassInviteFrame)
CalendarMassInviteTitleFrame:StripTextures()
S:HandleDropDownBox(CalendarMassInviteGuildRankMenu, 140)
S:HandleEditBox(CalendarMassInviteGuildMinLevelEdit)
S:HandleEditBox(CalendarMassInviteGuildMaxLevelEdit)
S:HandleButton(CalendarMassInviteGuildAcceptButton)
S:HandleButton(CalendarMassInviteArenaButton2)
S:HandleButton(CalendarMassInviteArenaButton3)
S:HandleButton(CalendarMassInviteArenaButton5)
CalendarMassInviteFrame:Size(307, 179)
CalendarMassInviteFrame:ClearAllPoints()
CalendarMassInviteFrame:Point("TOPLEFT", CalendarCreateEventFrame, "TOPRIGHT", 31, 0)
CalendarMassInviteGuildLevelText:Point("TOPLEFT", 40, -53)
CalendarMassInviteFrameLevelDivider:Point("TOPLEFT", 51, -74)
CalendarMassInviteGuildMinLevelEdit:Height(18)
CalendarMassInviteGuildMinLevelEdit:Point("TOPLEFT", 20, -72)
CalendarMassInviteGuildMaxLevelEdit:Height(18)
CalendarMassInviteGuildMaxLevelEdit:Point("TOPLEFT", 65, -72)
CalendarMassInviteGuildRankText:Point("TOPLEFT", 188, -53)
CalendarMassInviteGuildRankMenu:Point("TOPLEFT", 167, -68)
CalendarMassInviteGuildAcceptButton:Point("TOPRIGHT", -8, -100)
CalendarMassInviteArenaButton2:Point("TOPLEFT", 8, -149)
CalendarMassInviteArenaButton3:Point("TOP", 0, -149)
CalendarMassInviteArenaButton5:Point("TOPRIGHT", -8, -149)
select(6, CalendarMassInviteFrame:GetRegions()):Point("TOP", 0, -130)
-- Raid View
CalendarViewRaidFrame:StripTextures()
CalendarViewRaidFrame:SetTemplate("Transparent")
CalendarViewRaidFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
S:HandleCloseButton(CalendarViewRaidCloseButton, CalendarViewRaidFrame)
CalendarViewRaidTitleFrame:StripTextures()
-- Holiday View
CalendarViewHolidayFrame:StripTextures(true)
CalendarViewHolidayFrame:SetTemplate("Transparent")
CalendarViewHolidayFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
CalendarViewHolidayTitleFrame:StripTextures()
S:HandleCloseButton(CalendarViewHolidayCloseButton, CalendarViewHolidayFrame)
-- Event View
CalendarViewEventFrame:StripTextures()
CalendarViewEventFrame:SetTemplate("Transparent")
CalendarViewEventFrame:Point("TOPLEFT", CalendarFrame, "TOPRIGHT", -3, -7)
S:HandleCloseButton(CalendarViewEventCloseButton, CalendarViewEventFrame)
CalendarViewEventTitleFrame:StripTextures()
CalendarViewEventDescriptionContainer:StripTextures()
CalendarViewEventDescriptionContainer:SetTemplate("Transparent")
CalendarViewEventInviteList:StripTextures()
CalendarViewEventInviteList:SetTemplate("Transparent")
CalendarViewEventInviteListSection:StripTextures()
S:HandleScrollBar(CalendarViewEventDescriptionScrollFrameScrollBar)
S:HandleScrollBar(CalendarViewEventInviteListScrollFrameScrollBar)
CalendarViewEventFrameModalOverlay:SetAllPoints(CalendarViewEventFrame)
CalendarViewEventFrameModalOverlay:SetFrameStrata("DIALOG")
S:HandleButton(CalendarViewEventAcceptButton)
S:HandleButton(CalendarViewEventTentativeButton)
S:HandleButton(CalendarViewEventRemoveButton)
S:HandleButton(CalendarViewEventDeclineButton)
CalendarViewEventIcon:CreateBackdrop()
CalendarViewEventIcon:SetTexCoord(unpack(E.TexCoords))
CalendarViewEventIcon.SetTexCoord = E.noop
CalendarViewEventDescriptionContainer:Size(294, 68)
CalendarViewEventDescriptionContainer:Point("TOPLEFT", 13, -94)
CalendarViewEventDescriptionScrollFrameScrollBar:Point("TOPLEFT", CalendarViewEventDescriptionScrollFrame, "TOPRIGHT", 4, -15)
CalendarViewEventDescriptionScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarViewEventDescriptionScrollFrame, "BOTTOMRIGHT", 4, 15)
CalendarViewEventInviteListScrollFrameScrollBar:Point("TOPLEFT", CalendarViewEventInviteListScrollFrame, "TOPRIGHT", 7, -16)
CalendarViewEventInviteListScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarViewEventInviteListScrollFrame, "BOTTOMRIGHT", 7, 16)
CalendarViewEventIcon:Point("TOPLEFT", 14, -26)
CalendarViewEventInviteListSection:Point("TOPLEFT", 0, -177)
-- Event Picker Frame
CalendarEventPickerFrame:StripTextures()
CalendarEventPickerTitleFrame:StripTextures()
CalendarEventPickerFrame:SetTemplate("Transparent")
CalendarEventPickerFrame:SetFrameLevel(CalendarFrameModalOverlay:GetFrameLevel() + 10)
S:HandleScrollBar(CalendarEventPickerScrollBar)
S:HandleButton(CalendarEventPickerCloseButton, true)
CalendarEventPickerScrollFrame:Width(253)
CalendarEventPickerScrollFrame:Point("TOPLEFT", 8, -22)
CalendarEventPickerScrollBar:Point("TOPLEFT", CalendarEventPickerScrollFrame, "TOPRIGHT", 3, -19)
CalendarEventPickerScrollBar:Point("BOTTOMLEFT", CalendarEventPickerScrollFrame, "BOTTOMRIGHT", 3, 17)
CalendarEventPickerCloseButton:Point("BOTTOMRIGHT", -8, 8)
-- Create Event
S:HandleScrollBar(CalendarCreateEventDescriptionScrollFrameScrollBar)
S:HandleScrollBar(CalendarCreateEventInviteListScrollFrameScrollBar)
CalendarCreateEventDescriptionScrollFrameScrollBar:Point("TOPLEFT", CalendarCreateEventDescriptionScrollFrame, "TOPRIGHT", 4, -15)
CalendarCreateEventDescriptionScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarCreateEventDescriptionScrollFrame, "BOTTOMRIGHT", 4, 15)
CalendarCreateEventInviteListScrollFrameScrollBar:Point("TOPLEFT", CalendarCreateEventInviteListScrollFrame, "TOPRIGHT", 7, -16)
CalendarCreateEventInviteListScrollFrameScrollBar:Point("BOTTOMLEFT", CalendarCreateEventInviteListScrollFrame, "BOTTOMRIGHT", 7, 16)
if CalendarCreateEventInviteListScrollFrame.buttons then
for _, button in ipairs(CalendarCreateEventInviteListScrollFrame.buttons) do
S:HandleButtonHighlight(button)
end
else
CalendarCreateEventInviteList:HookScript("OnEvent", function(self, event)
if event == "ADDON_LOADED" then
for _, button in ipairs(self.scrollFrame.buttons) do
S:HandleButtonHighlight(button)
end
end
end)
end
end)