From 46252a1f04ad95ed408370fd3bbb74ec199c301c Mon Sep 17 00:00:00 2001 From: praxis <889+praxis@noreply.octowow.st> Date: Sun, 13 Sep 2026 09:53:29 +0000 Subject: [PATCH] Add skins/blizzard/mail.lua --- skins/blizzard/mail.lua | 233 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 skins/blizzard/mail.lua diff --git a/skins/blizzard/mail.lua b/skins/blizzard/mail.lua new file mode 100644 index 0000000..861c7d1 --- /dev/null +++ b/skins/blizzard/mail.lua @@ -0,0 +1,233 @@ +pfUI:RegisterSkin("Mailbox", "vanilla:tbc", function () + local rawborder, border = GetBorderSize() + local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel() + + -- Compatibility + local StationeryBackgroundLeft, StationeryBackgroundRight + if ATTACHMENTS_MAX_SEND then -- tbc + do -- SendMailFrame + for i = 1, ATTACHMENTS_MAX_SEND do + local btn = _G["SendMailAttachment"..i] + StripTextures(btn) + SkinButton(btn, nil, nil, nil, nil, true) + end + + hooksecurefunc("SendMailFrame_Update", function() + for i = 1, ATTACHMENTS_MAX_SEND do + local btn = _G["SendMailAttachment"..i] + HandleIcon(btn, btn:GetNormalTexture()) + + local link = GetSendMailItemLink(i) + if link then + local r,g,b = GetItemQualityColor(select(3, GetItemInfo(link))) + btn:SetBackdropBorderColor(r,g,b,1) + else + btn:SetBackdropBorderColor(GetStringColor(pfUI_config.appearance.border.color)) + end + end + end) + + StationeryBackgroundLeft, StationeryBackgroundRight = SendStationeryBackgroundLeft, SendStationeryBackgroundRight + end + + do -- OpenMailFrame + for i = 1, ATTACHMENTS_MAX_RECEIVE do + SkinButton(_G["OpenMailAttachmentButton"..i], nil, nil, nil, _G["OpenMailAttachmentButton"..i.."IconTexture"], true) + end + + hooksecurefunc("InboxFrame_OnClick", function(index) + for i=1, ATTACHMENTS_MAX_RECEIVE do + local link = GetInboxItemLink(index, i) + if not link then return end + local r,g,b = GetItemQualityColor(select(3, GetItemInfo(link))) + _G["OpenMailAttachmentButton"..i]:SetBackdropBorderColor(r,g,b,1) + end + end) + + SkinButton(OpenMailReportSpamButton) + end + else -- vanilla + do -- SendMailFrame + local skin = CreateFrame("Frame") + skin:SetScript("OnEvent", function() + this:UnregisterEvent("MAIL_SHOW") + if not this._Mail then + StripTextures(SendMailPackageButton) + SkinButton(SendMailPackageButton, nil, nil, nil, nil, true) + + hooksecurefunc("SendMailFrame_Update", function() + HandleIcon(SendMailPackageButton, SendMailPackageButton:GetNormalTexture()) + + local link = GetItemLinkByName(GetSendMailItem()) + if link then + local _,_,linkstr = string.find(link, "(item:%d+:%d+:%d+:%d+)") + local _,_,quality = GetItemInfo(linkstr) + local r,g,b = GetItemQualityColor(quality) + SendMailPackageButton:SetBackdropBorderColor(r,g,b,1) + else + SendMailPackageButton:SetBackdropBorderColor(GetStringColor(pfUI_config.appearance.border.color)) + end + end) + end + end) + skin:RegisterEvent("MAIL_SHOW") + + HookAddonOrVariable("Mail", function() + skin._Mail = true + for i = 1, 21 do + local button = _G["MailAttachment"..i] + StripTextures(button) + + SkinButton(button, nil, nil, nil, nil, true) + local orig = button.SetNormalTexture + button.SetNormalTexture = function(self, tex) + orig(self, tex) + + if button.item then + HandleIcon(self, self:GetNormalTexture()) + + local link = GetContainerItemLink(button.item[1], button.item[2]) + local _,_,linkstr = string.find(link, "(item:%d+:%d+:%d+:%d+)") + local _,_,quality = GetItemInfo(linkstr) + local r,g,b = GetItemQualityColor(quality) + self:SetBackdropBorderColor(r,g,b,1) + else + self:SetBackdropBorderColor(GetStringColor(pfUI_config.appearance.border.color)) + end + end + end + SkinButton(GetNoNameObject(InboxFrame, "Button", nil, "UI-Panel-Button-Up", OPENMAIL)) + local button = GetNoNameObject(SendMailFrame, "Button", nil, "UI-Panel-Button-Up", SEND_LABEL) -- this is SendMailMailButton + SkinButton(button) -- hack! only it happened to do it + button:ClearAllPoints() + button:SetPoint("RIGHT", SendMailCancelButton, "LEFT", -2*bpad, 0) + end) + + StationeryBackgroundLeft, StationeryBackgroundRight = _G.StationeryBackgroundLeft, _G.StationeryBackgroundRight + end + + do -- OpenMailFrame + SkinButton(OpenMailPackageButton, nil, nil, nil, OpenMailPackageButtonIconTexture) + + hooksecurefunc("InboxFrame_OnClick", function(index) + local name = GetInboxItem(index) + local link = name and GetItemLinkByName(name) + if link then + local _,_,linkstr = string.find(link, "(item:%d+:%d+:%d+:%d+)") + local _,_,quality = GetItemInfo(linkstr) + local r,g,b = GetItemQualityColor(quality) + OpenMailPackageButton:SetBackdropBorderColor(r,g,b,1) + else + OpenMailPackageButton:SetBackdropBorderColor(GetStringColor(pfUI_config.appearance.border.color)) + end + end) + end + end + + StripTextures(MailFrame, true) + CreateBackdrop(MailFrame, nil, nil, .75) + CreateBackdropShadow(MailFrame) + + MailFrame.backdrop:SetPoint("TOPLEFT", 12, -12) + MailFrame.backdrop:SetPoint("BOTTOMRIGHT", -30, 72) + MailFrame:SetHitRectInsets(12,30,12,72) + EnableMovable(MailFrame) + + SkinCloseButton(InboxCloseButton, MailFrame.backdrop, -6, -6) + + SkinTab(MailFrameTab1) + MailFrameTab1:ClearAllPoints() + MailFrameTab1:SetPoint("TOPLEFT", MailFrame.backdrop, "BOTTOMLEFT", bpad, -(border + (border == 1 and 1 or 2))) + SkinTab(MailFrameTab2) + MailFrameTab2:ClearAllPoints() + MailFrameTab2:SetPoint("LEFT", MailFrameTab1, "RIGHT", border*2 + 1, 0) + + do -- InboxFrame + InboxTitleText:ClearAllPoints() + InboxTitleText:SetPoint("TOP", MailFrame.backdrop, "TOP", 0, -10) + + CreateBackdrop(InboxFrame, nil, nil, .75) + InboxFrame.backdrop:SetPoint("TOPLEFT", _G["MailItem"..1], "TOPLEFT", 0, 1) + InboxFrame.backdrop:SetPoint("BOTTOMRIGHT", _G["MailItem"..INBOXITEMS_TO_DISPLAY], "BOTTOMRIGHT", 0, 0) + _G["MailItem"..1]:SetPoint("TOPLEFT", 28, -70) + + for i = 1, INBOXITEMS_TO_DISPLAY do + StripTextures(_G["MailItem"..i]) + StripTextures(_G["MailItem"..i.."Button"]) + SkinButton(_G["MailItem"..i.."Button"], nil, nil, nil, _G["MailItem"..i.."ButtonIcon"]) + end + + InboxPrevPageButton:ClearAllPoints() + InboxPrevPageButton:SetPoint("TOPLEFT", InboxFrame.backdrop, "BOTTOMLEFT", 0, -10) + + InboxNextPageButton:ClearAllPoints() + InboxNextPageButton:SetPoint("TOPRIGHT", InboxFrame.backdrop, "BOTTOMRIGHT", 0, -10) + + SkinArrowButton(InboxPrevPageButton, "left", 16) + SkinArrowButton(InboxNextPageButton, "right", 16) + + InboxPrevPageButton:GetRegions():SetPoint("LEFT", InboxPrevPageButton, "RIGHT", 5, 0) + InboxNextPageButton:GetRegions():SetPoint("RIGHT", InboxNextPageButton, "LEFT", -5, 0) + end + + do -- SendMailFrame + SendMailTitleText:ClearAllPoints() + SendMailTitleText:SetPoint("TOP", MailFrame.backdrop, "TOP", 0, -10) + + StripTextures(SendMailNameEditBox, nil, "BACKGROUND") + CreateBackdrop(SendMailNameEditBox, nil, true) + StripTextures(SendMailSubjectEditBox, nil, "BACKGROUND") + CreateBackdrop(SendMailSubjectEditBox, nil, true) + + SkinButton(SendMailCancelButton) + SkinButton(SendMailMailButton) + SendMailMailButton:ClearAllPoints() + SendMailMailButton:SetPoint("RIGHT", SendMailCancelButton, "LEFT", -2*bpad, 0) + + StripTextures(SendMailFrame) + StripTextures(SendMailScrollFrame) + CreateBackdrop(SendMailScrollFrame, nil, true) + SkinScrollbar(SendMailScrollFrameScrollBar) + + SkinMoneyInputFrame(SendMailMoney) + + StationeryBackgroundLeft:SetDrawLayer("BORDER") + StationeryBackgroundLeft:SetAllPoints() + StationeryBackgroundRight:Hide() + end + + do -- OpenMailFrame + StripTextures(OpenMailFrame) + CreateBackdrop(OpenMailFrame, nil, nil, .75) + OpenMailFrame.backdrop:SetPoint("TOPLEFT", 10, -10) + OpenMailFrame.backdrop:SetPoint("BOTTOMRIGHT", -32, 72) + OpenMailFrame:SetHitRectInsets(10,32,10,72) + + SkinCloseButton(OpenMailCloseButton, OpenMailFrame.backdrop, -6, -6) + + OpenMailFrame:DisableDrawLayer("BACKGROUND") + + OpenMailTitleText:ClearAllPoints() + OpenMailTitleText:SetPoint("TOP", OpenMailFrame.backdrop, "TOP", 0, -10) + + SkinButton(OpenMailCancelButton) + SkinButton(OpenMailDeleteButton) + OpenMailDeleteButton:ClearAllPoints() + OpenMailDeleteButton:SetPoint("RIGHT", OpenMailCancelButton, "LEFT", -2*bpad, 0) + SkinButton(OpenMailReplyButton) + OpenMailReplyButton:ClearAllPoints() + OpenMailReplyButton:SetPoint("RIGHT", OpenMailDeleteButton, "LEFT", -2*bpad, 0) + + SkinButton(OpenMailMoneyButton, nil, nil, nil, OpenMailMoneyButtonIconTexture) + SkinButton(OpenMailLetterButton, nil, nil, nil, OpenMailLetterButtonIconTexture) + + StripTextures(OpenMailScrollFrame) + CreateBackdrop(OpenMailScrollFrame, nil, true) + SkinScrollbar(OpenMailScrollFrameScrollBar) + + OpenStationeryBackgroundLeft:SetDrawLayer("BORDER") + OpenStationeryBackgroundLeft:SetTexCoord(.1,1,.1,.9) + OpenStationeryBackgroundLeft:SetAllPoints() + OpenStationeryBackgroundRight:Hide() + end +end)