diff Core.lua @ 108:f5558317ced3

Added an experimental option to override the CheckInbox function to delay mailbox refresh while there is still mail remaining.
author Zerotorescue
date Thu, 30 Sep 2010 15:21:38 +0200
parents d62eaa354443
children 91fe61693247
line wrap: on
line diff
--- a/Core.lua	Thu Sep 30 14:34:17 2010 +0200
+++ b/Core.lua	Thu Sep 30 15:21:38 2010 +0200
@@ -6,7 +6,7 @@
 -- MailAddonBusy will be nil when nothing is happening or filled with the addon name when MO is working
 -- Another addon can use this variable to indicate they're working too, MailOpener will then wait for that to finish
 
-local AutoOpenMail, MailOpenerConfig, lastAmount, lastQuickAuctionsStatus, freshList, mailboxEmptySoundPlayed, mailboxEmptySoundPlayedThisVisit;
+local AutoOpenMail, MailOpenerConfig, lastAmount, lastQuickAuctionsStatus, freshList, mailboxEmptySoundPlayed, mailboxEmptySoundPlayedThisVisit, hasOpenedMailAlready;
 
 function MailOpener:OnInitialize()
 	self:Debug("OnInitialize");
@@ -33,6 +33,7 @@
 				continueOpening = false,
 				waitTime = 5,
 				initialDelay = 0.5,
+				overrideCheckInbox = false,
 			},
 			modules = {
 				BeanCounterSupport = true,
@@ -430,6 +431,7 @@
 		end
 	end
 	
+	hasOpenedMailAlready = nil;
 	mailboxEmptySoundPlayed = nil;
 	mailboxEmptySoundPlayedThisVisit = nil;
 	
@@ -577,6 +579,8 @@
 		MailAddonBusy = nil;
 	end
 	
+	hasOpenedMailAlready = true;
+	
 	-- Try a recheck
 	self:Recheck();
 	
@@ -660,6 +664,8 @@
 		MailAddonBusy = nil;
 	end
 	
+	hasOpenedMailAlready = nil;
+	
 	-- We won't need this anymore
 	self:UnregisterEvent("MAIL_CLOSED");
 	self:UnregisterEvent("PLAYER_LEAVING_WORLD");
@@ -781,117 +787,32 @@
 	maxLetters = 1024,
 };
 
---BETA: The below either has to be removed or changed when releasing
 
