Mercurial > wow > inventory
diff Modules/Scanner.lua @ 117:239e25a058c7
Implemented mail refilling support. Respecting the MailAddonBusy global when opening so addons like MailOpener shouldn?t interfere.
author | Zerotorescue |
---|---|
date | Sat, 15 Jan 2011 13:15:16 +0100 |
parents | 41f0689dfda1 |
children | dc6f405c1a5d |
line wrap: on
line diff
--- a/Modules/Scanner.lua Fri Jan 14 23:46:05 2011 +0100 +++ b/Modules/Scanner.lua Sat Jan 15 13:15:16 2011 +0100 @@ -386,59 +386,59 @@ self:RegisterEvent("GUILDBANKBAGSLOTS_CHANGED"); end ---local previousMailCount; ---function mod:MAIL_SHOW() --- addon:Debug("Scanner:MAIL_SHOW"); --- --- self:RegisterEvent("MAIL_INBOX_UPDATE"); --- self:RegisterEvent("MAIL_CLOSED"); --- --- scanned = nil; --- previousMailCount = nil; --- --- self:Scan(addon.Locations.Mailbox); ---end +local previousMailCount; +function mod:MAIL_SHOW() + addon:Debug("Scanner:MAIL_SHOW"); + + self:RegisterEvent("MAIL_INBOX_UPDATE"); + self:RegisterEvent("MAIL_CLOSED"); + + scanned = nil; + previousMailCount = nil; + + self:Scan(addon.Locations.Mailbox); +end ---function mod:MAIL_INBOX_UPDATE() --- if not scanned then --- addon:Debug("Scanner:MAIL_INBOX_UPDATE"); --- --- local current, total = GetInboxNumItems(); --- --- if not previousMailCount or current > previousMailCount then --- -- New mail received --- --- scanned = true; --- --- self:Scan(addon.Locations.Mailbox); --- end --- --- -- Also remember the new mailcount when losing items, otherwise deleting item 50 and getting to 50 again wouldn't trigger a re-scan --- previousMailCount = current; --- else --- addon:Debug("Scanner:MAIL_INBOX_UPDATE skipped, already scanned"); --- end ---end +function mod:MAIL_INBOX_UPDATE() + if not scanned then + addon:Debug("Scanner:MAIL_INBOX_UPDATE"); + + local current, total = GetInboxNumItems(); + + if not previousMailCount or current > previousMailCount then + -- New mail received + + scanned = true; + + self:Scan(addon.Locations.Mailbox); + end + + -- Also remember the new mailcount when losing items, otherwise deleting item 50 and getting to 50 again wouldn't trigger a re-scan + previousMailCount = current; + else + addon:Debug("Scanner:MAIL_INBOX_UPDATE skipped, already scanned"); + end +end ---function mod:MAIL_CLOSED() --- addon:Debug("Scanner:MAIL_CLOSED"); --- --- previousMailCount = nil; --- scanned = nil; --- self:ClearCache(); --- --- self:UnregisterEvent("MAIL_INBOX_UPDATE"); --- self:UnregisterEvent("MAIL_CLOSED"); --- --- InventoriumItemMover:Hide(); --- Mover:ResetQueue(); ---end +function mod:MAIL_CLOSED() + addon:Debug("Scanner:MAIL_CLOSED"); + + previousMailCount = nil; + scanned = nil; + self:ClearCache(); + + self:UnregisterEvent("MAIL_INBOX_UPDATE"); + self:UnregisterEvent("MAIL_CLOSED"); + + InventoriumItemMover:Hide(); + Mover:ResetQueue(); +end function mod:OnEnable() -- Scan once when the bankframe is opened self:RegisterEvent("BANKFRAME_OPENED"); self:RegisterEvent("GUILDBANKFRAME_OPENED"); --- self:RegisterEvent("MAIL_SHOW"); + self:RegisterEvent("MAIL_SHOW"); Mover = addon:GetModule("Mover"); @@ -460,9 +460,9 @@ self:GUILDBANKFRAME_CLOSED(); self:UnregisterEvent("GUILDBANKFRAME_OPENED"); --- -- Mailbox --- self:MAIL_CLOSED(); --- self:UnregisterEvent("MAIL_SHOW"); + -- Mailbox + self:MAIL_CLOSED(); + self:UnregisterEvent("MAIL_SHOW"); end function mod:Pause()