You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
6.9 KiB
225 lines
6.9 KiB
|
4 years ago
|
-- ------------------------------------------------------------------------------ --
|
||
|
|
-- TradeSkillMaster_Mailing --
|
||
|
|
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
|
||
|
|
-- --
|
||
|
|
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
|
||
|
|
-- All Rights Reserved* - Detailed license information included with addon. --
|
||
|
|
-- ------------------------------------------------------------------------------ --
|
||
|
|
|
||
|
|
local TSM = select(2, ...)
|
||
|
|
local MailTab = TSM:NewModule("MailTab", "AceEvent-3.0", "AceHook-3.0")
|
||
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
|
||
|
|
|
||
|
|
local private = {tabs = {}}
|
||
|
|
|
||
|
|
|
||
|
|
function MailTab:OnEnable()
|
||
|
|
MailTab:RegisterEvent("MAIL_SHOW", function() TSMAPI:CreateTimeDelay("mailShowDelay", 0, private.OnMailShow) end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function private:OnMailShow()
|
||
|
|
private.frame = private.frame or private:CreateMailTab()
|
||
|
|
if TSM.db.global.defaultMailTab then
|
||
|
|
for i=1, MailFrame.numTabs do
|
||
|
|
if _G["MailFrameTab"..i].isTSMTab then
|
||
|
|
_G["MailFrameTab"..i]:Click()
|
||
|
|
break
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- make sure the second tab gets loaded so we can send mail
|
||
|
|
local currentTab = PanelTemplates_GetSelectedTab(MailFrame)
|
||
|
|
MailFrameTab2:Click()
|
||
|
|
_G["MailFrameTab"..currentTab]:Click()
|
||
|
|
end
|
||
|
|
|
||
|
|
function private:CreateMailTab()
|
||
|
|
local frame = CreateFrame("Frame", nil, MailFrame)
|
||
|
|
TSMAPI.Design:SetFrameBackdropColor(frame)
|
||
|
|
frame:Hide()
|
||
|
|
frame:SetPoint("TOPLEFT")
|
||
|
|
frame:SetPoint("BOTTOMRIGHT", 40, 0)
|
||
|
|
frame:EnableMouse(true)
|
||
|
|
|
||
|
|
local function OnTabClick(self)
|
||
|
|
PanelTemplates_SetTab(MailFrame, self:GetID())
|
||
|
|
--ButtonFrameTemplate_HideButtonBar(MailFrame)
|
||
|
|
InboxFrame:Hide()
|
||
|
|
OpenMailFrame:Hide()
|
||
|
|
StationeryPopupFrame:Hide()
|
||
|
|
SendMailFrame:Hide()
|
||
|
|
SetSendMailShowing(false)
|
||
|
|
MailFrameTab1:Hide()
|
||
|
|
MailFrameTab2:Hide()
|
||
|
|
MailFrameTab3:Hide()
|
||
|
|
InboxCloseButton:Hide()
|
||
|
|
|
||
|
|
|
||
|
|
private.frame:Show()
|
||
|
|
if TSM.db.global.defaultPage == 1 then
|
||
|
|
private.frame.inboxBtn:Click()
|
||
|
|
elseif TSM.db.global.defaultPage == 2 then
|
||
|
|
private.frame.groupsBtn:Click()
|
||
|
|
elseif TSM.db.global.defaultPage == 3 then
|
||
|
|
private.frame.quickSendBtn:Click()
|
||
|
|
elseif TSM.db.global.defaultPage == 4 then
|
||
|
|
private.frame.otherBtn:Click()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local function OnOtherTabClick()
|
||
|
|
if not private.frame then return end
|
||
|
|
private.frame:Hide()
|
||
|
|
InboxFrame:Show()
|
||
|
|
MailFrameTab1:Show()
|
||
|
|
MailFrameTab2:Show()
|
||
|
|
MailFrameTab3:Show()
|
||
|
|
InboxCloseButton:Show()
|
||
|
|
PanelTemplates_SetTab(MailFrame, 1)
|
||
|
|
end
|
||
|
|
|
||
|
|
--MailTab:Hook("MailFrameTab_OnClick", OnOtherTabClick, true)
|
||
|
|
|
||
|
|
local n = MailFrame.numTabs + 1
|
||
|
|
local tab = CreateFrame("Button", "MailFrameTab"..n, MailFrame, "FriendsFrameTabTemplate")
|
||
|
|
tab:Hide()
|
||
|
|
tab:SetID(n)
|
||
|
|
tab:SetText(TSMAPI.Design:GetInlineColor("link2").."TSM_Mailing|r")
|
||
|
|
tab:SetNormalFontObject(GameFontHighlightSmall)
|
||
|
|
tab.isTSMTab = true
|
||
|
|
tab:SetPoint("LEFT", _G["MailFrameTab"..n-1], "RIGHT", -8, 0)
|
||
|
|
tab:Show()
|
||
|
|
tab:SetScript("OnClick", OnTabClick)
|
||
|
|
PanelTemplates_SetNumTabs(MailFrame, n)
|
||
|
|
PanelTemplates_EnableTab(MailFrame, n)
|
||
|
|
frame.tab = tab
|
||
|
|
|
||
|
|
local iconFrame = CreateFrame("Frame", nil, frame)
|
||
|
|
iconFrame:SetPoint("CENTER", frame, "TOPLEFT", 25, -25)
|
||
|
|
iconFrame:SetHeight(80)
|
||
|
|
iconFrame:SetWidth(80)
|
||
|
|
local icon = iconFrame:CreateTexture(nil, "ARTWORK")
|
||
|
|
icon:SetAllPoints()
|
||
|
|
icon:SetTexture("Interface\\Addons\\TradeSkillMaster\\Media\\TSM_Icon_Big")
|
||
|
|
local ag = iconFrame:CreateAnimationGroup()
|
||
|
|
local spin = ag:CreateAnimation("Rotation")
|
||
|
|
spin:SetOrder(1)
|
||
|
|
spin:SetDuration(2)
|
||
|
|
spin:SetDegrees(90)
|
||
|
|
local spin = ag:CreateAnimation("Rotation")
|
||
|
|
spin:SetOrder(2)
|
||
|
|
spin:SetDuration(4)
|
||
|
|
spin:SetDegrees(-180)
|
||
|
|
local spin = ag:CreateAnimation("Rotation")
|
||
|
|
spin:SetOrder(3)
|
||
|
|
spin:SetDuration(2)
|
||
|
|
spin:SetDegrees(90)
|
||
|
|
ag:SetLooping("REPEAT")
|
||
|
|
iconFrame:SetScript("OnEnter", function() ag:Play() end)
|
||
|
|
iconFrame:SetScript("OnLeave", function() ag:Stop() end)
|
||
|
|
|
||
|
|
local title = TSMAPI.GUI:CreateLabel(frame)
|
||
|
|
title:SetPoint("TOPLEFT", 40, -5)
|
||
|
|
title:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -5, -25)
|
||
|
|
title:SetJustifyH("CENTER")
|
||
|
|
title:SetJustifyV("CENTER")
|
||
|
|
title:SetText("TSM_Mailing - "..TSM._version)
|
||
|
|
|
||
|
|
local closeBtn = TSMAPI.GUI:CreateButton(frame, 19)
|
||
|
|
closeBtn:SetPoint("TOPRIGHT", -5, -5)
|
||
|
|
closeBtn:SetWidth(20)
|
||
|
|
closeBtn:SetHeight(20)
|
||
|
|
closeBtn:SetText("X")
|
||
|
|
closeBtn:SetScript("OnClick", CloseMail)
|
||
|
|
|
||
|
|
local switchBtn = TSMAPI.GUI:CreateButton(frame, 15)
|
||
|
|
switchBtn:SetPoint("TOPRIGHT", closeBtn, "TOPLEFT", -4, 0)
|
||
|
|
switchBtn:SetHeight(20)
|
||
|
|
switchBtn:SetWidth(85)
|
||
|
|
switchBtn:SetText("Default UI")
|
||
|
|
switchBtn:SetScript("OnClick", OnOtherTabClick)
|
||
|
|
frame.switchBtn = switchBtn
|
||
|
|
|
||
|
|
local line = TSMAPI.GUI:CreateVerticalLine(frame, 0)
|
||
|
|
line:ClearAllPoints()
|
||
|
|
line:SetPoint("TOPRIGHT", -30, -1)
|
||
|
|
line:SetWidth(2)
|
||
|
|
line:SetHeight(30)
|
||
|
|
TSMAPI.GUI:CreateHorizontalLine(frame, -30)
|
||
|
|
|
||
|
|
private:CreateTabs(frame)
|
||
|
|
return frame
|
||
|
|
end
|
||
|
|
|
||
|
|
function private:CreateTabs(frame)
|
||
|
|
local function OnButtonClick(self)
|
||
|
|
frame.inboxTab:Hide()
|
||
|
|
frame.groupsTab:Hide()
|
||
|
|
frame.otherTab:Hide()
|
||
|
|
frame.quickSendTab:Hide()
|
||
|
|
|
||
|
|
frame.inboxBtn:UnlockHighlight()
|
||
|
|
frame.groupsBtn:UnlockHighlight()
|
||
|
|
frame.otherBtn:UnlockHighlight()
|
||
|
|
frame.quickSendBtn:UnlockHighlight()
|
||
|
|
self:LockHighlight()
|
||
|
|
|
||
|
|
if self == frame.inboxBtn then
|
||
|
|
frame.inboxTab:Show()
|
||
|
|
elseif self == frame.groupsBtn then
|
||
|
|
frame.groupsTab:Show()
|
||
|
|
elseif self == frame.otherBtn then
|
||
|
|
frame.otherTab:Show()
|
||
|
|
elseif self == frame.quickSendBtn then
|
||
|
|
frame.quickSendTab:Show()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local button = TSMAPI.GUI:CreateButton(frame, 15)
|
||
|
|
button:SetPoint("TOPLEFT", 70, -40)
|
||
|
|
button:SetHeight(20)
|
||
|
|
button:SetWidth(55)
|
||
|
|
button:SetText(L["Inbox"])
|
||
|
|
button:SetScript("OnClick", OnButtonClick)
|
||
|
|
frame.inboxBtn = button
|
||
|
|
|
||
|
|
local button = TSMAPI.GUI:CreateButton(frame, 15)
|
||
|
|
button:SetPoint("TOPLEFT", frame.inboxBtn, "TOPRIGHT", 5, 0)
|
||
|
|
button:SetHeight(20)
|
||
|
|
button:SetWidth(95)
|
||
|
|
button:SetText(L["TSM Groups"])
|
||
|
|
button:SetScript("OnClick", OnButtonClick)
|
||
|
|
frame.groupsBtn = button
|
||
|
|
|
||
|
|
local button = TSMAPI.GUI:CreateButton(frame, 15)
|
||
|
|
button:SetPoint("TOPLEFT", frame.groupsBtn, "TOPRIGHT", 5, 0)
|
||
|
|
button:SetHeight(20)
|
||
|
|
button:SetWidth(85)
|
||
|
|
button:SetText(L["Quick Send"])
|
||
|
|
button:SetScript("OnClick", OnButtonClick)
|
||
|
|
frame.quickSendBtn = button
|
||
|
|
|
||
|
|
local button = TSMAPI.GUI:CreateButton(frame, 15)
|
||
|
|
button:SetPoint("TOPLEFT", frame.quickSendBtn, "TOPRIGHT", 5, 0)
|
||
|
|
button:SetPoint("TOPRIGHT", -5, -40)
|
||
|
|
button:SetHeight(20)
|
||
|
|
button:SetText(L["Other"])
|
||
|
|
button:SetScript("OnClick", OnButtonClick)
|
||
|
|
frame.otherBtn = button
|
||
|
|
|
||
|
|
TSMAPI.GUI:CreateHorizontalLine(frame, -70)
|
||
|
|
|
||
|
|
local content = CreateFrame("Frame", nil, frame)
|
||
|
|
content:SetPoint("TOPLEFT", 0, -70)
|
||
|
|
content:SetPoint("BOTTOMRIGHT")
|
||
|
|
|
||
|
|
frame.inboxTab = TSM.Inbox:CreateTab(content)
|
||
|
|
frame.inboxTab:Hide()
|
||
|
|
frame.groupsTab = TSM.Groups:CreateTab(content)
|
||
|
|
frame.groupsTab:Hide()
|
||
|
|
frame.otherTab = TSM.Other:CreateTab(content)
|
||
|
|
frame.otherTab:Hide()
|
||
|
|
frame.quickSendTab = TSM.QuickSend:CreateTab(content)
|
||
|
|
frame.quickSendTab:Hide()
|
||
|
|
end
|