local Postal = LibStub("AceAddon-3.0"):GetAddon("Postal") local Postal_DoNotWant = Postal:NewModule("DoNotWant", "AceHook-3.0") local L = LibStub("AceLocale-3.0"):GetLocale("Postal") Postal_DoNotWant.description = L["Shows a clickable visual icon as to whether a mail will be returned or deleted on expiry."] -- luacheck: globals InboxFrame local _G = getfenv(0) local selectedID local selectedIDmoney StaticPopupDialogs["POSTAL_DELETE_MAIL"] = { text = DELETE_MAIL_CONFIRMATION, button1 = ACCEPT, button2 = CANCEL, OnAccept = function(self) DeleteInboxItem(selectedID) selectedID = nil --HideUIPanel(OpenMailFrame) end, showAlert = 1, timeout = 0, hideOnEscape = 1 } StaticPopupDialogs["POSTAL_DELETE_MONEY"] = { text = DELETE_MONEY_CONFIRMATION, button1 = ACCEPT, button2 = CANCEL, OnAccept = function(self) DeleteInboxItem(selectedID) selectedID = nil --HideUIPanel(OpenMailFrame) end, OnShow = function(self) MoneyFrame_Update(self.moneyFrame, selectedIDmoney) end, hasMoneyFrame = 1, showAlert = 1, timeout = 0, hideOnEscape = 1 } function Postal_DoNotWant.Click(self, button, down) selectedID = self.id + (InboxFrame.pageNum-1)*7 local packageIcon, stationeryIcon, sender, subject, money, CODAmount, daysLeft, itemCount, wasRead, wasReturned, textCreated, canReply = GetInboxHeaderInfo(selectedID) selectedIDmoney = money local firstAttachName for i = 1, ATTACHMENTS_MAX_RECEIVE do firstAttachName = GetInboxItem(selectedID, i) if firstAttachName then break end end if InboxItemCanDelete(selectedID) then if firstAttachName then StaticPopup_Show("POSTAL_DELETE_MAIL", firstAttachName) return elseif money and money > 0 then StaticPopup_Show("POSTAL_DELETE_MONEY") return else DeleteInboxItem(selectedID) end else ReturnInboxItem(selectedID) StaticPopup_Hide("COD_CONFIRMATION") end selectedID = nil --HideUIPanel(OpenMailFrame) end function Postal_DoNotWant:OnEnable() -- Create the icons for i = 1, 7 do local b = _G["MailItem"..i.."ExpireTime"] if not b.returnicon then b.returnicon = CreateFrame("BUTTON", nil, b) b.returnicon:SetPoint("TOPRIGHT", b, "BOTTOMRIGHT", -5, -1) b.returnicon:SetWidth(16) b.returnicon:SetHeight(16) b.returnicon.texture = b.returnicon:CreateTexture(nil, "BACKGROUND") b.returnicon.texture:SetAllPoints() b.returnicon.texture:SetTexCoord(1, 0, 0, 1) -- flips image left/right b.returnicon.id = i b.returnicon:SetScript("OnClick", Postal_DoNotWant.Click) b.returnicon:SetScript("OnEnter", b:GetScript("OnEnter")) b.returnicon:SetScript("OnLeave", b:GetScript("OnLeave")) end -- For enabling after a disable b.returnicon:Show() end self:RawHook("InboxFrame_Update", true) end function Postal_DoNotWant:OnDisable() if self:IsHooked("InboxFrame_Update") then self:Unhook("InboxFrame_Update") end for i = 1, 7 do _G["MailItem"..i.."ExpireTime"].returnicon:Hide() end end function Postal_DoNotWant:InboxFrame_Update() self.hooks["InboxFrame_Update"]() for i = 1, 7 do local index = i + (InboxFrame.pageNum-1)*7 local b = _G["MailItem"..i.."ExpireTime"].returnicon if index > GetInboxNumItems() then b:Hide() else local f = InboxItemCanDelete(index) b.texture:SetTexture(f and "Interface\\RaidFrame\\ReadyCheck-NotReady" or "Interface\\ChatFrame\\ChatFrameExpandArrow") b.tooltip = f and DELETE or MAIL_RETURN b:Show() end end end