diff --git a/Postal.lua b/Postal.lua
index 3522ba7..2a96d4e 100644
--- a/Postal.lua
+++ b/Postal.lua
@@ -45,6 +45,151 @@ function Postal:OnInitialize()
PostalInboxFrame.eventFunc = {}
end
+function Postal:SendMailFrame_Update()
+ do
+ local background = ({SendMailPackageButton:GetRegions()})[1]
+ background:Hide()
+ local count = ({SendMailPackageButton:GetRegions()})[3]
+ count:Hide()
+ SendMailPackageButton:Disable()
+ SendMailPackageButton:SetScript('OnReceiveDrag', nil)
+ SendMailPackageButton:SetScript('OnDragStart', nil)
+ end
+
+ do
+ SendMailMoneyText:SetPoint('TOPLEFT', 0, -2)
+ SendMailMoney:ClearAllPoints()
+ SendMailMoney:SetPoint('TOPLEFT', SendMailMoneyText, 'BOTTOMLEFT', 5, -3)
+ SendMailSendMoneyButton:SetPoint('TOPLEFT', SendMailMoney, 'TOPRIGHT', 0, 12)
+ end
+
+ SendMailMailButton:SetScript('OnClick', function()
+ PostalGlobalFrame.queue = Postal:FillItemTable();
+ PostalGlobalFrame.total = getn(PostalGlobalFrame.queue);
+ Postal:ClearItems();
+ PostalGlobalFrame:Show();
+ this:GetParent():Hide();
+ POSTAL_CANSENDNEXT = 1
+ end)
+
+ ATTACHMENTS_PER_ROW_SEND = 7
+ ATTACHMENTS_MAX_SEND = 21
+ ATTACHMENTS_MAX = 21
+ ATTACHMENTS_MAX_ROWS_SEND = 3
+
+ local itemCount = 0
+ local itemTitle
+ local gap
+ -- local last = 0
+ local last = self:GetNumMails()
+ for i=1, ATTACHMENTS_MAX_SEND do
+ -- -- get info about the attachment
+ -- local itemName, itemTexture, stackCount, quality = GetSendMailItem(i)
+ -- -- set attachment texture info
+ -- _G["PostalAttachment"..i]:SetNormalTexture(itemTexture)
+ -- -- set the stack count
+ -- if ( stackCount <= 1 ) then
+ -- _G["PostalAttachment"..i.."Count"]:SetText("")
+ -- else
+ -- _G["PostalAttachment"..i.."Count"]:SetText(stackCount)
+ -- end
+
+ -- local attachmentButton = _G["PostalAttachment"..i]
+
+ -- SetItemButtonQuality(attachmentButton, quality, GetSendMailItemLink(i))
+
+ -- -- determine what a name for the message in case it doesn't already have one
+ -- if ( itemName ) then
+ -- itemCount = itemCount + 1
+ -- if ( not itemTitle ) then
+ -- if ( stackCount <= 1 ) then
+ -- itemTitle = itemName
+ -- else
+ -- itemTitle = itemName.." ("..stackCount..")"
+ -- end
+ -- end
+ -- if ((last + 1) ~= i) then
+ -- gap = 1
+ -- end
+ -- last = i
+ -- end
+ end
+
+ -- Determine how many rows of attachments to show
+ local itemRowCount = 1
+ local temp = last
+ while temp > ATTACHMENTS_PER_ROW_SEND and itemRowCount < ATTACHMENTS_MAX_ROWS_SEND do
+ itemRowCount = itemRowCount + 1;
+ temp = temp - ATTACHMENTS_PER_ROW_SEND
+ end
+ Aux.log(itemRowCount)
+ if not gap and temp == ATTACHMENTS_PER_ROW_SEND and itemRowCount < ATTACHMENTS_MAX_ROWS_SEND then
+ itemRowCount = itemRowCount + 1;
+ end
+ if SendMailFrame.maxRowsShown and last > 0 and itemRowCount < SendMailFrame.maxRowsShown then
+ itemRowCount = SendMailFrame.maxRowsShown
+ else
+ SendMailFrame.maxRowsShown = itemRowCount
+ end
+
+ -- Compute sizes
+ local cursorx = 0
+ local cursory = itemRowCount - 1
+ local marginxl = 8 + 6
+ local marginxr = 40 + 6
+ local areax = SendMailFrame:GetWidth() - marginxl - marginxr
+ local iconx = PostalAttachment1:GetWidth() + 2
+ local icony = PostalAttachment1:GetHeight() + 2
+ local gapx1 = floor((areax - (iconx * ATTACHMENTS_PER_ROW_SEND)) / (ATTACHMENTS_PER_ROW_SEND - 1))
+ local gapx2 = floor((areax - (iconx * ATTACHMENTS_PER_ROW_SEND) - (gapx1 * (ATTACHMENTS_PER_ROW_SEND - 1))) / 2)
+ local gapy1 = 5
+ local gapy2 = 6
+ local areay = (gapy2 * 2) + (gapy1 * (itemRowCount - 1)) + (icony * itemRowCount)
+ local indentx = marginxl + gapx2 + 17
+ local indenty = 170 + gapy2 + icony - 13
+ local tabx = (iconx + gapx1) - 3 --this magic number changes the attachment spacing
+ local taby = (icony + gapy1)
+ local scrollHeight = 249 - areay
+
+
+ PostalHorizontalBarLeft:SetPoint('TOPLEFT', SendMailFrame, 'BOTTOMLEFT', 2 + 15, 184 + areay - 14)
+
+ SendMailScrollFrame:SetHeight(scrollHeight)
+ SendMailScrollChildFrame:SetHeight(scrollHeight)
+
+ local SendMailScrollFrameTop = ({SendMailScrollFrame:GetRegions()})[3]
+ SendMailScrollFrameTop:SetHeight(scrollHeight)
+ SendMailScrollFrameTop:SetTexCoord(0, 0.484375, 0, scrollHeight / 256)
+
+ StationeryBackgroundLeft:SetHeight(scrollHeight)
+ StationeryBackgroundLeft:SetTexCoord(0, 1.0, 0, scrollHeight / 256)
+
+
+ StationeryBackgroundRight:SetHeight(scrollHeight)
+ StationeryBackgroundRight:SetTexCoord(0, 1.0, 0, scrollHeight / 256)
+
+
+ -- Set Items
+ for i=1, ATTACHMENTS_MAX_SEND do
+ if cursory >= 0 then
+ getglobal("PostalAttachment"..i):Enable()
+ getglobal("PostalAttachment"..i):Show()
+ getglobal("PostalAttachment"..i):SetPoint("TOPLEFT", "SendMailFrame", "BOTTOMLEFT", indentx + (tabx * cursorx), indenty + (taby * cursory));
+
+ cursorx = cursorx + 1
+ if cursorx >= ATTACHMENTS_PER_ROW_SEND then
+ cursory = cursory - 1
+ cursorx = 0
+ end
+ else
+ getglobal("PostalAttachment"..i):Hide()
+ end
+ end
+ for i=ATTACHMENTS_MAX_SEND+1, ATTACHMENTS_MAX do
+ getglobal("PostalAttachment"..i):Hide()
+ end
+end
+
function Postal:OnEnable()
self:RegisterEvent("MAIL_INBOX_UPDATE")
self:RegisterEvent("UI_ERROR_MESSAGE")
@@ -56,6 +201,7 @@ function Postal:OnEnable()
self:Hook("ContainerFrameItemButton_OnClick")
self:Hook("PickupContainerItem")
self:Hook("UseContainerItem")
+ self:Hook("SendMailFrame_Update")
self:Hook("ContainerFrame_Update")
self:Hook("ClickSendMailItemButton")
self:HookScript(TradeFrame, "OnShow", "TF_Show")
@@ -67,9 +213,19 @@ function Postal:OnEnable()
self:Hook("OpenMail_Reply")
oldTakeInboxMoney = OpenMailMoneyButton:GetScript("OnClick")
- SendMailScrollFrame:SetHeight(200)
- StationeryBackgroundLeft:SetHeight(200)
- StationeryBackgroundRight:SetHeight(200)
+ -- NEW
+ SendMailFrame:CreateTexture('PostalHorizontalBarLeft', 'BACKGROUND')
+ PostalHorizontalBarLeft:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
+ PostalHorizontalBarLeft:SetWidth(256)
+ PostalHorizontalBarLeft:SetHeight(16)
+ PostalHorizontalBarLeft:SetTexCoord(0, 1, 0, 0.25)
+ SendMailFrame:CreateTexture('PostalHorizontalBarRight', 'BACKGROUND')
+ PostalHorizontalBarRight:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
+ PostalHorizontalBarRight:SetWidth(75)
+ PostalHorizontalBarRight:SetHeight(16)
+ PostalHorizontalBarRight:SetTexCoord(0, 0.29296875, 0.25, 0.5)
+ PostalHorizontalBarRight:SetPoint('LEFT', PostalHorizontalBarLeft, 'RIGHT')
+ Postal:SendMailFrame_Update()
end
function Postal:MAIL_CLOSED()
@@ -131,10 +287,10 @@ function Postal:UseContainerItem(bag, item)
PostalFrame.bag = bag
PostalFrame.item = item
end
- if PostalFrame:IsVisible() and not CursorHasItem() then
+ if SendMailFrame:IsVisible() and not CursorHasItem() then
local i
for i = 1, POSTAL_NUMITEMBUTTONS do
- if not getglobal("PostalButton" .. i).item then
+ if not getglobal("PostalAttachment" .. i).item then
if self:ItemIsMailable(bag, item) then
Postal:Print("Postal: Cannot attach item.", 1, 0.5, 0)
@@ -142,15 +298,11 @@ function Postal:UseContainerItem(bag, item)
end
self.hooks["PickupContainerItem"].orig(bag, item)
- self:MailButton_OnClick(getglobal("PostalButton" .. i))
+ self:MailButton_OnClick(getglobal("PostalAttachment" .. i))
self:UpdateItemButtons()
return
end
end
- elseif SendMailFrame:IsVisible() and not CursorHasItem() then
- self.hooks["PickupContainerItem"].orig(bag, item)
- ClickSendMailItemButton()
- return
elseif TradeFrame:IsVisible() and not CursorHasItem() then
for i = 1, 6 do
if not GetTradePlayerItemLink(i) then
@@ -229,8 +381,8 @@ function Postal:MailButton_OnClick(button)
PostalFrame.item = nil
end
local texture, count = GetContainerItemInfo(bag, item)
- getglobal(button:GetName() .. "IconTexture"):Show()
- getglobal(button:GetName() .. "IconTexture"):SetTexture(texture)
+ -- getglobal(button:GetName() .. "IconTexture"):Show()
+ button:SetNormalTexture(texture)
if count > 1 then
getglobal(button:GetName() .. "Count"):SetText(count)
getglobal(button:GetName() .. "Count"):Show()
@@ -243,7 +395,8 @@ function Postal:MailButton_OnClick(button)
button.count = count
elseif button.item and button.bag then
self.hooks["PickupContainerItem"].orig(button.bag, button.item)
- getglobal(button:GetName() .. "IconTexture"):Hide()
+ -- getglobal(button:GetName() .. "IconTexture"):Hide()
+ button:SetNormalTexture(nil)
getglobal(button:GetName() .. "Count"):Hide()
PostalFrame.bag = button.bag
PostalFrame.item = button.item
@@ -255,13 +408,15 @@ function Postal:MailButton_OnClick(button)
local num = self:GetNumMails()
PostalFrame.num = num
self:CanSend(PostalNameEditBox)
- if num == 0 then num = 1 end
- MoneyFrame_Update("PostalCostMoneyFrame", GetSendMailPrice()*num)
+ MoneyFrame_Update("PostalCostMoneyFrame", GetSendMailPrice() * max(1, num))
for i = 1, NUM_CONTAINER_FRAMES do
if getglobal("ContainerFrame" .. i):IsVisible() then
ContainerFrame_Update(getglobal("ContainerFrame" .. i))
end
end
+
+ -- NEW
+ Postal:SendMailFrame_Update()
end
function Postal:ItemIsMailable(bag, item)
@@ -284,15 +439,15 @@ end
function Postal:UpdateItemButtons(frame)
local i
for i = 1, POSTAL_NUMITEMBUTTONS do
- local btn = getglobal("PostalButton" .. i)
+ local btn = getglobal("PostalAttachment" .. i)
if not frame or btn ~= frame then
local texture, count
if btn.item and btn.bag then
texture, count = GetContainerItemInfo(btn.bag, btn.item)
end
if not texture then
- getglobal(btn:GetName() .. "IconTexture"):Hide()
- getglobal(btn:GetName() .. "Count"):Hide()
+ btn:SetNormalTexture(nil)
+ getglobal(btn:GetName().."Count"):Hide()
btn.item = nil
btn.bag = nil
btn.count = nil
@@ -300,13 +455,12 @@ function Postal:UpdateItemButtons(frame)
else
btn.count = count
btn.texture = texture
- getglobal(btn:GetName() .. "IconTexture"):Show()
- getglobal(btn:GetName() .. "IconTexture"):SetTexture(texture)
+ btn:SetNormalTexture(texture)
if count > 1 then
- getglobal(btn:GetName() .. "Count"):Show()
- getglobal(btn:GetName() .. "Count"):SetText(count)
+ getglobal(btn:GetName().."Count"):Show()
+ getglobal(btn:GetName().."Count"):SetText(count)
else
- getglobal(btn:GetName() .. "Count"):Hide()
+ getglobal(btn:GetName().."Count"):Hide()
end
end
end
@@ -316,7 +470,7 @@ end
function Postal:GetItemFrame(bag, item)
local i
for i = 1, POSTAL_NUMITEMBUTTONS do
- local btn = getglobal("PostalButton" .. i)
+ local btn = getglobal("PostalAttachment" .. i)
if btn.item == item and btn.bag == bag then
return btn
end
@@ -328,7 +482,7 @@ function Postal:GetNumMails()
local i
local num = 0
for i = 1, POSTAL_NUMITEMBUTTONS do
- local btn = getglobal("PostalButton" .. i)
+ local btn = getglobal("PostalAttachment" .. i)
if btn.item and btn.bag then
num = num + 1
end
@@ -340,7 +494,7 @@ function Postal:ClearItems()
local i
local num = 0
for i = 1, POSTAL_NUMITEMBUTTONS do
- local btn = getglobal("PostalButton" .. i)
+ local btn = getglobal("PostalAttachment" .. i)
btn.item = nil
btn.count = nil
btn.bag = nil
@@ -418,7 +572,7 @@ end
function Postal:FillItemTable()
local arr = {}
for i = 1, POSTAL_NUMITEMBUTTONS do
- local btn = getglobal("PostalButton" .. i)
+ local btn = getglobal("PostalAttachment" .. i)
if btn.item and btn.bag then
tinsert(arr, { ["item"] = btn.item, ["bag"] = btn.bag, ["to"] = PostalNameEditBox:GetText() })
end
diff --git a/Postal.xml b/Postal.xml
index 3a90ed3..0a2511c 100644
--- a/Postal.xml
+++ b/Postal.xml
@@ -12,7 +12,8 @@ C:\Projects\WoW\Bin\Interface\FrameXML\UI.xsd">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-