---[[
-BETA/ALPHA request box
-function MailOpener:ShowBetaPopup()
-	function TableDump(key, val, jumps)
-		local cache = "";
+-- The idea for this is to wait with refresing while there is still mail remaining which can be opened
+-- This should speed things up a tiny bit, but might become buggy if coded wrong
+local originalCheckInbox = CheckInbox;
+function CheckInbox(...)
+	if not MailOpener.db.profile.general.overrideCheckInbox or not MailOpener.db.profile.general.continueOpening or lastAmount == 0 then
+		-- If the override Check Inbox option is off
+		-- or continuous opening is off
+		-- or there's currently no mail visible
 		
-		if not jumps then
-			jumps = 0;
-		end
+		MailOpener:Debug("CheckInbox:" .. tostring(MailOpener.db.profile.general.overrideCheckInbox) .. "/" .. tostring(MailOpener.db.profile.general.continueOpening) .. "/" .. tostring(lastAmount == 0));
 		
-		local spacer = "";
-		if jumps > 0 then
-			for i = 1, jumps do
-				spacer = spacer .. "    ";
-			end
-		end
-		
-		if type(val) == "table" then
-			cache = cache .. spacer .. key .. " = {\n";
-			foreach(val, function(k, v)
-				cache = cache .. TableDump(k, v, (jumps + 1));
-			end);
-			cache = cache .. spacer .. "},\n";
-		else
-			cache = cache .. spacer .. key .. " = " .. tostring(val) .. ",\n";
-		end
-		
-		return cache;
+		-- Just call the original function
+		return originalCheckInbox(...);
 	end
 	
-	local cache = "";
-	foreach(MailOpener.db.profile, function(k, v)
-		cache = cache .. TableDump(k, v, 0);
-	end);
-	
-	local AceGUI = LibStub("AceGUI-3.0");
-	local frame = AceGUI:Create("Frame");
-	frame:SetTitle("Mail Opener ALPHA");
-	frame:SetWidth(575);
-	frame:SetHeight(375);
-	
-	-- Add a normal description label
-	local desc = AceGUI:Create("Label");
-	desc:SetText("|cff00ff00After you have been using Mail Opener for a while and configured it just as you want it to be, please report your favorite settings by copying the text below at either of the below links. Thanks in advance!|r\n\n");
-	desc:SetFont(GameFontHighlightSmall:GetFont(), 13);
-	desc:SetFullWidth(true);
-	frame:AddChild(desc);
-	
-	-- Add a MultiLineEditBox
-	local settingsMLEEB = AceGUI:Create("MultiLineEditBox");
-	settingsMLEEB:SetText(cache);
-	settingsMLEEB:SetLabel("Hit CTRL-A to select all and CTRL-C to copy the text. You can then use CTRL-V to paste.");
-	settingsMLEEB:SetFullWidth(true);
-	settingsMLEEB:SetNumLines(8);
-	settingsMLEEB:DisableButton(true);
-	settingsMLEEB:SetCallback("OnTextChanged", function()
-		settingsMLEEB:SetText(cache);
-	end);
-	frame:AddChild(settingsMLEEB);
-	
-	-- Empty line between the two links
-	local label = AceGUI:Create("Label");
-	label:SetText("Please post the above text at either of these two links:");
-	label:SetFullWidth(true);
-	frame:AddChild(label);
-	
-	local desc1 = AceGUI:Create("InteractiveLabel");
-	desc1:SetText("|cff00bbbb[http://wow.curseforge.com/addons/mailopener/create-ticket/]|r");
-	desc1:SetFont(GameFontHighlightSmall:GetFont(), 13);
-	desc1:SetFullWidth(true);
-	desc1:SetCallback("OnClick", function()
-		MailOpener.currentPopupContents = "http://wow.curseforge.com/addons/mailopener/create-ticket/";
+	if not hasOpenedMailAlready then
+		-- If MO hasn't opened mail yet, we wait.
+		-- MO will call this function when mail opening is done
 		
-		StaticPopup_Show("MailOpenerCopyWindow");
-	end);
-	desc1:SetCallback("OnEnter", function()
-		frame:SetStatusText("Click to copy this URL.");
-	end);
-	desc1:SetCallback("OnLeave", function()
-		frame:SetStatusText("");
-	end);
-	frame:AddChild(desc1);
-	
-	-- Empty line between the two links
-	local spacer = AceGUI:Create("Label");
-	spacer:SetText(" ");
-	frame:AddChild(spacer);
-	
-	local desc2 = AceGUI:Create("InteractiveLabel");
-	desc2:SetText("|cff00bbbb[http://20kleveling.com/JMTCforum/posting.php?mode=reply&f=9&t=1403]|r");
-	desc2:SetFont(GameFontHighlightSmall:GetFont(), 13);
-	desc2:SetFullWidth(true);
-	desc2:SetCallback("OnClick", function()
-		MailOpener.currentPopupContents = "http://20kleveling.com/JMTCforum/posting.php?mode=reply&f=9&t=1403";
+		MailOpener:Debug("CheckInbox:Waiting...");
 		
-		StaticPopup_Show("MailOpenerCopyWindow");
-	end);
-	desc2:SetCallback("OnEnter", function()
-		frame:SetStatusText("Click to copy this URL.");
-	end);
-	desc2:SetCallback("OnLeave", function()
-		frame:SetStatusText("");
-	end);
-	frame:AddChild(desc2);
-	
-	-- Empty line between the two links
-	local label = AceGUI:Create("Label");
-	label:SetText("\n\nps. You can always view this window again at a later time by clicking the \"Config\" button in the mail frame.\nps2. The information above is completely Mail Opener related. It will be used to determine the best default settings.");
-	label:SetFullWidth(true);
-	frame:AddChild(label);
-end
-]]
\ No newline at end of file
+		return false;
+	else
+		MailOpener:Debug("CheckInbox:Refresh!");
+		
+		return originalCheckInbox(...);
+	end
+end
\ No newline at end of file