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
-- ------------------------------------------------------------------------------ -- |
|
-- 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 |