annotate Modules/FailSafe.lua @ 60:4cd3b02f6840

Added a part for Mail Opener tips to the bottom of the general config. Also, the first time you start the config you will be prompted to enable continuous opening or not.
author Zerotorescue
date Mon, 13 Sep 2010 23:58:48 +0200
parents 8168280420ae
children eadff31e61e8
rev   line source
Zerotorescue@5 1 local MailOpener = LibStub("AceAddon-3.0"):GetAddon("MailOpener");
Zerotorescue@31 2 local mod = MailOpener:NewModule("FailSafe", "AceEvent-3.0", "AceTimer-3.0");
Zerotorescue@5 3
Zerotorescue@31 4 mod.moduleDescription = "Prevents the mail opening from completely stopping when the opening of a single mail gets stuck.";
Zerotorescue@31 5 mod.moduleRequired = false;
Zerotorescue@5 6
Zerotorescue@31 7 function mod:OnInitialize()
Zerotorescue@5 8 local defaults = {
Zerotorescue@5 9 profile = {
Zerotorescue@5 10 timeout = 20,
Zerotorescue@5 11 },
Zerotorescue@5 12 };
Zerotorescue@5 13
Zerotorescue@5 14 -- Register our saved variables NameSpace
Zerotorescue@5 15 self.db = MailOpener.db:RegisterNamespace("FailSafe", defaults);
Zerotorescue@5 16 end
Zerotorescue@5 17
Zerotorescue@31 18 function mod:OnEnable()
Zerotorescue@5 19 self:Debug("OnEnable");
Zerotorescue@5 20
Zerotorescue@5 21 self:RegisterEvent("MAIL_SHOW");
Zerotorescue@31 22
Zerotorescue@31 23 -- If we were toggling this module on while the mailbox is opened we must register all events again
Zerotorescue@31 24 if MailFrame:IsVisible() then
Zerotorescue@31 25 self:MAIL_SHOW();
Zerotorescue@31 26 end
Zerotorescue@5 27 end
Zerotorescue@5 28
Zerotorescue@5 29 -- Even though Ace can unregister our events it's neater to do it manually too
Zerotorescue@31 30 function mod:OnDisable()
Zerotorescue@5 31 self:Debug("OnDisable");
Zerotorescue@5 32
Zerotorescue@5 33 self:UnregisterEvent("MAIL_SHOW");
Zerotorescue@42 34
Zerotorescue@42 35 -- If we were toggling this module off while the mailbox is opened we must unregister all events
Zerotorescue@42 36 if MailFrame:IsVisible() then
Zerotorescue@42 37 self:MAIL_CLOSED();
Zerotorescue@42 38 end
Zerotorescue@5 39 end
Zerotorescue@5 40
Zerotorescue@31 41 function mod:MAIL_SHOW()
Zerotorescue@5 42 self:Debug("MAIL_SHOW");
Zerotorescue@5 43
Zerotorescue@5 44 self:RegisterEvent("MAIL_CLOSED");
Zerotorescue@5 45
Zerotorescue@5 46 self:RegisterMessage("MO_OPENING_MAIL");
Zerotorescue@5 47 self:RegisterMessage("MO_MAIL_EMPTIED");
Zerotorescue@5 48 end
Zerotorescue@5 49
Zerotorescue@31 50 function mod:MAIL_CLOSED()
Zerotorescue@5 51 self:Debug("MAIL_CLOSED");
Zerotorescue@5 52
Zerotorescue@5 53 self:UnregisterEvent("MAIL_CLOSED");
Zerotorescue@5 54
Zerotorescue@5 55 self:UnregisterMessage("MO_OPENING_MAIL");
Zerotorescue@5 56 self:UnregisterMessage("MO_OPENING_MAIL_FINISHED");
Zerotorescue@5 57
Zerotorescue@6 58 self:CancelTimer(self.tmrTimeout, true);
Zerotorescue@5 59 end
Zerotorescue@5 60
Zerotorescue@31 61 function mod:MO_OPENING_MAIL()
Zerotorescue@5 62 -- Single mail being opened
Zerotorescue@5 63
Zerotorescue@11 64 self:CancelTimer(self.tmrTimeout, true); -- insurance
Zerotorescue@5 65 self.tmrTimeout = self:ScheduleTimer("Continue", self.db.profile.timeout);
Zerotorescue@5 66 end
Zerotorescue@5 67
Zerotorescue@31 68 function mod:MO_MAIL_EMPTIED()
Zerotorescue@5 69 -- Single mail has been opened
Zerotorescue@5 70
Zerotorescue@6 71 self:CancelTimer(self.tmrTimeout, true);
Zerotorescue@5 72 end
Zerotorescue@5 73
Zerotorescue@31 74 function mod:Continue()
Zerotorescue@5 75 MailOpener:GetModule("OpenAll"):Continue();
Zerotorescue@5 76
Zerotorescue@5 77 print("|cff15ff00Mail Opener|r (FailSafe): Mail opening timeout, continueing with the next mail.");
Zerotorescue@5 78 end
Zerotorescue@5 79
Zerotorescue@31 80 function mod:GetOptionsGroup()
Zerotorescue@5 81 local configGroup = {
Zerotorescue@31 82 order = 0,
Zerotorescue@31 83 type = "modulesSubGroup",
Zerotorescue@5 84 name = "FailSafe",
Zerotorescue@5 85 desc = "Change settings for the FailSafe module.",
Zerotorescue@5 86 args = {
Zerotorescue@5 87 General = {
Zerotorescue@5 88 order = 10,
Zerotorescue@5 89 type = "group",
Zerotorescue@5 90 inline = true,
Zerotorescue@5 91 name = "General",
Zerotorescue@5 92 args = {
Zerotorescue@5 93 description = {
Zerotorescue@5 94 order = 10,
Zerotorescue@5 95 type = "description",
Zerotorescue@5 96 name = function()
Zerotorescue@31 97 local descText = "With this button you can completely toggle this module |cff00ff00on|r or |cffff0000off|r. This setting will be remembered and the module will be automatically toggled |cff00ff00on|r or |cffff0000off|r upon logon as it was last set.\n\n";
Zerotorescue@5 98
Zerotorescue@5 99 if self:IsEnabled() then
Zerotorescue@31 100 descText = descText .. "Status: |cff00ff00Enabled|r";
Zerotorescue@5 101 else
Zerotorescue@31 102 descText = descText .. "Status: |cffff0000Disabled|r";
Zerotorescue@5 103 end
Zerotorescue@31 104
Zerotorescue@31 105 return descText;
Zerotorescue@5 106 end,
Zerotorescue@5 107 },
Zerotorescue@5 108 disable = {
Zerotorescue@5 109 order = 20,
Zerotorescue@5 110 type = "execute",
Zerotorescue@5 111 name = function()
Zerotorescue@5 112 if self:IsEnabled() then
Zerotorescue@5 113 return "Disable Module";
Zerotorescue@5 114 else
Zerotorescue@5 115 return "Enable Module";
Zerotorescue@5 116 end
Zerotorescue@5 117 end,
Zerotorescue@5 118 desc = "Click here to completely toggle this module on or off.",
Zerotorescue@5 119 width = "double",
Zerotorescue@5 120 func = function()
Zerotorescue@5 121 if self:IsEnabled() then
Zerotorescue@5 122 self:Disable();
Zerotorescue@5 123
Zerotorescue@5 124 MailOpener.db.profile.modules[self:GetName()] = false;
Zerotorescue@5 125 else
Zerotorescue@5 126 self:Enable();
Zerotorescue@5 127
Zerotorescue@5 128 MailOpener.db.profile.modules[self:GetName()] = true;
Zerotorescue@5 129 end
Zerotorescue@5 130 end,
Zerotorescue@5 131 },
Zerotorescue@5 132 },
Zerotorescue@5 133 },
Zerotorescue@5 134 SingleMailTimeout = {
Zerotorescue@5 135 order = 20,
Zerotorescue@5 136 type = "group",
Zerotorescue@5 137 inline = true,
Zerotorescue@5 138 name = "Single Mail Opening Timeout",
Zerotorescue@5 139 args = {
Zerotorescue@5 140 description = {
Zerotorescue@5 141 order = 10,
Zerotorescue@5 142 type = "description",
Zerotorescue@5 143 name = "Change how long FailSafe should wait before skipping the last mail and continueing with the next. This will prevent mail opening getting stuck forever because a single mail is frozen for whatever reason.",
Zerotorescue@5 144 },
Zerotorescue@5 145 timeout = {
Zerotorescue@5 146 order = 20,
Zerotorescue@5 147 type = "range",
Zerotorescue@5 148 width = "double",
Zerotorescue@5 149 min = 1,
Zerotorescue@5 150 max = 60,
Zerotorescue@5 151 step = 0.5,
Zerotorescue@5 152 name = "Single Mail Timeout",
Zerotorescue@5 153 desc = "Change how long FailSafe should wait before skipping the last mail and continueing with the next. This should prevent mail opening getting stuck because a single mail is stuck for whatever reason.\n\nDefault value is 20 seconds.",
Zerotorescue@5 154 get = function() return self.db.profile.timeout; end,
Zerotorescue@5 155 set = function(i, v) self.db.profile.timeout = v; end,
Zerotorescue@5 156 },
Zerotorescue@5 157 },
Zerotorescue@5 158 },
Zerotorescue@5 159 },
Zerotorescue@5 160 };
Zerotorescue@5 161
Zerotorescue@5 162 return configGroup;
Zerotorescue@5 163 end
Zerotorescue@5 164
Zerotorescue@31 165 function mod:Debug(t)
Zerotorescue@5 166 return MailOpener:Debug("|cffff0000FailSafe|r:" .. t);
Zerotorescue@5 167 end