|
Zerotorescue@0
|
1 local MailOpener = LibStub("AceAddon-3.0"):GetAddon("MailOpener");
|
|
Zerotorescue@0
|
2 local OpenAll = MailOpener:NewModule("OpenAll", "AceEvent-3.0", "AceTimer-3.0");
|
|
Zerotorescue@0
|
3
|
|
Zerotorescue@3
|
4 --[[
|
|
Zerotorescue@3
|
5 Module name: OpenAll
|
|
Zerotorescue@3
|
6 Description: The actual mail opening initiated by the core.
|
|
Zerotorescue@3
|
7 Required: Yes.
|
|
Zerotorescue@3
|
8
|
|
Zerotorescue@3
|
9 Dev notes:
|
|
Zerotorescue@3
|
10 When shift clicking the Open All button it should override all filters.
|
|
Zerotorescue@3
|
11 ]]
|
|
Zerotorescue@3
|
12
|
|
Zerotorescue@0
|
13 local MAIL_ITEM_INDEX, mailTimer, inventoryFull, inventoryFullSoundPlayed, opening, lastSync, numCurrentMail, numHiddenMail, continue;
|
|
Zerotorescue@0
|
14
|
|
Zerotorescue@0
|
15 function OpenAll:OnInitialize()
|
|
Zerotorescue@0
|
16 local defaults = {
|
|
Zerotorescue@0
|
17 profile = {
|
|
Zerotorescue@0
|
18 speed = 0.05,
|
|
Zerotorescue@0
|
19 keepFreeSpace = 0,
|
|
Zerotorescue@0
|
20 filter = {
|
|
Zerotorescue@0
|
21 AH = {
|
|
Zerotorescue@0
|
22 canceled = true,
|
|
Zerotorescue@0
|
23 expired = true,
|
|
Zerotorescue@0
|
24 outbid = true,
|
|
Zerotorescue@0
|
25 success = true,
|
|
Zerotorescue@0
|
26 won = true,
|
|
Zerotorescue@0
|
27 },
|
|
Zerotorescue@0
|
28 normalAttachments = false,
|
|
Zerotorescue@0
|
29 normalMoney = true,
|
|
Zerotorescue@0
|
30 },
|
|
Zerotorescue@0
|
31 },
|
|
Zerotorescue@0
|
32 };
|
|
Zerotorescue@0
|
33
|
|
Zerotorescue@0
|
34 -- Register our saved variables NameSpace
|
|
Zerotorescue@0
|
35 self.db = MailOpener.db:RegisterNamespace("OpenAll", defaults);
|
|
Zerotorescue@0
|
36 end
|
|
Zerotorescue@0
|
37
|
|
Zerotorescue@0
|
38 function OpenAll:OnEnable()
|
|
Zerotorescue@0
|
39 self:RegisterEvent("MAIL_SHOW");
|
|
Zerotorescue@0
|
40
|
|
Zerotorescue@0
|
41 if not self.btnOpenAll then
|
|
Zerotorescue@0
|
42 -- Open all button
|
|
Zerotorescue@0
|
43 local button = CreateFrame("Button", "btnMailOpenerOpenAll", InboxFrame, "UIPanelButtonTemplate")
|
|
Zerotorescue@0
|
44 button:SetText("Open all")
|
|
Zerotorescue@0
|
45 button:SetHeight(26)
|
|
Zerotorescue@0
|
46 button:SetWidth(120)
|
|
Zerotorescue@0
|
47 button:SetPoint("BOTTOM", InboxFrame, "CENTER", -10, -165)
|
|
Zerotorescue@0
|
48 button:SetScript("OnClick", function() OpenAll:Open(true) end)
|
|
Zerotorescue@0
|
49
|
|
Zerotorescue@0
|
50 self.btnOpenAll = button;
|
|
Zerotorescue@0
|
51 end
|
|
Zerotorescue@0
|
52
|
|
Zerotorescue@0
|
53 self.btnOpenAll:Show();
|
|
Zerotorescue@0
|
54
|
|
Zerotorescue@0
|
55 if not self.timeLeftFrame then
|
|
Zerotorescue@0
|
56 -- If the timeLeftFrame doesn't exist we will have to build it
|
|
Zerotorescue@0
|
57
|
|
Zerotorescue@0
|
58 self:Debug("Building text frame");
|
|
Zerotorescue@0
|
59
|
|
Zerotorescue@0
|
60 local frame = CreateFrame("Button", "MailOpenerTimeLeftButton", InboxFrame);
|
|
Zerotorescue@0
|
61
|
|
Zerotorescue@0
|
62 -- Mail counter
|
|
Zerotorescue@0
|
63 frame.text = frame:CreateFontString("MailOpenerTimeLeftFrameMailCount", "OVERLAY", "GameFontHighlight");
|
|
Zerotorescue@0
|
64 frame.text:SetPoint("CENTER", MailFrame, "TOPLEFT", 40, -35);
|
|
Zerotorescue@0
|
65
|
|
Zerotorescue@0
|
66 -- Long time left indicator
|
|
Zerotorescue@0
|
67 frame.smallText = frame:CreateFontString("MailOpenerTimeLeftFrameTimeRemaining", "OVERLAY", "GameFontNormal");
|
|
Zerotorescue@0
|
68 frame.smallText:SetFont(GameFontHighlight:GetFont(), 11, "OUTLINE");
|
|
Zerotorescue@0
|
69 frame.smallText:SetPoint("TOPLEFT", MailFrame, "TOPLEFT", 75, -38);
|
|
Zerotorescue@0
|
70 frame.smallText:SetWidth(270);
|
|
Zerotorescue@0
|
71 frame.smallText:SetJustifyH("LEFT");
|
|
Zerotorescue@0
|
72 frame.smallText:SetJustifyV("MIDDLE");
|
|
Zerotorescue@0
|
73
|
|
Zerotorescue@0
|
74 frame:SetPoint("TOPLEFT", MailFrame, "TOPLEFT", 75, -38);
|
|
Zerotorescue@0
|
75 frame:SetWidth(270);
|
|
Zerotorescue@0
|
76 frame:SetHeight(35);
|
|
Zerotorescue@0
|
77 frame:SetScript("OnClick", function(self)
|
|
Zerotorescue@0
|
78 local timeRemainingUntillOpened = frame.smallText:GetText();
|
|
Zerotorescue@0
|
79 if timeRemainingUntillOpened then
|
|
Zerotorescue@0
|
80 MailOpener.currentPopupContents = "|cffffd700" .. timeRemainingUntillOpened .. "|r";
|
|
Zerotorescue@0
|
81
|
|
Zerotorescue@0
|
82 StaticPopup_Show("MailOpenerCopyWindow");
|
|
Zerotorescue@0
|
83 end
|
|
Zerotorescue@0
|
84 end);
|
|
Zerotorescue@0
|
85
|
|
Zerotorescue@0
|
86 self.timeLeftFrame = frame;
|
|
Zerotorescue@0
|
87 end
|
|
Zerotorescue@0
|
88
|
|
Zerotorescue@0
|
89 self.timeLeftFrame:Show();
|
|
Zerotorescue@0
|
90
|
|
Zerotorescue@3
|
91 -- Go through all children of the mail frame to find QA's element and hide it
|
|
Zerotorescue@0
|
92 local kids = { MailFrame:GetChildren() };
|
|
Zerotorescue@0
|
93
|
|
Zerotorescue@0
|
94 for _, child in ipairs(kids) do
|
|
Zerotorescue@0
|
95 if child and child.text then
|
|
Zerotorescue@0
|
96 child.text:Hide();
|
|
Zerotorescue@0
|
97 end
|
|
Zerotorescue@0
|
98 end
|
|
Zerotorescue@0
|
99
|
|
Zerotorescue@0
|
100 -- If we were toggling this module on while the mailbox is opened we must register all events again
|
|
Zerotorescue@0
|
101 if MailFrame:IsVisible() then
|
|
Zerotorescue@0
|
102 self:MAIL_SHOW();
|
|
Zerotorescue@0
|
103 end
|
|
Zerotorescue@0
|
104 end
|
|
Zerotorescue@0
|
105
|
|
Zerotorescue@0
|
106 function OpenAll:OnDisable()
|
|
Zerotorescue@0
|
107 self:UnregisterEvent("MAIL_SHOW");
|
|
Zerotorescue@0
|
108
|
|
Zerotorescue@0
|
109 if self.btnOpenAll then
|
|
Zerotorescue@0
|
110 self.btnOpenAll:Hide();
|
|
Zerotorescue@0
|
111 end
|
|
Zerotorescue@0
|
112
|
|
Zerotorescue@0
|
113 if self.timeLeftFrame then
|
|
Zerotorescue@0
|
114 self.timeLeftFrame:Hide();
|
|
Zerotorescue@0
|
115 end
|
|
Zerotorescue@0
|
116
|
|
Zerotorescue@0
|
117 if MailOpener.PostalEnabled then
|
|
Zerotorescue@0
|
118 -- Enable Postal's openers again
|
|
Zerotorescue@0
|
119
|
|
Zerotorescue@0
|
120 MailOpener:TogglePostalModule("OpenAll", true);
|
|
Zerotorescue@0
|
121 MailOpener:TogglePostalModule("Select", true);
|
|
Zerotorescue@0
|
122 end
|
|
Zerotorescue@0
|
123
|
|
Zerotorescue@0
|
124 -- Go through all children of the mail frame to find QA's elements and SHOW these
|
|
Zerotorescue@0
|
125 local kids = { MailFrame:GetChildren() };
|
|
Zerotorescue@0
|
126
|
|
Zerotorescue@0
|
127 for _, child in ipairs(kids) do
|
|
Zerotorescue@0
|
128 if child and child.text then
|
|
Zerotorescue@0
|
129 child.text:Show();
|
|
Zerotorescue@0
|
130 end
|
|
Zerotorescue@0
|
131 end
|
|
Zerotorescue@0
|
132
|
|
Zerotorescue@0
|
133 self:Stop();
|
|
Zerotorescue@0
|
134 end
|
|
Zerotorescue@0
|
135
|
|
Zerotorescue@0
|
136 function OpenAll:MAIL_SHOW()
|
|
Zerotorescue@0
|
137 self:Debug("MAIL_SHOW");
|
|
Zerotorescue@0
|
138
|
|
Zerotorescue@0
|
139 self:StopOpening(false);
|
|
Zerotorescue@0
|
140
|
|
Zerotorescue@0
|
141 if MailOpener.PostalEnabled then
|
|
Zerotorescue@0
|
142 -- Disable Postal's openers so we can do it ourselves
|
|
Zerotorescue@0
|
143
|
|
Zerotorescue@0
|
144 MailOpener:TogglePostalModule("OpenAll", false);
|
|
Zerotorescue@0
|
145 MailOpener:TogglePostalModule("Select", false);
|
|
Zerotorescue@0
|
146 end
|
|
Zerotorescue@0
|
147
|
|
Zerotorescue@0
|
148 -- Keep an eye for closing of the mailbox
|
|
Zerotorescue@0
|
149 self:RegisterEvent("MAIL_CLOSED", "Stop");
|
|
Zerotorescue@0
|
150 self:RegisterEvent("PLAYER_LEAVING_WORLD", "Stop");
|
|
Zerotorescue@0
|
151
|
|
Zerotorescue@0
|
152 -- Look if the mailbox is full
|
|
Zerotorescue@0
|
153 self:RegisterEvent("UI_ERROR_MESSAGE");
|
|
Zerotorescue@0
|
154 -- Only look again after bags updated
|
|
Zerotorescue@0
|
155 self:RegisterEvent("BAG_UPDATE");
|
|
Zerotorescue@0
|
156
|
|
Zerotorescue@0
|
157 -- We need to know when to start opening
|
|
Zerotorescue@0
|
158 self:RegisterMessage("MO_OPEN_MAIL", "Open");
|
|
Zerotorescue@0
|
159 self:RegisterMessage("MO_SERVER_SYNCED");
|
|
Zerotorescue@3
|
160 self:RegisterMessage("MO_MAIL_EMPTIED");
|
|
Zerotorescue@0
|
161
|
|
Zerotorescue@0
|
162 self:CancelTimer(self.tmrTimeRemaining, true);
|
|
Zerotorescue@0
|
163 self.tmrTimeRemaining = self:ScheduleRepeatingTimer("UpdateTimer", 1);
|
|
Zerotorescue@0
|
164 self:UpdateTimer();
|
|
Zerotorescue@0
|
165 end
|
|
Zerotorescue@0
|
166
|
|
Zerotorescue@0
|
167 function OpenAll:Stop()
|
|
Zerotorescue@0
|
168 self:Debug("Stop");
|
|
Zerotorescue@0
|
169
|
|
Zerotorescue@0
|
170 -- We shutdown, so nothing to do when the mailbox is closed anymore
|
|
Zerotorescue@0
|
171 self:UnregisterEvent("MAIL_CLOSED");
|
|
Zerotorescue@0
|
172 self:UnregisterEvent("PLAYER_LEAVING_WORLD");
|
|
Zerotorescue@0
|
173
|
|
Zerotorescue@0
|
174 -- We care about a full inventory just a little
|
|
Zerotorescue@0
|
175 self:UnregisterEvent("UI_ERROR_MESSAGE");
|
|
Zerotorescue@0
|
176 self:UnregisterEvent("BAG_UPDATE");
|
|
Zerotorescue@0
|
177
|
|
Zerotorescue@0
|
178 -- We no longer care
|
|
Zerotorescue@0
|
179 self:UnregisterMessage("MO_OPEN_MAIL");
|
|
Zerotorescue@0
|
180 self:UnregisterMessage("MO_SERVER_SYNCED");
|
|
Zerotorescue@3
|
181 self:UnregisterMessage("MO_MAIL_EMPTIED");
|
|
Zerotorescue@0
|
182
|
|
Zerotorescue@0
|
183 self:CancelTimer(self.tmrMailOpener, true);
|
|
Zerotorescue@0
|
184 self:CancelTimer(self.tmrTimeRemaining, true);
|
|
Zerotorescue@0
|
185
|
|
Zerotorescue@0
|
186 self:SetOpeningStatus(false);
|
|
Zerotorescue@0
|
187 end
|
|
Zerotorescue@0
|
188
|
|
Zerotorescue@0
|
189 function OpenAll:MO_SERVER_SYNCED()
|
|
Zerotorescue@0
|
190 self:Debug("MO_SERVER_SYNCED");
|
|
Zerotorescue@0
|
191
|
|
Zerotorescue@2
|
192 -- Stop opening now to prevent the opener from continue while Beancounter is counting
|
|
Zerotorescue@2
|
193 self:StopOpening(false);
|
|
Zerotorescue@2
|
194
|
|
Zerotorescue@0
|
195 lastSync = GetTime();
|
|
Zerotorescue@0
|
196
|
|
Zerotorescue@2
|
197 self:UpdateMailCount();
|
|
Zerotorescue@2
|
198 end
|
|
Zerotorescue@2
|
199
|
|
Zerotorescue@3
|
200 function OpenAll:MO_MAIL_EMPTIED()
|
|
Zerotorescue@3
|
201 -- A mail has been processed so we can process the next
|
|
Zerotorescue@2
|
202 continue = true;
|
|
Zerotorescue@2
|
203
|
|
Zerotorescue@3
|
204 self:UpdateTimer();
|
|
Zerotorescue@2
|
205 end
|
|
Zerotorescue@2
|
206
|
|
Zerotorescue@2
|
207 function OpenAll:UpdateMailCount()
|
|
Zerotorescue@0
|
208 local numItems, totalItems = GetInboxNumItems();
|
|
Zerotorescue@0
|
209
|
|
Zerotorescue@0
|
210 numCurrentMail = numItems;
|
|
Zerotorescue@0
|
211 numHiddenMail = ( totalItems - numItems );
|
|
Zerotorescue@0
|
212 end
|
|
Zerotorescue@0
|
213
|
|
Zerotorescue@0
|
214 function OpenAll:BAG_UPDATE()
|
|
Zerotorescue@0
|
215 -- If the bags are updated we should check if the inventory is full again
|
|
Zerotorescue@0
|
216 inventoryFull = false;
|
|
Zerotorescue@1
|
217 -- Replay sound
|
|
Zerotorescue@1
|
218 inventoryFullSoundPlayed = nil;
|
|
Zerotorescue@0
|
219 end
|
|
Zerotorescue@0
|
220
|
|
Zerotorescue@0
|
221 -- We registered this event to look for the inventory full error message because this is faster than counting the amount of items in the inventory all the time
|
|
Zerotorescue@0
|
222 function OpenAll:UI_ERROR_MESSAGE(e, errorMessage)
|
|
Zerotorescue@0
|
223 if errorMessage == ERR_INV_FULL then
|
|
Zerotorescue@0
|
224 -- Inventory is full.
|
|
Zerotorescue@0
|
225
|
|
Zerotorescue@0
|
226 if not inventoryFull then
|
|
Zerotorescue@0
|
227 inventoryFull = true;
|
|
Zerotorescue@0
|
228
|
|
Zerotorescue@0
|
229 -- Play the sound
|
|
Zerotorescue@0
|
230 if MailOpener.db.profile.notifications.bagsFullSound and (not MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce or not inventoryFullSoundPlayed) then
|
|
Zerotorescue@0
|
231 PlaySoundFile(MailOpener.db.profile.notifications.bagsFullSoundFile);
|
|
Zerotorescue@0
|
232 inventoryFullSoundPlayed = true;
|
|
Zerotorescue@0
|
233 end
|
|
Zerotorescue@0
|
234 end
|
|
Zerotorescue@0
|
235
|
|
Zerotorescue@0
|
236 -- Continue opening mail (we still want to open gold mail)
|
|
Zerotorescue@0
|
237 continue = true;
|
|
Zerotorescue@0
|
238 elseif errorMessage == ERR_ITEM_MAX_COUNT or errorMessage == ERR_MAIL_DATABASE_ERROR then
|
|
Zerotorescue@0
|
239 -- Can't carry more of this item OR mail database error
|
|
Zerotorescue@0
|
240
|
|
Zerotorescue@0
|
241 -- Continue opening mail (we still want to retrieve other items or gold)
|
|
Zerotorescue@0
|
242 continue = true;
|
|
Zerotorescue@0
|
243 end
|
|
Zerotorescue@0
|
244 end
|
|
Zerotorescue@0
|
245
|
|
Zerotorescue@0
|
246 function OpenAll:Open(forced)
|
|
Zerotorescue@0
|
247 self:Debug("Open");
|
|
Zerotorescue@0
|
248
|
|
Zerotorescue@0
|
249 if not opening or forced == true then
|
|
Zerotorescue@0
|
250 local numItems, totalItems = GetInboxNumItems();
|
|
Zerotorescue@0
|
251 -- Start at the end, add one because OpenNext will take it away again
|
|
Zerotorescue@0
|
252 local newMailItemIndex = ( ( numItems or 0 ) + 1 );
|
|
Zerotorescue@0
|
253
|
|
Zerotorescue@0
|
254 if newMailItemIndex > 1 then
|
|
Zerotorescue@0
|
255 self:Debug("Open succes");
|
|
Zerotorescue@0
|
256
|
|
Zerotorescue@0
|
257 -- Stop the previous opening and restart
|
|
Zerotorescue@0
|
258 if forced == true then
|
|
Zerotorescue@0
|
259 self:StopOpening(false); -- this is not a "simple" stop, so also reset inventory full warning
|
|
Zerotorescue@0
|
260 else
|
|
Zerotorescue@0
|
261 self:StopOpening(true); -- forced is false - automated action - simple reset, skip inventory full reset to avoid sound spam
|
|
Zerotorescue@0
|
262 end
|
|
Zerotorescue@0
|
263
|
|
Zerotorescue@0
|
264 -- Update the caret
|
|
Zerotorescue@0
|
265 MAIL_ITEM_INDEX = newMailItemIndex;
|
|
Zerotorescue@0
|
266
|
|
Zerotorescue@0
|
267 -- We're now going to be busy again
|
|
Zerotorescue@0
|
268 self:SetOpeningStatus(true);
|
|
Zerotorescue@0
|
269
|
|
Zerotorescue@0
|
270 -- Open the next mail in line
|
|
Zerotorescue@0
|
271 self:OpenNext();
|
|
Zerotorescue@0
|
272 else
|
|
Zerotorescue@0
|
273 if MailOpener.db.profile.notifications.mailboxIsEmpty then
|
|
Zerotorescue@0
|
274 print("|cffff0000There is currently no mail available.|r");
|
|
Zerotorescue@0
|
275 end
|
|
Zerotorescue@0
|
276
|
|
Zerotorescue@0
|
277 self:Debug("MO_OPEN_COMPLETE");
|
|
Zerotorescue@0
|
278
|
|
Zerotorescue@0
|
279 -- Report that we're all done
|
|
Zerotorescue@0
|
280 self:SendMessage("MO_OPEN_COMPLETE");
|
|
Zerotorescue@0
|
281 end
|
|
Zerotorescue@0
|
282 end
|
|
Zerotorescue@0
|
283 end
|
|
Zerotorescue@0
|
284
|
|
Zerotorescue@0
|
285 -- Return the type of mail a message subject is
|
|
Zerotorescue@0
|
286 local knownAHSubjectPatterns = {
|
|
Zerotorescue@0
|
287 canceled = AUCTION_REMOVED_MAIL_SUBJECT:replace("%s", ""),
|
|
Zerotorescue@0
|
288 expired = AUCTION_EXPIRED_MAIL_SUBJECT:replace("%s", ""),
|
|
Zerotorescue@0
|
289 outbid = AUCTION_OUTBID_MAIL_SUBJECT:replace("%s", ""),
|
|
Zerotorescue@0
|
290 success = AUCTION_SOLD_MAIL_SUBJECT:replace("%s", ""),
|
|
Zerotorescue@0
|
291 won = AUCTION_WON_MAIL_SUBJECT:replace("%s", ""),
|
|
Zerotorescue@0
|
292 };
|
|
Zerotorescue@0
|
293 function OpenAll:GetAuctionMailType(subject)
|
|
Zerotorescue@0
|
294 if subject then
|
|
Zerotorescue@0
|
295 -- Check if any of our patterns match, sorted by most likely matches first (if one is true the rest shouldn't be evaluated)
|
|
Zerotorescue@0
|
296 if subject:find(knownAHSubjectPatterns.expired) then
|
|
Zerotorescue@0
|
297 return "expired";
|
|
Zerotorescue@0
|
298 elseif subject:find(knownAHSubjectPatterns.success) then
|
|
Zerotorescue@0
|
299 return "success";
|
|
Zerotorescue@0
|
300 elseif subject:find(knownAHSubjectPatterns.won) then
|
|
Zerotorescue@0
|
301 return "won";
|
|
Zerotorescue@0
|
302 elseif subject:find(knownAHSubjectPatterns.canceled) then
|
|
Zerotorescue@0
|
303 return "canceled";
|
|
Zerotorescue@0
|
304 elseif subject:find(knownAHSubjectPatterns.outbid) then
|
|
Zerotorescue@0
|
305 return "outbid";
|
|
Zerotorescue@0
|
306 end
|
|
Zerotorescue@0
|
307 end
|
|
Zerotorescue@0
|
308
|
|
Zerotorescue@0
|
309 return; -- not auction mail
|
|
Zerotorescue@0
|
310 end
|
|
Zerotorescue@0
|
311
|
|
Zerotorescue@0
|
312 function OpenAll:OpenMail(index)
|
|
Zerotorescue@0
|
313 if index > 0 then
|
|
Zerotorescue@0
|
314 -- LUA arrays start at 1, so mail with index 0 doesn't exist, so we're finished
|
|
Zerotorescue@0
|
315
|
|
Zerotorescue@0
|
316 local sender, subject, gold, cod, _, items, _, _, _, _, isGM = select(3, GetInboxHeaderInfo(index));
|
|
Zerotorescue@0
|
317 local auctionMailType = self:GetAuctionMailType(subject);
|
|
Zerotorescue@0
|
318
|
|
Zerotorescue@0
|
319 if isGM then
|
|
Zerotorescue@0
|
320 -- GM Mail
|
|
Zerotorescue@0
|
321 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.GMMail then
|
|
Zerotorescue@0
|
322 print("Skipping " .. index .. ": " .. subject .. " (GM mail)");
|
|
Zerotorescue@0
|
323 end
|
|
Zerotorescue@0
|
324
|
|
Zerotorescue@0
|
325 self:OpenNext();
|
|
Zerotorescue@0
|
326
|
|
Zerotorescue@0
|
327 return;
|
|
Zerotorescue@0
|
328 elseif cod and cod > 0 then
|
|
Zerotorescue@0
|
329 -- Cost on delivery
|
|
Zerotorescue@0
|
330 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.COD then
|
|
Zerotorescue@0
|
331 print("Skipping " .. index .. ": " .. subject .. " (C.O.D.)");
|
|
Zerotorescue@0
|
332 end
|
|
Zerotorescue@0
|
333
|
|
Zerotorescue@0
|
334 self:OpenNext();
|
|
Zerotorescue@0
|
335
|
|
Zerotorescue@0
|
336 return;
|
|
Zerotorescue@0
|
337 elseif ((gold and gold > 0) or (items and items > 0)) then
|
|
Zerotorescue@0
|
338 -- Mail with some sort of attachments
|
|
Zerotorescue@0
|
339
|
|
Zerotorescue@0
|
340 local slotsAvailable = 0;
|
|
Zerotorescue@0
|
341 if self.db.profile.keepFreeSpace > 0 then
|
|
Zerotorescue@0
|
342 for bag = 0, 4 do
|
|
Zerotorescue@0
|
343 local numberOfFreeSlots = GetContainerNumFreeSlots(bag);
|
|
Zerotorescue@0
|
344 slotsAvailable = ( slotsAvailable + numberOfFreeSlots );
|
|
Zerotorescue@0
|
345 end
|
|
Zerotorescue@0
|
346 end
|
|
Zerotorescue@0
|
347
|
|
Zerotorescue@0
|
348 if inventoryFull and not MailOpener.db.profile.general.continueOpeningStackableItems and items and items > 0 then
|
|
Zerotorescue@0
|
349 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.inventoryFull then
|
|
Zerotorescue@0
|
350 print("Skipping " .. index .. ": " .. subject .. " (inventory is full)");
|
|
Zerotorescue@0
|
351 end
|
|
Zerotorescue@0
|
352
|
|
Zerotorescue@0
|
353 self:OpenNext();
|
|
Zerotorescue@0
|
354
|
|
Zerotorescue@0
|
355 return;
|
|
Zerotorescue@0
|
356 elseif self.db.profile.keepFreeSpace > 0 and items and ( slotsAvailable - items ) < self.db.profile.keepFreeSpace then
|
|
Zerotorescue@0
|
357 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit then
|
|
Zerotorescue@0
|
358 print("Skipping " .. index .. ": " .. subject .. " (keep free space limit)");
|
|
Zerotorescue@0
|
359 end
|
|
Zerotorescue@0
|
360
|
|
Zerotorescue@0
|
361 self:OpenNext();
|
|
Zerotorescue@0
|
362
|
|
Zerotorescue@0
|
363 return;
|
|
Zerotorescue@0
|
364 else
|
|
Zerotorescue@0
|
365 -- This string will hold the mailtype, MailOpener.db.profile.notifications.skipped/processed[mailType] will be checked if this should be announced
|
|
Zerotorescue@0
|
366 local mailType = "other";
|
|
Zerotorescue@0
|
367
|
|
Zerotorescue@0
|
368 if not auctionMailType then
|
|
Zerotorescue@0
|
369 -- This is a normal mail
|
|
Zerotorescue@0
|
370
|
|
Zerotorescue@0
|
371 if gold and gold > 0 then
|
|
Zerotorescue@0
|
372 mailType = "normalGoldMail";
|
|
Zerotorescue@0
|
373 elseif items and items > 0 then
|
|
Zerotorescue@0
|
374 mailType = "normalItemsMail";
|
|
Zerotorescue@0
|
375 end
|
|
Zerotorescue@0
|
376 else
|
|
Zerotorescue@0
|
377 -- This is an auction house mail
|
|
Zerotorescue@0
|
378
|
|
Zerotorescue@0
|
379 mailType = "AH" .. auctionMailType;
|
|
Zerotorescue@0
|
380 end
|
|
Zerotorescue@0
|
381
|
|
Zerotorescue@0
|
382 if not self.db.profile.filter.normalMoney and mailType == "normalGoldMail" then
|
|
Zerotorescue@0
|
383 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
384 print("Skipping " .. index .. ": " .. subject .. " (normal mail with gold)");
|
|
Zerotorescue@0
|
385 end
|
|
Zerotorescue@0
|
386
|
|
Zerotorescue@0
|
387 self:OpenNext();
|
|
Zerotorescue@0
|
388
|
|
Zerotorescue@0
|
389 return;
|
|
Zerotorescue@0
|
390 elseif not self.db.profile.filter.normalAttachments and mailType == "normalItemsMail" then
|
|
Zerotorescue@0
|
391 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
392 print("Skipping " .. index .. ": " .. subject .. " (normal mail with attachments)");
|
|
Zerotorescue@0
|
393 end
|
|
Zerotorescue@0
|
394
|
|
Zerotorescue@0
|
395 self:OpenNext();
|
|
Zerotorescue@0
|
396
|
|
Zerotorescue@0
|
397 return;
|
|
Zerotorescue@0
|
398 elseif not self.db.profile.filter.AH.expired and mailType == "AHexpired" then
|
|
Zerotorescue@0
|
399 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
400 print("Skipping " .. index .. ": " .. subject .. " (expired auction)");
|
|
Zerotorescue@0
|
401 end
|
|
Zerotorescue@0
|
402
|
|
Zerotorescue@0
|
403 self:OpenNext();
|
|
Zerotorescue@0
|
404
|
|
Zerotorescue@0
|
405 return;
|
|
Zerotorescue@0
|
406 elseif not self.db.profile.filter.AH.success and mailType == "AHsuccess" then
|
|
Zerotorescue@0
|
407 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
408 print("Skipping " .. index .. ": " .. subject .. " (successful auction)");
|
|
Zerotorescue@0
|
409 end
|
|
Zerotorescue@0
|
410
|
|
Zerotorescue@0
|
411 self:OpenNext();
|
|
Zerotorescue@0
|
412
|
|
Zerotorescue@0
|
413 return;
|
|
Zerotorescue@0
|
414 elseif not self.db.profile.filter.AH.won and mailType == "AHwon" then
|
|
Zerotorescue@0
|
415 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
416 print("Skipping " .. index .. ": " .. subject .. " (auction won)");
|
|
Zerotorescue@0
|
417 end
|
|
Zerotorescue@0
|
418
|
|
Zerotorescue@0
|
419 self:OpenNext();
|
|
Zerotorescue@0
|
420
|
|
Zerotorescue@0
|
421 return;
|
|
Zerotorescue@0
|
422 elseif not self.db.profile.filter.AH.canceled and mailType == "AHcanceled" then
|
|
Zerotorescue@0
|
423 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
424 print("Skipping " .. index .. ": " .. subject .. " (canceled auction)");
|
|
Zerotorescue@0
|
425 end
|
|
Zerotorescue@0
|
426
|
|
Zerotorescue@0
|
427 self:OpenNext();
|
|
Zerotorescue@0
|
428
|
|
Zerotorescue@0
|
429 return;
|
|
Zerotorescue@0
|
430 elseif not self.db.profile.filter.AH.outbid and mailType == "AHoutbid" then
|
|
Zerotorescue@0
|
431 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
|
|
Zerotorescue@0
|
432 print("Skipping " .. index .. ": " .. subject .. " (outbid on auction)");
|
|
Zerotorescue@0
|
433 end
|
|
Zerotorescue@0
|
434
|
|
Zerotorescue@0
|
435 self:OpenNext();
|
|
Zerotorescue@0
|
436
|
|
Zerotorescue@0
|
437 return;
|
|
Zerotorescue@0
|
438 else
|
|
Zerotorescue@0
|
439 continue = false;
|
|
Zerotorescue@3
|
440
|
|
Zerotorescue@3
|
441 self:Debug("MO_OPENING_MAIL");
|
|
Zerotorescue@0
|
442
|
|
Zerotorescue@2
|
443 -- Notifiy other modules of opening
|
|
Zerotorescue@2
|
444 self:SendMessage("MO_OPENING_MAIL");
|
|
Zerotorescue@2
|
445
|
|
Zerotorescue@0
|
446 -- Open current mail
|
|
Zerotorescue@0
|
447 AutoLootMailItem(index);
|
|
Zerotorescue@0
|
448
|
|
Zerotorescue@0
|
449 if MailOpener.db.profile.notifications.processed.all and MailOpener.db.profile.notifications.processed[mailType] then
|
|
Zerotorescue@0
|
450 if gold and gold > 0 then
|
|
Zerotorescue@0
|
451 print("Processing " .. index .. ": " .. subject .. " (" .. MailOpener:FormatMoney(gold) .. ")");
|
|
Zerotorescue@0
|
452 else
|
|
Zerotorescue@0
|
453 print("Processing " .. index .. ": " .. subject);
|
|
Zerotorescue@0
|
454 end
|
|
Zerotorescue@0
|
455 end
|
|
Zerotorescue@0
|
456
|
|
Zerotorescue@0
|
457 -- And prepare for the next
|
|
Zerotorescue@0
|
458 self.tmrMailOpener = self:ScheduleTimer("OpenNext", self.db.profile.speed);
|
|
Zerotorescue@0
|
459 end
|
|
Zerotorescue@0
|
460 end
|
|
Zerotorescue@0
|
461 else
|
|
Zerotorescue@0
|
462 -- Unknown, probably just text
|
|
Zerotorescue@0
|
463 if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.other then
|
|
Zerotorescue@0
|
464 if subject then
|
|
Zerotorescue@0
|
465 print("Skipping " .. index .. ": " .. subject);
|
|
Zerotorescue@0
|
466 else
|
|
Zerotorescue@0
|
467 print("Skipping " .. index);
|
|
Zerotorescue@0
|
468 end
|
|
Zerotorescue@0
|
469 end
|
|
Zerotorescue@0
|
470
|
|
Zerotorescue@0
|
471 self:OpenNext();
|
|
Zerotorescue@0
|
472 end
|
|
Zerotorescue@0
|
473 else
|
|
Zerotorescue@0
|
474 -- Finished!
|
|
Zerotorescue@0
|
475 if MailOpener.db.profile.notifications.finishedCurrentBatch then
|
|
Zerotorescue@0
|
476 print("Finished opening the current batch.");
|
|
Zerotorescue@0
|
477 end
|
|
Zerotorescue@0
|
478
|
|
Zerotorescue@0
|
479 self:SetOpeningStatus(false);
|
|
Zerotorescue@3
|
480
|
|
Zerotorescue@0
|
481 self:Debug("MO_OPEN_COMPLETE");
|
|
Zerotorescue@0
|
482
|
|
Zerotorescue@0
|
483 -- Report that we're all done
|
|
Zerotorescue@0
|
484 self:SendMessage("MO_OPEN_COMPLETE");
|
|
Zerotorescue@0
|
485 end
|
|
Zerotorescue@0
|
486 end
|
|
Zerotorescue@0
|
487
|
|
Zerotorescue@0
|
488 function OpenAll:OpenNext()
|
|
Zerotorescue@0
|
489 if continue then
|
|
Zerotorescue@0
|
490 -- If the previous mail was opened successful, open the next
|
|
Zerotorescue@0
|
491
|
|
Zerotorescue@0
|
492 -- Next mail in line
|
|
Zerotorescue@0
|
493 MAIL_ITEM_INDEX = ( MAIL_ITEM_INDEX - 1 );
|
|
Zerotorescue@0
|
494
|
|
Zerotorescue@0
|
495 -- Open it
|
|
Zerotorescue@0
|
496 self:OpenMail(MAIL_ITEM_INDEX);
|
|
Zerotorescue@0
|
497 else
|
|
Zerotorescue@0
|
498 -- Try again at the next interval
|
|
Zerotorescue@0
|
499
|
|
Zerotorescue@0
|
500 self.tmrMailOpener = self:ScheduleTimer("OpenNext", self.db.profile.speed);
|
|
Zerotorescue@0
|
501 end
|
|
Zerotorescue@0
|
502 end
|
|
Zerotorescue@0
|
503
|
|
Zerotorescue@2
|
504 function OpenAll:Continue()
|
|
Zerotorescue@2
|
505 continue = true;
|
|
Zerotorescue@2
|
506 self:OpenNext();
|
|
Zerotorescue@2
|
507 end
|
|
Zerotorescue@2
|
508
|
|
Zerotorescue@0
|
509 local mailRemainingPatterns = {
|
|
Zerotorescue@3
|
510 minutesSeconds = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes and |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds).";
|
|
Zerotorescue@3
|
511 minutes = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes (next refresh in |cffffffff%d|r seconds).";
|
|
Zerotorescue@3
|
512 seconds = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds).";
|
|
Zerotorescue@3
|
513 nextRefresh = "|cffffffff%d|r/|cffffffff%d|r mail remaining, next refresh in |cffffffff%d|r seconds.";
|
|
Zerotorescue@0
|
514 waitingBatch = "|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for something from the current batch to be opened...";
|
|
Zerotorescue@0
|
515 waitingSync = "|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for the next mailbox refresh...";
|
|
Zerotorescue@0
|
516 soon = "|cffffffff%d|r/|cffffffff%d|r mail remaining - everything will be opened soon...";
|
|
Zerotorescue@0
|
517 };
|
|
Zerotorescue@0
|
518
|
|
Zerotorescue@0
|
519 function OpenAll:UpdateTimer()
|
|
Zerotorescue@0
|
520 if lastSync then
|
|
Zerotorescue@3
|
521 self:UpdateMailCount();
|
|
Zerotorescue@3
|
522
|
|
Zerotorescue@0
|
523 -- Calculate the total amount of mail waiting
|
|
Zerotorescue@0
|
524 local numTotalMail = ( numHiddenMail + numCurrentMail );
|
|
Zerotorescue@0
|
525
|
|
Zerotorescue@0
|
526 -- Resize the font based on mail left so the counter always fits perfectly
|
|
Zerotorescue@0
|
527 if numTotalMail < 100 then
|
|
Zerotorescue@0
|
528 self.timeLeftFrame.text:SetFont(GameFontHighlight:GetFont(), 30, "THICKOUTLINE");
|
|
Zerotorescue@0
|
529 elseif numTotalMail < 1000 then
|
|
Zerotorescue@0
|
530 self.timeLeftFrame.text:SetFont(GameFontHighlight:GetFont(), 24, "THICKOUTLINE");
|
|
Zerotorescue@0
|
531 else
|
|
Zerotorescue@0
|
532 self.timeLeftFrame.text:SetFont(GameFontHighlight:GetFont(), 18, "THICKOUTLINE");
|
|
Zerotorescue@0
|
533 end
|
|
Zerotorescue@0
|
534 self.timeLeftFrame.text:SetText(numTotalMail);
|
|
Zerotorescue@3
|
535
|
|
Zerotorescue@3
|
536 -- Calculate the next server sync based on the last server sync plus sync interval
|
|
Zerotorescue@3
|
537 local nextSync = ( lastSync + 61 );
|
|
Zerotorescue@0
|
538
|
|
Zerotorescue@3
|
539 -- Calculate the timer remaining untill the next sync
|
|
Zerotorescue@3
|
540 local timeRemaining = floor( nextSync - GetTime() );
|
|
Zerotorescue@3
|
541
|
|
Zerotorescue@3
|
542 if numHiddenMail > 0 or timeRemaining > 0 then
|
|
Zerotorescue@3
|
543 -- If there is still mail being hidden or the timer is still know, display stuff
|
|
Zerotorescue@0
|
544
|
|
Zerotorescue@0
|
545 -- If the next sync was already due, our nextSync calculation was wrong and we must wait a little longer (lag?)
|
|
Zerotorescue@0
|
546 local syncTimeOut = false;
|
|
Zerotorescue@0
|
547 -- If time remaining is below 0, next sync should be soon
|
|
Zerotorescue@0
|
548 if timeRemaining < 0 then
|
|
Zerotorescue@0
|
549 timeRemaining = 0;
|
|
Zerotorescue@0
|
550 syncTimeOut = true;
|
|
Zerotorescue@0
|
551 end
|
|
Zerotorescue@0
|
552
|
|
Zerotorescue@0
|
553 -- Calculate the amount of server syncs required to open all mail
|
|
Zerotorescue@0
|
554 local syncsRequired = ceil( numHiddenMail / 50 );
|
|
Zerotorescue@0
|
555 -- Calculate the time required to execute all these syncs
|
|
Zerotorescue@0
|
556 local timeRequired = ( ( syncsRequired - 1 ) * 61 ) + timeRemaining;
|
|
Zerotorescue@0
|
557
|
|
Zerotorescue@0
|
558 local minutes = floor( timeRequired / 60 );
|
|
Zerotorescue@0
|
559 local seconds = floor( timeRequired % 60 );
|
|
Zerotorescue@0
|
560
|
|
Zerotorescue@0
|
561 local remainingText;
|
|
Zerotorescue@0
|
562 if syncTimeOut then
|
|
Zerotorescue@3
|
563 -- Previous server sync was expected earlier, notify user
|
|
Zerotorescue@3
|
564
|
|
Zerotorescue@0
|
565 if numCurrentMail == 50 then
|
|
Zerotorescue@3
|
566 -- Sync couldn't occur because we were still waiting for the current batch to be opened
|
|
Zerotorescue@0
|
567 remainingText = format(mailRemainingPatterns.waitingBatch, numCurrentMail, numTotalMail);
|
|
Zerotorescue@0
|
568 else
|
|
Zerotorescue@0
|
569 remainingText = format(mailRemainingPatterns.waitingSync, numCurrentMail, numTotalMail);
|
|
Zerotorescue@0
|
570 end
|
|
Zerotorescue@3
|
571 elseif numHiddenMail == 0 then
|
|
Zerotorescue@3
|
572 -- If no hidden mail is remaining, only show the timer for as long as we can be sure
|
|
Zerotorescue@3
|
573
|
|
Zerotorescue@3
|
574 remainingText = format(mailRemainingPatterns.nextRefresh, numCurrentMail, numTotalMail, timeRemaining);
|
|
Zerotorescue@0
|
575 elseif minutes ~= 0 then
|
|
Zerotorescue@0
|
576 if seconds ~= 0 then
|
|
Zerotorescue@0
|
577 remainingText = format(mailRemainingPatterns.minutesSeconds, numCurrentMail, numTotalMail, minutes, seconds, timeRemaining);
|
|
Zerotorescue@0
|
578 else
|
|
Zerotorescue@0
|
579 remainingText = format(mailRemainingPatterns.minutes, numCurrentMail, numTotalMail, minutes, timeRemaining);
|
|
Zerotorescue@0
|
580 end
|
|
Zerotorescue@0
|
581 elseif seconds ~= 0 then
|
|
Zerotorescue@0
|
582 remainingText = format(mailRemainingPatterns.seconds, numCurrentMail, numTotalMail, seconds, timeRemaining);
|
|
Zerotorescue@0
|
583 else
|
|
Zerotorescue@0
|
584 remainingText = format(mailRemainingPatterns.soon, numCurrentMail, numTotalMail);
|
|
Zerotorescue@0
|
585 end
|
|
Zerotorescue@0
|
586
|
|
Zerotorescue@0
|
587 self.timeLeftFrame.smallText:SetText(remainingText);
|
|
Zerotorescue@3
|
588 else
|
|
Zerotorescue@0
|
589 self.timeLeftFrame.smallText:SetText("");
|
|
Zerotorescue@0
|
590 end
|
|
Zerotorescue@0
|
591 end
|
|
Zerotorescue@0
|
592 end
|
|
Zerotorescue@0
|
593
|
|
Zerotorescue@0
|
594 function OpenAll:StopOpening(simple)
|
|
Zerotorescue@2
|
595 -- Stop opener timer
|
|
Zerotorescue@2
|
596 self:CancelTimer(self.tmrMailOpener, true);
|
|
Zerotorescue@2
|
597
|
|
Zerotorescue@0
|
598 if not simple then
|
|
Zerotorescue@2
|
599 -- A simple stop is an automated stop, an advance stop is one manually or after a sever sync
|
|
Zerotorescue@2
|
600
|
|
Zerotorescue@0
|
601 -- Recheck inventory full
|
|
Zerotorescue@0
|
602 inventoryFull = false;
|
|
Zerotorescue@0
|
603 -- Replay sound
|
|
Zerotorescue@0
|
604 inventoryFullSoundPlayed = nil;
|
|
Zerotorescue@0
|
605 end
|
|
Zerotorescue@0
|
606
|
|
Zerotorescue@0
|
607 -- Reset opener position
|
|
Zerotorescue@0
|
608 MAIL_ITEM_INDEX = 0;
|
|
Zerotorescue@0
|
609 -- Stopped opening, so allow to continue
|
|
Zerotorescue@0
|
610 continue = true;
|
|
Zerotorescue@0
|
611 self:SetOpeningStatus(false);
|
|
Zerotorescue@0
|
612 end
|
|
Zerotorescue@0
|
613
|
|
Zerotorescue@0
|
614 function OpenAll:SetOpeningStatus(openingStatus)
|
|
Zerotorescue@0
|
615 opening = openingStatus;
|
|
Zerotorescue@0
|
616
|
|
Zerotorescue@0
|
617 if openingStatus then
|
|
Zerotorescue@0
|
618 self.btnOpenAll:SetText("Opening...");
|
|
Zerotorescue@0
|
619 else
|
|
Zerotorescue@0
|
620 self.btnOpenAll:SetText("Open all");
|
|
Zerotorescue@0
|
621 end
|
|
Zerotorescue@0
|
622 end
|
|
Zerotorescue@0
|
623
|
|
Zerotorescue@0
|
624 function OpenAll:GetOptionsGroup()
|
|
Zerotorescue@0
|
625 local configGroup = {
|
|
Zerotorescue@0
|
626 order = 300,
|
|
Zerotorescue@0
|
627 type = "group",
|
|
Zerotorescue@0
|
628 name = "Open All",
|
|
Zerotorescue@0
|
629 desc = "Change open all settings.",
|
|
Zerotorescue@0
|
630 args = {
|
|
Zerotorescue@0
|
631 filters = {
|
|
Zerotorescue@0
|
632 order = 10,
|
|
Zerotorescue@0
|
633 type = "group",
|
|
Zerotorescue@0
|
634 inline = true,
|
|
Zerotorescue@0
|
635 name = "Filters",
|
|
Zerotorescue@0
|
636 args = {
|
|
Zerotorescue@0
|
637 description = {
|
|
Zerotorescue@0
|
638 order = 10,
|
|
Zerotorescue@0
|
639 type = "description",
|
|
Zerotorescue@0
|
640 name = "Toggle which mail the opener should autoloot.",
|
|
Zerotorescue@0
|
641 },
|
|
Zerotorescue@0
|
642 AHHeader = {
|
|
Zerotorescue@0
|
643 order = 15,
|
|
Zerotorescue@0
|
644 type = "header",
|
|
Zerotorescue@0
|
645 name = "Auction House Mail",
|
|
Zerotorescue@0
|
646 },
|
|
Zerotorescue@0
|
647 canceled = {
|
|
Zerotorescue@0
|
648 order = 20,
|
|
Zerotorescue@0
|
649 type = "toggle",
|
|
Zerotorescue@0
|
650 name = "Open all |cfffed000auction canceled|r mail",
|
|
Zerotorescue@0
|
651 desc = "Automatically loot all auction canceled mails from the auction house.",
|
|
Zerotorescue@0
|
652 set = function(i, v) self.db.profile.filter.AH.canceled = v; end,
|
|
Zerotorescue@0
|
653 get = function() return self.db.profile.filter.AH.canceled; end,
|
|
Zerotorescue@0
|
654 width = "double",
|
|
Zerotorescue@0
|
655 },
|
|
Zerotorescue@0
|
656 expired = {
|
|
Zerotorescue@0
|
657 order = 21,
|
|
Zerotorescue@0
|
658 type = "toggle",
|
|
Zerotorescue@0
|
659 name = "Open all |cfffed000auction expired|r mail",
|
|
Zerotorescue@0
|
660 desc = "Automatically loot all auction canceled mails from the auction house.",
|
|
Zerotorescue@0
|
661 set = function(i, v) self.db.profile.filter.AH.expired = v; end,
|
|
Zerotorescue@0
|
662 get = function() return self.db.profile.filter.AH.expired; end,
|
|
Zerotorescue@0
|
663 width = "double",
|
|
Zerotorescue@0
|
664 },
|
|
Zerotorescue@0
|
665 outbid = {
|
|
Zerotorescue@0
|
666 order = 22,
|
|
Zerotorescue@0
|
667 type = "toggle",
|
|
Zerotorescue@0
|
668 name = "Open all |cfffed000outbid on|r mail",
|
|
Zerotorescue@0
|
669 desc = "Automatically loot all auction outbid mails from the auction house.",
|
|
Zerotorescue@0
|
670 set = function(i, v) self.db.profile.filter.AH.outbid = v; end,
|
|
Zerotorescue@0
|
671 get = function() return self.db.profile.filter.AH.outbid; end,
|
|
Zerotorescue@0
|
672 width = "double",
|
|
Zerotorescue@0
|
673 },
|
|
Zerotorescue@0
|
674 success = {
|
|
Zerotorescue@0
|
675 order = 23,
|
|
Zerotorescue@0
|
676 type = "toggle",
|
|
Zerotorescue@0
|
677 name = "Open all |cfffed000auction successful|r mail",
|
|
Zerotorescue@0
|
678 desc = "Automatically loot all auction successful mails from the auction house.",
|
|
Zerotorescue@0
|
679 set = function(i, v) self.db.profile.filter.AH.success = v; end,
|
|
Zerotorescue@0
|
680 get = function() return self.db.profile.filter.AH.success; end,
|
|
Zerotorescue@0
|
681 width = "double",
|
|
Zerotorescue@0
|
682 },
|
|
Zerotorescue@0
|
683 won = {
|
|
Zerotorescue@0
|
684 order = 24,
|
|
Zerotorescue@0
|
685 type = "toggle",
|
|
Zerotorescue@0
|
686 name = "Open all |cfffed000auction won|r mail",
|
|
Zerotorescue@0
|
687 desc = "Automatically loot all auction won mails from the auction house.",
|
|
Zerotorescue@0
|
688 set = function(i, v) self.db.profile.filter.AH.won = v; end,
|
|
Zerotorescue@0
|
689 get = function() return self.db.profile.filter.AH.won; end,
|
|
Zerotorescue@0
|
690 width = "double",
|
|
Zerotorescue@0
|
691 },
|
|
Zerotorescue@0
|
692 normalHeader = {
|
|
Zerotorescue@0
|
693 order = 30,
|
|
Zerotorescue@0
|
694 type = "header",
|
|
Zerotorescue@0
|
695 name = "Remaining Mail",
|
|
Zerotorescue@0
|
696 },
|
|
Zerotorescue@0
|
697 normalAttachments = {
|
|
Zerotorescue@0
|
698 order = 40,
|
|
Zerotorescue@0
|
699 type = "toggle",
|
|
Zerotorescue@0
|
700 name = "Other mail with |cfffed000attachments|r",
|
|
Zerotorescue@0
|
701 desc = "Automatically loot all mails with attachments not sent by any of the above sources.",
|
|
Zerotorescue@0
|
702 set = function(i, v) self.db.profile.filter.normalAttachments = v; end,
|
|
Zerotorescue@0
|
703 get = function() return self.db.profile.filter.normalAttachments; end,
|
|
Zerotorescue@0
|
704 width = "double",
|
|
Zerotorescue@0
|
705 },
|
|
Zerotorescue@0
|
706 normalMoney = {
|
|
Zerotorescue@0
|
707 order = 50,
|
|
Zerotorescue@0
|
708 type = "toggle",
|
|
Zerotorescue@0
|
709 name = "Other mail with |cfffed000gold|r",
|
|
Zerotorescue@0
|
710 desc = "Automatically loot all mails with gold not sent by any of the above sources.",
|
|
Zerotorescue@0
|
711 set = function(i, v) self.db.profile.filter.normalMoney = v; end,
|
|
Zerotorescue@0
|
712 get = function() return self.db.profile.filter.normalMoney; end,
|
|
Zerotorescue@0
|
713 width = "double",
|
|
Zerotorescue@0
|
714 },
|
|
Zerotorescue@0
|
715 },
|
|
Zerotorescue@0
|
716 },
|
|
Zerotorescue@0
|
717 -- Continuous opening config inline group
|
|
Zerotorescue@0
|
718 continuousOpening = {
|
|
Zerotorescue@0
|
719 order = 20,
|
|
Zerotorescue@0
|
720 type = "group",
|
|
Zerotorescue@0
|
721 inline = true,
|
|
Zerotorescue@0
|
722 name = "Opening Interval",
|
|
Zerotorescue@0
|
723 args = {
|
|
Zerotorescue@0
|
724 description = {
|
|
Zerotorescue@0
|
725 order = 10,
|
|
Zerotorescue@0
|
726 type = "description",
|
|
Zerotorescue@0
|
727 name = function()
|
|
Zerotorescue@0
|
728 local defaultString = "The default behaviour for opening mail is to only do so right after new mail was received from the server. If you close the mailbox or your inventory is full before everything is opened you will have to click the open all button manually or wait for a next mailbox refresh.\n\n";
|
|
Zerotorescue@0
|
729
|
|
Zerotorescue@0
|
730 local currentSettings = "";
|
|
Zerotorescue@0
|
731 if MailOpener.db.profile.general.continueOpening then
|
|
Zerotorescue@0
|
732 currentSettings = currentSettings .. "Mail Opener will |cff00ff00continue|r to attempt to open the remaining mail every |cfffed000" .. MailOpener.db.profile.general.waitTime .. " seconds|r. ";
|
|
Zerotorescue@0
|
733 else
|
|
Zerotorescue@0
|
734 currentSettings = currentSettings .. "Mail Opener will |cffff0000not|r continue to attempt to open the remaining mail and will only start opening when new mail has just been received from the server. ";
|
|
Zerotorescue@0
|
735 end
|
|
Zerotorescue@0
|
736 currentSettings = currentSettings .. "The first batch after each server refresh will be opened after waiting |cfffed000" .. MailOpener.db.profile.general.initialDelay .. " seconds|r.";
|
|
Zerotorescue@0
|
737 return defaultString .. currentSettings;
|
|
Zerotorescue@0
|
738 end,
|
|
Zerotorescue@0
|
739 },
|
|
Zerotorescue@0
|
740 header = {
|
|
Zerotorescue@0
|
741 order = 15,
|
|
Zerotorescue@0
|
742 type = "header",
|
|
Zerotorescue@0
|
743 name = "",
|
|
Zerotorescue@0
|
744 },
|
|
Zerotorescue@0
|
745 continueOpening = {
|
|
Zerotorescue@0
|
746 order = 20,
|
|
Zerotorescue@0
|
747 type = "toggle",
|
|
Zerotorescue@0
|
748 name = "Continue opening mail",
|
|
Zerotorescue@0
|
749 desc = "Continue opening mail at the interval set below, even if the mailbox wasn't refreshed recently.",
|
|
Zerotorescue@0
|
750 width = "full",
|
|
Zerotorescue@0
|
751 get = function() return MailOpener.db.profile.general.continueOpening; end,
|
|
Zerotorescue@0
|
752 set = function(i, v) MailOpener.db.profile.general.continueOpening = v; end,
|
|
Zerotorescue@0
|
753 },
|
|
Zerotorescue@0
|
754 waitTime = {
|
|
Zerotorescue@0
|
755 order = 30,
|
|
Zerotorescue@0
|
756 type = "range",
|
|
Zerotorescue@0
|
757 width = "double",
|
|
Zerotorescue@0
|
758 min = 0.5,
|
|
Zerotorescue@0
|
759 max = 60,
|
|
Zerotorescue@0
|
760 step = 0.5,
|
|
Zerotorescue@0
|
761 name = "Continued Mail Opening Interval",
|
|
Zerotorescue@0
|
762 desc = "Change the interval at which Mail Opener tries to continue opening mail after opening the mailbox. Please note that this setting does not reduce the game's normal 60 seconds wait time for mail.\n\nThe default value is 5 seconds",
|
|
Zerotorescue@0
|
763 get = function() return MailOpener.db.profile.general.waitTime; end,
|
|
Zerotorescue@0
|
764 set = function(i, v) MailOpener.db.profile.general.waitTime = v; end,
|
|
Zerotorescue@0
|
765 disabled = function() return (not MailOpener.db.profile.general.continueOpening); end,
|
|
Zerotorescue@0
|
766 },
|
|
Zerotorescue@0
|
767 initialDelay = {
|
|
Zerotorescue@0
|
768 order = 40,
|
|
Zerotorescue@0
|
769 type = "range",
|
|
Zerotorescue@0
|
770 width = "double",
|
|
Zerotorescue@0
|
771 min = 0.5,
|
|
Zerotorescue@0
|
772 max = 60,
|
|
Zerotorescue@0
|
773 step = 0.5,
|
|
Zerotorescue@0
|
774 name = "Initial Mail Opening Delay",
|
|
Zerotorescue@0
|
775 desc = "Change the delay before Mail Opener tries opening mail after opening the mailbox or new mail has been received from the server.\n\nThe default value is 0.5 seconds.",
|
|
Zerotorescue@0
|
776 get = function() return MailOpener.db.profile.general.initialDelay; end,
|
|
Zerotorescue@0
|
777 set = function(i, v) MailOpener.db.profile.general.initialDelay = v; end,
|
|
Zerotorescue@0
|
778 },
|
|
Zerotorescue@0
|
779 },
|
|
Zerotorescue@0
|
780 }, -- end Continuous opening config inline group
|
|
Zerotorescue@0
|
781 keepFree = {
|
|
Zerotorescue@0
|
782 order = 30,
|
|
Zerotorescue@0
|
783 type = "group",
|
|
Zerotorescue@0
|
784 inline = true,
|
|
Zerotorescue@0
|
785 name = "Keep Free Space",
|
|
Zerotorescue@0
|
786 args = {
|
|
Zerotorescue@0
|
787 description = {
|
|
Zerotorescue@0
|
788 order = 10,
|
|
Zerotorescue@0
|
789 type = "description",
|
|
Zerotorescue@0
|
790 name = "You can set an amount of bag space you wish to reserve when opening mail. Mail with a higher amount of attachments than available space will be skipped completely with this option set above 0.",
|
|
Zerotorescue@0
|
791 },
|
|
Zerotorescue@0
|
792 header = {
|
|
Zerotorescue@0
|
793 order = 15,
|
|
Zerotorescue@0
|
794 type = "header",
|
|
Zerotorescue@0
|
795 name = "",
|
|
Zerotorescue@0
|
796 },
|
|
Zerotorescue@0
|
797 keepFreeSpace = {
|
|
Zerotorescue@0
|
798 order = 20,
|
|
Zerotorescue@0
|
799 type = "range",
|
|
Zerotorescue@0
|
800 min = 0,
|
|
Zerotorescue@0
|
801 max = 100,
|
|
Zerotorescue@0
|
802 step = 1,
|
|
Zerotorescue@0
|
803 width = "double",
|
|
Zerotorescue@0
|
804 name = "Keep free space",
|
|
Zerotorescue@0
|
805 desc = "Change the amount of space to reserve for other things when opening mail. If this option is set higher than 0, mail with a higher amount of attachments than available space will be skipped completely.\n\nE.g. If this is set to 1 and you have a total of 12 slots left then any mail with 12 attachments will be skipped while one with 11 attachments would be opened.",
|
|
Zerotorescue@0
|
806 set = function(i, v) self.db.profile.keepFreeSpace = v; end,
|
|
Zerotorescue@0
|
807 get = function() return self.db.profile.keepFreeSpace; end,
|
|
Zerotorescue@0
|
808 },
|
|
Zerotorescue@0
|
809 },
|
|
Zerotorescue@0
|
810 },
|
|
Zerotorescue@0
|
811 speed = {
|
|
Zerotorescue@0
|
812 order = 40,
|
|
Zerotorescue@0
|
813 type = "group",
|
|
Zerotorescue@0
|
814 inline = true,
|
|
Zerotorescue@0
|
815 name = "Opening Speed",
|
|
Zerotorescue@0
|
816 args = {
|
|
Zerotorescue@0
|
817 description = {
|
|
Zerotorescue@0
|
818 order = 10,
|
|
Zerotorescue@0
|
819 type = "description",
|
|
Zerotorescue@0
|
820 name = "Change the speed at which mail is opened. You should set the opening speed to the lowest latency you have in a city or experiment with setting it to the minimum.",
|
|
Zerotorescue@0
|
821 },
|
|
Zerotorescue@0
|
822 header = {
|
|
Zerotorescue@0
|
823 order = 15,
|
|
Zerotorescue@0
|
824 type = "header",
|
|
Zerotorescue@0
|
825 name = "",
|
|
Zerotorescue@0
|
826 },
|
|
Zerotorescue@0
|
827 openMailInterval = {
|
|
Zerotorescue@0
|
828 order = 20,
|
|
Zerotorescue@0
|
829 type = "range",
|
|
Zerotorescue@0
|
830 min = 5,
|
|
Zerotorescue@0
|
831 max = 2500,
|
|
Zerotorescue@0
|
832 step = 5,
|
|
Zerotorescue@0
|
833 width = "double",
|
|
Zerotorescue@0
|
834 name = "Open single mail interval",
|
|
Zerotorescue@0
|
835 desc = "Change the mail opening speed (in microseconds) for each mail. Lower may not always be faster.",
|
|
Zerotorescue@0
|
836 get = function() return ( self.db.profile.speed * 1000 ); end,
|
|
Zerotorescue@0
|
837 set = function(i, v) self.db.profile.speed = ( v / 1000 ); end,
|
|
Zerotorescue@0
|
838 },
|
|
Zerotorescue@0
|
839 },
|
|
Zerotorescue@0
|
840 },
|
|
Zerotorescue@0
|
841 },
|
|
Zerotorescue@0
|
842 };
|
|
Zerotorescue@0
|
843
|
|
Zerotorescue@0
|
844 return configGroup;
|
|
Zerotorescue@0
|
845 end
|
|
Zerotorescue@0
|
846
|
|
Zerotorescue@0
|
847 function OpenAll:Debug(t)
|
|
Zerotorescue@0
|
848 return MailOpener:Debug("|cff00ff00OpenAll|r:" .. t);
|
|
Zerotorescue@0
|
849 end |