annotate Modules/Config.lua @ 67:4166a335ca81

Added a tip. Reworded mail opener status checkbox tooltip.
author Zerotorescue
date Tue, 14 Sep 2010 11:17:38 +0200
parents 1a4b2e73cef3
children eadff31e61e8
rev   line source
Zerotorescue@0 1 local MailOpener = LibStub("AceAddon-3.0"):GetAddon("MailOpener");
Zerotorescue@31 2 local mod = MailOpener:NewModule("Config", "AceEvent-3.0", "AceTimer-3.0");
Zerotorescue@0 3
Zerotorescue@31 4 mod.moduleDescription = "Builds and loads the config frame(s) and handles the slash commands. Automatically loaded when needed.";
Zerotorescue@31 5 mod.moduleRequired = false;
Zerotorescue@4 6
Zerotorescue@0 7 local Media = LibStub("LibSharedMedia-3.0");
Zerotorescue@0 8 Media:Register("sound", "Cartoon FX", [[Sound\Doodad\Goblin_Lottery_Open03.wav]]);
Zerotorescue@0 9 Media:Register("sound", "Cheer", [[Sound\Event Sounds\OgreEventCheerUnique.wav]]);
Zerotorescue@0 10 Media:Register("sound", "Explosion", [[Sound\Doodad\Hellfire_Raid_FX_Explosion05.wav]]);
Zerotorescue@0 11 Media:Register("sound", "Fel Nova", [[Sound\Spells\SeepingGaseous_Fel_Nova.wav]]);
Zerotorescue@0 12 Media:Register("sound", "Fel Portal", [[Sound\Spells\Sunwell_Fel_PortalStand.wav]]);
Zerotorescue@0 13 Media:Register("sound", "Magic Click", [[Sound\interface\MagicClick.wav]]);
Zerotorescue@0 14 Media:Register("sound", "Rubber Ducky", [[Sound\Doodad\Goblin_Lottery_Open01.wav]]);
Zerotorescue@0 15 Media:Register("sound", "Shing!", [[Sound\Doodad\PortcullisActive_Closed.wav]]);
Zerotorescue@0 16 Media:Register("sound", "Simon Chime", [[Sound\Doodad\SimonGame_LargeBlueTree.wav]]);
Zerotorescue@0 17 Media:Register("sound", "Simon Error", [[Sound\Spells\SimonGame_Visual_BadPress.wav]]);
Zerotorescue@0 18 Media:Register("sound", "Simon Start", [[Sound\Spells\SimonGame_Visual_GameStart.wav]]);
Zerotorescue@0 19 Media:Register("sound", "War Drums", [[Sound\Event Sounds\Event_wardrum_ogre.wav]]);
Zerotorescue@0 20 Media:Register("sound", "Wham!", [[Sound\Doodad\PVP_Lordaeron_Door_Open.wav]]);
Zerotorescue@0 21 Media:Register("sound", "Whisper Ping", [[Sound\interface\iTellMessage.wav]]);
Zerotorescue@0 22 Media:Register("sound", "You Will Die!", [[Sound\Creature\CThun\CThunYouWillDIe.wav]]);
Zerotorescue@0 23
Zerotorescue@0 24 local AceConfigDialog;
Zerotorescue@60 25
Zerotorescue@60 26 local tip; -- if this is nil, it will be filled with a table, once that table is processed, this var will be re-used with the currently selected tip
Zerotorescue@0 27
Zerotorescue@31 28 function mod:OnEnable()
Zerotorescue@0 29 MailOpener:Debug("Enabling |cff00ffffConfig|r module.");
Zerotorescue@60 30
Zerotorescue@60 31 if MailOpener.db.global.currentTip == -1 and MailOpener.db.profile.general.continueOpening == false then
Zerotorescue@60 32 StaticPopupDialogs["MailOpenerFirstConfigUseConfirmBox"] = {
Zerotorescue@60 33 text = "Do you wish to enable \"continue opening mail\"? Read the tip at the bottom of the \"General\" config for more information.",
Zerotorescue@60 34 button1 = "Yes",
Zerotorescue@60 35 button2 = "No",
Zerotorescue@60 36 OnAccept = function()
Zerotorescue@60 37 MailOpener.db.profile.general.continueOpening = true;
Zerotorescue@60 38
Zerotorescue@60 39 print("|cff15ff00Mail Opener|r: Enabling the functionality. Remember you can always change this setting in the \"Open All\" config (|cff00ffff/mo c|r).");
Zerotorescue@60 40 end,
Zerotorescue@60 41 OnCancel = function (_,reason)
Zerotorescue@60 42 print("|cff15ff00Mail Opener|r: You can always change this setting in the \"Open All\" config (|cff00ffff/mo c|r).");
Zerotorescue@60 43 end,
Zerotorescue@60 44 timeout = 0,
Zerotorescue@60 45 whileDead = 1,
Zerotorescue@60 46 hideOnEscape = 1,
Zerotorescue@60 47 };
Zerotorescue@60 48 StaticPopup_Show("MailOpenerFirstConfigUseConfirmBox");
Zerotorescue@60 49 end
Zerotorescue@60 50
Zerotorescue@60 51 if tip == nil then
Zerotorescue@60 52 self:NextTip();
Zerotorescue@60 53
Zerotorescue@60 54 self:GetTip();
Zerotorescue@60 55 end
Zerotorescue@60 56 end
Zerotorescue@60 57
Zerotorescue@60 58 function mod:GetTip()
Zerotorescue@60 59 -- First we fill the global "tip" with our table
Zerotorescue@60 60 -- Then we erase tips that are irrelevant to us
Zerotorescue@60 61 -- and finally the table will be replaced with the currently selected tip
Zerotorescue@60 62
Zerotorescue@60 63 -- Can't put this in the abive scope as the ADDONEnable vars would then always be empty
Zerotorescue@60 64 tip = {
Zerotorescue@62 65 "To make Mail Opener automatically continue the opening of a batch of mail that had previously been interupted, you will have to tick the \"|cfffed000Continue opening mail|r\"-box at the \"|cfffed000Open All|r\" config. By default Mail Opener will always automatically start opening mail right after a server refresh, but you will have to manually resume mail opening if it gets interupted (e.g. because you closed the mailbox or because your bags were full).",
Zerotorescue@62 66 "You can |cfffed000shift-click|r a mail icon to loot all attachments from that single mail.",
Zerotorescue@62 67 {
Zerotorescue@62 68 txt = "|cfffed000Postal|r allows you to return mail by |cfffed000alt-clicking|r the mail icon.",
Zerotorescue@62 69 shown = (MailOpener.PostalEnabled),
Zerotorescue@62 70 },
Zerotorescue@62 71 {
Zerotorescue@62 72 txt = "|cfffed000Mail Opener|r is not meant to be a full replacement of |cfffed000Postal|r, it will only handle the opening of your mail and you can run both addons simultaneously.",
Zerotorescue@62 73 shown = (MailOpener.PostalEnabled),
Zerotorescue@62 74 },
Zerotorescue@62 75 "You can click the time remaining text to get it into a popup dialog so you can copy it (with |cfffed000CTRL-C|r) and then paste it (with |cfffed000CTRL-V|r) elsewhere.",
Zerotorescue@60 76 {
Zerotorescue@60 77 txt = "If you are looking for an addon with many handy modifications for |cfffed000sending|r mail, you might want to consider |cfffed000Postal|r.",
Zerotorescue@60 78 shown = (not MailOpener.PostalEnabled),
Zerotorescue@60 79 },
Zerotorescue@62 80 "|cfffed000Cost on Delivery|r and |cfffed000Blizzard|r mail will always be skipped, regardless of any filters.",
Zerotorescue@62 81 "|cfffed000Right-click|r the |cfffed000open all|r button to quickly adjust your mail opening filters.",
Zerotorescue@62 82 "|cfffed000Shift-click|r the |cfffed000open all|r button to temporarily override your filters and loot every single mail containing attachments and/or gold.",
Zerotorescue@67 83 "Please report |cfffed000issues|r and |cfffed000suggestions|r/|cfffed000requests|r at the |cfffed000CurseForge ticket tracker|r, I will try to process and respond to them all (you can find a link to the ticket tracker in the addon description at Curse).",
Zerotorescue@60 84 };
Zerotorescue@60 85
Zerotorescue@60 86 -- Remove any "hidden" tips
Zerotorescue@60 87 for i = table.getn(tip), 1 do
Zerotorescue@60 88 local val = tip[i];
Zerotorescue@60 89
Zerotorescue@60 90 if type(val) == "table" and val.shown == false then
Zerotorescue@60 91 table.remove(tip, i);
Zerotorescue@60 92 end
Zerotorescue@60 93 end
Zerotorescue@60 94
Zerotorescue@60 95 -- Find our current tip
Zerotorescue@60 96 local tipsAvailable = table.getn(tip);
Zerotorescue@60 97 local selectedTip = ( ( MailOpener.db.global.currentTip % tipsAvailable ) + 1 ); -- this should return a value between 1 and tipsAvailable
Zerotorescue@60 98
Zerotorescue@60 99 if selectedTip < 1 then
Zerotorescue@60 100 -- If we're going under zero, we'll use the last tip available instead
Zerotorescue@60 101 MailOpener.db.global.currentTip = tipsAvailable;
Zerotorescue@60 102 end
Zerotorescue@60 103
Zerotorescue@60 104 -- We don't need to leave the tip-table in memory, so overwrite it
Zerotorescue@60 105 if type(tip[selectedTip]) == "table" then
Zerotorescue@60 106 tip = tip[selectedTip]['txt'];
Zerotorescue@60 107 else
Zerotorescue@60 108 tip = tip[selectedTip];
Zerotorescue@60 109 end
Zerotorescue@60 110 end
Zerotorescue@60 111
Zerotorescue@60 112 function mod:NextTip()
Zerotorescue@60 113 MailOpener.db.global.currentTip = ( MailOpener.db.global.currentTip + 1 );
Zerotorescue@0 114 end
Zerotorescue@0 115
Zerotorescue@31 116 function mod:CommandHandler(message)
Zerotorescue@0 117 local cmd, arg = string.split(" ", (message or ""), 2);
Zerotorescue@0 118 cmd = string.lower(cmd);
Zerotorescue@0 119
Zerotorescue@0 120 if cmd == "c" or cmd == "config" or cmd == "conf" or cmd == "option" or cmd == "options" or cmd == "opt" or cmd == "setting" or cmd == "settings" then
Zerotorescue@0 121 self:Show();
Zerotorescue@0 122 elseif cmd == "d" or cmd == "debug" then
Zerotorescue@0 123 MailOpener.debugChannel = false;
Zerotorescue@0 124 for i = 1, NUM_CHAT_WINDOWS do
Zerotorescue@0 125 local name = GetChatWindowInfo(i);
Zerotorescue@0 126
Zerotorescue@0 127 if name:upper() == "DEBUG" then
Zerotorescue@0 128 MailOpener.debugChannel = _G["ChatFrame" .. i];
Zerotorescue@0 129
Zerotorescue@46 130 print("A debug channel already exists, used the old one. (" .. i .. ")");
Zerotorescue@0 131 return;
Zerotorescue@0 132 end
Zerotorescue@0 133 end
Zerotorescue@0 134
Zerotorescue@0 135 if not MailOpener.debugChannel then
Zerotorescue@0 136 -- Create a new debug channel
Zerotorescue@0 137 local chatFrame = FCF_OpenNewWindow('Debug');
Zerotorescue@0 138 ChatFrame_RemoveAllMessageGroups(chatFrame);
Zerotorescue@0 139 MailOpener.debugChannel = chatFrame;
Zerotorescue@0 140
Zerotorescue@0 141 print("New debug channel created.");
Zerotorescue@0 142 end
Zerotorescue@0 143 else
Zerotorescue@0 144 print("Wrong command, available: /mo config (or /mo c)");
Zerotorescue@0 145 end
Zerotorescue@0 146 end
Zerotorescue@0 147
Zerotorescue@31 148 function mod:Load()
Zerotorescue@0 149 if not AceConfigDialog then
Zerotorescue@0 150 local options = self:GetOptions();
Zerotorescue@0 151
Zerotorescue@47 152 -- We have been pretty sloppy with tables in self:GetOptions(), but since this is only executed once and for readability we'll leave it this way
Zerotorescue@47 153 -- Instead, do a garbage collection
Zerotorescue@47 154 collectgarbage();
Zerotorescue@47 155
Zerotorescue@0 156 -- Build options dialog
Zerotorescue@0 157 AceConfigDialog = LibStub("AceConfigDialog-3.0");
Zerotorescue@0 158 -- Register options table
Zerotorescue@0 159 LibStub("AceConfig-3.0"):RegisterOptionsTable("Mail Opener", options);
Zerotorescue@0 160 -- Set a nice default size
Zerotorescue@0 161 AceConfigDialog:SetDefaultSize("Mail Opener", 950, 600);
Zerotorescue@0 162
Zerotorescue@0 163 -- In case the addon is loaded from another condition, always call the remove interface options
Zerotorescue@0 164 if AddonLoader and AddonLoader.RemoveInterfaceOptions then
Zerotorescue@0 165 AddonLoader:RemoveInterfaceOptions("Mail Opener");
Zerotorescue@0 166 end
Zerotorescue@0 167
Zerotorescue@0 168 -- Add to the blizzard addons options thing
Zerotorescue@0 169 AceConfigDialog:AddToBlizOptions("Mail Opener");
Zerotorescue@0 170 end
Zerotorescue@0 171 end
Zerotorescue@0 172
Zerotorescue@31 173 function mod:Show()
Zerotorescue@0 174 self:Load();
Zerotorescue@0 175
Zerotorescue@0 176 AceConfigDialog:Open("Mail Opener");
Zerotorescue@0 177 end
Zerotorescue@0 178
Zerotorescue@31 179 function mod:GetOptions()
Zerotorescue@0 180 local options = {
Zerotorescue@0 181 type = "group",
Zerotorescue@0 182 name = "Mail Opener",
Zerotorescue@0 183 childGroups = "tree",
Zerotorescue@0 184 args = {
Zerotorescue@0 185 },
Zerotorescue@0 186 };
Zerotorescue@0 187
Zerotorescue@0 188 options.args.general = self:GetGeneralOptions();
Zerotorescue@0 189
Zerotorescue@0 190 options.args.notifications = self:GetNotificationsOptions();
Zerotorescue@0 191
Zerotorescue@0 192 options = self:GetModuleOptions(options);
Zerotorescue@0 193
Zerotorescue@0 194 options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(MailOpener.db, true);
Zerotorescue@0 195 options.args.profiles.order = 1000; -- we want this as last group
Zerotorescue@0 196
Zerotorescue@0 197 return options;
Zerotorescue@0 198 end
Zerotorescue@0 199
Zerotorescue@31 200 -- Get the options group for every one of our modules
Zerotorescue@31 201 function mod:GetModuleOptions(options)
Zerotorescue@31 202 -- Go through all our modules
Zerotorescue@0 203 for name, module in MailOpener:IterateModules() do
Zerotorescue@31 204 -- Look if they even have an options group
Zerotorescue@0 205 if module.GetOptionsGroup then
Zerotorescue@31 206 -- Get that options group
Zerotorescue@31 207 local moduleGroup = module:GetOptionsGroup();
Zerotorescue@31 208
Zerotorescue@31 209 -- If it's set to be a subgroup of the modules group, put it there
Zerotorescue@31 210 if moduleGroup['type'] == "modulesSubGroup" then
Zerotorescue@31 211 moduleGroup['type'] = "group";
Zerotorescue@31 212
Zerotorescue@31 213 -- If the modules group doesn't exist yet, make it
Zerotorescue@31 214 if options.args.Modules == nil then
Zerotorescue@31 215 options.args.Modules = self:GetModuleGroupsContainer();
Zerotorescue@31 216 end
Zerotorescue@31 217
Zerotorescue@31 218 -- Add to the modules sub group
Zerotorescue@31 219 options.args.Modules.args[name] = moduleGroup;
Zerotorescue@31 220 else
Zerotorescue@31 221 options.args[name] = moduleGroup;
Zerotorescue@31 222 end
Zerotorescue@31 223
Zerotorescue@0 224 end
Zerotorescue@0 225 end
Zerotorescue@0 226
Zerotorescue@0 227 return options;
Zerotorescue@0 228 end
Zerotorescue@0 229
Zerotorescue@31 230 function mod:GetModuleGroupsContainer()
Zerotorescue@31 231 local modulesConfigGroup = {
Zerotorescue@31 232 order = 400,
Zerotorescue@31 233 type = "group",
Zerotorescue@31 234 childGroups = "tree",
Zerotorescue@31 235 name = "Modules",
Zerotorescue@31 236 desc = "Change settings for modules or toggle them on or off.",
Zerotorescue@31 237 args = {
Zerotorescue@31 238 General = {
Zerotorescue@31 239 order = 10,
Zerotorescue@31 240 type = "group",
Zerotorescue@31 241 inline = true,
Zerotorescue@31 242 name = "Modules Status",
Zerotorescue@31 243 args = {
Zerotorescue@31 244 headerName = {
Zerotorescue@31 245 order = 0,
Zerotorescue@31 246 width = "normal",
Zerotorescue@31 247 type = "description",
Zerotorescue@31 248 fontSize = "medium",
Zerotorescue@31 249 name = "|cfffed000Module Name|r",
Zerotorescue@31 250 },
Zerotorescue@31 251 headerStatus = {
Zerotorescue@31 252 order = 1,
Zerotorescue@31 253 width = "half",
Zerotorescue@31 254 type = "description",
Zerotorescue@31 255 fontSize = "medium",
Zerotorescue@31 256 name = "|cfffed000Status|r",
Zerotorescue@31 257 },
Zerotorescue@31 258 headerDefault = {
Zerotorescue@31 259 order = 2,
Zerotorescue@43 260 width = "double",
Zerotorescue@31 261 type = "description",
Zerotorescue@31 262 fontSize = "medium",
Zerotorescue@31 263 name = "|cfffed000Default Status|r",
Zerotorescue@31 264 },
Zerotorescue@31 265 headerseperator = {
Zerotorescue@31 266 order = 3,
Zerotorescue@31 267 type = "description",
Zerotorescue@31 268 name = "",
Zerotorescue@31 269 },
Zerotorescue@31 270 },
Zerotorescue@31 271 },
Zerotorescue@31 272 },
Zerotorescue@31 273 };
Zerotorescue@31 274
Zerotorescue@31 275 -- Make a list of modules and their statuses
Zerotorescue@31 276 local orderNo = 5;
Zerotorescue@31 277 for moduleName, module in MailOpener:IterateModules() do
Zerotorescue@31 278 -- Display each module as NAME CURRENT STATUS DEFAULT STATUS
Zerotorescue@31 279
Zerotorescue@31 280 -- Name
Zerotorescue@31 281 modulesConfigGroup.args.General.args[moduleName .. "name"] = {
Zerotorescue@31 282 order = orderNo,
Zerotorescue@31 283 width = "normal",
Zerotorescue@31 284 type = "description",
Zerotorescue@31 285 fontSize = "medium",
Zerotorescue@31 286 name = function()
Zerotorescue@31 287 return moduleName;
Zerotorescue@31 288 end,
Zerotorescue@31 289 };
Zerotorescue@31 290 -- Current status
Zerotorescue@31 291 modulesConfigGroup.args.General.args[moduleName .. "status"] = {
Zerotorescue@31 292 order = ( orderNo + 1 ),
Zerotorescue@31 293 width = "half",
Zerotorescue@31 294 type = "description",
Zerotorescue@31 295 fontSize = "medium",
Zerotorescue@31 296 name = function()
Zerotorescue@31 297 if module:IsEnabled() then
Zerotorescue@31 298 return "|cff00ff00Enabled|r";
Zerotorescue@31 299 else
Zerotorescue@31 300 return "|cffff0000Disabled|r";
Zerotorescue@31 301 end
Zerotorescue@31 302 end,
Zerotorescue@31 303 };
Zerotorescue@31 304 -- Default status
Zerotorescue@31 305 modulesConfigGroup.args.General.args[moduleName .. "default"] = {
Zerotorescue@31 306 order = ( orderNo + 2 ),
Zerotorescue@43 307 width = "double",
Zerotorescue@31 308 type = "description",
Zerotorescue@31 309 fontSize = "medium",
Zerotorescue@31 310 name = function()
Zerotorescue@31 311 local desc = "";
Zerotorescue@31 312 if MailOpener.db.profile.modules[moduleName] == nil or MailOpener.db.profile.modules[moduleName] == true then
Zerotorescue@31 313 desc = "|cff00ff00Enabled|r";
Zerotorescue@31 314 else
Zerotorescue@31 315 desc = "|cffff0000Disabled|r";
Zerotorescue@31 316 end
Zerotorescue@31 317
Zerotorescue@31 318 if module.moduleRequired then
Zerotorescue@31 319 desc = desc .. " (Required module)";
Zerotorescue@31 320 end
Zerotorescue@31 321
Zerotorescue@31 322 return desc;
Zerotorescue@31 323 end,
Zerotorescue@31 324 };
Zerotorescue@31 325
Zerotorescue@31 326 -- Seperator
Zerotorescue@31 327 modulesConfigGroup.args.General.args[moduleName .. "seperator"] = {
Zerotorescue@31 328 order = ( orderNo + 3 ),
Zerotorescue@31 329 type = "description",
Zerotorescue@31 330 name = "",
Zerotorescue@31 331 };
Zerotorescue@31 332
Zerotorescue@31 333 if module.moduleDescription then
Zerotorescue@31 334 -- Description
Zerotorescue@31 335 modulesConfigGroup.args.General.args[moduleName .. "description"] = {
Zerotorescue@31 336 order = ( orderNo + 4 ),
Zerotorescue@31 337 type = "description",
Zerotorescue@31 338 name = function()
Zerotorescue@31 339 return "|cfffed000" .. module.moduleDescription .. "|r";
Zerotorescue@31 340 end,
Zerotorescue@31 341 };
Zerotorescue@31 342 end
Zerotorescue@31 343
Zerotorescue@31 344 orderNo = orderNo + 5;
Zerotorescue@31 345 end
Zerotorescue@31 346
Zerotorescue@31 347 return modulesConfigGroup;
Zerotorescue@31 348 end
Zerotorescue@31 349
Zerotorescue@31 350 function mod:GetGeneralOptions()
Zerotorescue@0 351 local generalConfigGroup = {
Zerotorescue@0 352 order = 100,
Zerotorescue@0 353 type = "group",
Zerotorescue@0 354 name = "General",
Zerotorescue@0 355 desc = "Change general Mail Opener settings.",
Zerotorescue@0 356 args = {
Zerotorescue@0 357 -- General config inline group
Zerotorescue@0 358 generalConfig = {
Zerotorescue@0 359 order = 10,
Zerotorescue@0 360 type = "group",
Zerotorescue@0 361 inline = true,
Zerotorescue@0 362 name = "General",
Zerotorescue@0 363 args = {
Zerotorescue@0 364 defaultStatus = {
Zerotorescue@0 365 order = 0,
Zerotorescue@0 366 type = "select",
Zerotorescue@0 367 name = "Default mail opener status",
Zerotorescue@0 368 desc = "Select the default Mail Opener status when you open a mailbox for the first time since your log on.",
Zerotorescue@0 369 values = {
Zerotorescue@4 370 _enabled = "Completely enabled",
Zerotorescue@4 371 disabled = "Auto opening disabled",
Zerotorescue@4 372 xdisabled = "Addon Disabled",
Zerotorescue@0 373 },
Zerotorescue@0 374 get = function() return MailOpener.db.profile.general.defaultStatus; end,
Zerotorescue@0 375 set = function(i, v) MailOpener.db.profile.general.defaultStatus = v; end,
Zerotorescue@0 376 },
Zerotorescue@0 377 defaultQAStatus = {
Zerotorescue@0 378 order = 10,
Zerotorescue@0 379 type = "select",
Zerotorescue@0 380 name = "Default QA Auto Mail status",
Zerotorescue@0 381 desc = "Select the default Quick Auctions auto mail status whenever you open a mailbox.",
Zerotorescue@0 382 values = {
Zerotorescue@0 383 __remember = "Remember",
Zerotorescue@0 384 _enabled = "Enabled",
Zerotorescue@0 385 disabled = "Disabled",
Zerotorescue@0 386 },
Zerotorescue@0 387 get = function() return MailOpener.db.profile.general.defaultQAStatus; end,
Zerotorescue@0 388 set = function(i, v) MailOpener.db.profile.general.defaultQAStatus = v; end,
Zerotorescue@0 389 hidden = (not MailOpener.QuickAuctionsEnabled),
Zerotorescue@0 390 },
Zerotorescue@0 391 continueOpeningStackableItems = {
Zerotorescue@0 392 order = 15,
Zerotorescue@0 393 type = "toggle",
Zerotorescue@0 394 name = "Continue trying to open mail after your bags are full",
Zerotorescue@54 395 desc = "If there are a lot of stackable items in your mailbox (e.g. glyphs) you may want to toggle this option on.\n\nThis will cause your Blizzard error frame to get extremely spammy if there's a lot of mail remaining. With this disabled, Mail Opener will completely stop opening mail while your inventory is full.",
Zerotorescue@0 396 width = "full",
Zerotorescue@0 397 get = function() return MailOpener.db.profile.general.continueOpeningStackableItems; end,
Zerotorescue@0 398 set = function(i, v) MailOpener.db.profile.general.continueOpeningStackableItems = v; end,
Zerotorescue@0 399 },
Zerotorescue@51 400 showHelpTooltips = {
Zerotorescue@51 401 order = 17,
Zerotorescue@51 402 type = "toggle",
Zerotorescue@51 403 name = "Display help tooltips at the mailbox buttons added by Mail Opener.",
Zerotorescue@51 404 desc = "Display the help tooltips when hovering at any of the mailbox buttons added by Mail Opener.",
Zerotorescue@51 405 width = "full",
Zerotorescue@51 406 get = function() return MailOpener.db.profile.general.showHelpTooltips; end,
Zerotorescue@51 407 set = function(i, v) MailOpener.db.profile.general.showHelpTooltips = v; end,
Zerotorescue@51 408 },
Zerotorescue@0 409 autoDisableQAAutoMail = {
Zerotorescue@0 410 order = 20,
Zerotorescue@0 411 type = "toggle",
Zerotorescue@39 412 name = "Turn Quick Auction's auto mail status |cffff0000off|r when opening mail",
Zerotorescue@39 413 desc = "Quick Auction's auto mail is buggy when using other mail opening addons. If you are collecting mail while auto mailer is enabled wrong items may be send to the wrong character.\n\nTo solve this you must disable Quick Auction's auto mail while opening mail and you can re-enable it when mail opening is finished.",
Zerotorescue@0 414 width = "full",
Zerotorescue@0 415 get = function() return MailOpener.db.profile.general.autoDisableQAAutoMail; end,
Zerotorescue@0 416 set = function(i, v) MailOpener.db.profile.general.autoDisableQAAutoMail = v; end,
Zerotorescue@0 417 hidden = (not MailOpener.QuickAuctionsEnabled),
Zerotorescue@0 418 },
Zerotorescue@0 419 autoReenableQAAutoMail = {
Zerotorescue@0 420 order = 30,
Zerotorescue@0 421 type = "toggle",
Zerotorescue@39 422 name = "Turn Quick Auction's auto mail status |cff00ff00on|r after opening mail has finished",
Zerotorescue@39 423 desc = "Quick Auction's auto mail is buggy when using other mail opening addons. If you are collecting mail while auto mailer is enabled wrong items may be send to the wrong character.\n\nTo solve this you must disable Quick Auction's auto mail while opening mail and you can re-enable it when mail opening is finished.",
Zerotorescue@0 424 width = "full",
Zerotorescue@0 425 get = function() return MailOpener.db.profile.general.autoReenableQAAutoMail; end,
Zerotorescue@0 426 set = function(i, v) MailOpener.db.profile.general.autoReenableQAAutoMail = v; end,
Zerotorescue@0 427 hidden = (not MailOpener.QuickAuctionsEnabled),
Zerotorescue@0 428 disabled = function() return (MailOpener.db.profile.general.autoSetBackQAAutoMail and not MailOpener.db.profile.general.autoReenableQAAutoMail); end,
Zerotorescue@0 429 },
Zerotorescue@0 430 autoSetBackQAAutoMail = {
Zerotorescue@0 431 order = 40,
Zerotorescue@0 432 type = "toggle",
Zerotorescue@39 433 name = "Set Quick Auction's auto mail status |cff00ffffback|r after opening mail has finished (remember it)",
Zerotorescue@0 434 desc = "Instead of always turning Quick Auction's auto mail on after mail opening you can choose to set it back to the value it was prior to opening mail.",
Zerotorescue@0 435 width = "full",
Zerotorescue@0 436 get = function() return MailOpener.db.profile.general.autoSetBackQAAutoMail; end,
Zerotorescue@0 437 set = function(i, v) MailOpener.db.profile.general.autoSetBackQAAutoMail = v; end,
Zerotorescue@0 438 hidden = (not MailOpener.QuickAuctionsEnabled),
Zerotorescue@0 439 disabled = function() return (MailOpener.db.profile.general.autoReenableQAAutoMail and not MailOpener.db.profile.general.autoSetBackQAAutoMail); end,
Zerotorescue@0 440 },
Zerotorescue@0 441 },
Zerotorescue@0 442 }, -- end General config inline group
Zerotorescue@0 443 -- Profile config inline group
Zerotorescue@0 444 profileConfig = {
Zerotorescue@0 445 order = 15,
Zerotorescue@0 446 type = "group",
Zerotorescue@0 447 inline = true,
Zerotorescue@0 448 name = "New Character Specfic Profile",
Zerotorescue@0 449 args = {
Zerotorescue@0 450 description = {
Zerotorescue@0 451 order = 10,
Zerotorescue@0 452 type = "description",
Zerotorescue@0 453 name = "You can create a new profile to allow different behaviour for different characters. Imagine setting up a profile for your AH banker which will retrieve all sorts of mail containing items while other characters don't automatically open mail with items sent by other players.",
Zerotorescue@0 454 },
Zerotorescue@0 455 header = {
Zerotorescue@0 456 order = 15,
Zerotorescue@0 457 type = "header",
Zerotorescue@0 458 name = "",
Zerotorescue@0 459 },
Zerotorescue@0 460 createNewProfile = {
Zerotorescue@0 461 order = 20,
Zerotorescue@0 462 type = "execute",
Zerotorescue@0 463 name = "Create a new character specific profile",
Zerotorescue@0 464 desc = "Create a new profile for this user. You can also make profile groups at the profiles tab to the left.",
Zerotorescue@0 465 width = "double",
Zerotorescue@0 466 func = function()
Zerotorescue@0 467 MailOpener.db:SetProfile(UnitName("player") .. " - " .. GetRealmName());
Zerotorescue@0 468 end,
Zerotorescue@0 469 },
Zerotorescue@0 470 },
Zerotorescue@0 471 }, -- end Profile config inline group
Zerotorescue@60 472 -- Tip
Zerotorescue@60 473 tipConfig = {
Zerotorescue@60 474 order = 20,
Zerotorescue@60 475 type = "group",
Zerotorescue@60 476 inline = true,
Zerotorescue@60 477 name = "Mail Opening Tip",
Zerotorescue@60 478 args = {
Zerotorescue@60 479 description = {
Zerotorescue@60 480 order = 10,
Zerotorescue@60 481 type = "description",
Zerotorescue@60 482 fontSize = "medium",
Zerotorescue@60 483 name = function() return tip; end,
Zerotorescue@60 484 },
Zerotorescue@60 485 nextTip = {
Zerotorescue@60 486 order = 20,
Zerotorescue@60 487 type = "execute",
Zerotorescue@60 488 name = "Next Tip",
Zerotorescue@60 489 width = "half",
Zerotorescue@60 490 func = function() self:NextTip(); self:GetTip(); end,
Zerotorescue@60 491 },
Zerotorescue@60 492 },
Zerotorescue@60 493 }, -- end Tip
Zerotorescue@0 494 },
Zerotorescue@0 495 };
Zerotorescue@0 496
Zerotorescue@0 497 return generalConfigGroup;
Zerotorescue@0 498 end
Zerotorescue@0 499
Zerotorescue@31 500 function mod:GetNotificationsOptions()
Zerotorescue@0 501 local notificationsConfigGroup = {
Zerotorescue@0 502 order = 200,
Zerotorescue@0 503 type = "group",
Zerotorescue@0 504 name = "Notifications",
Zerotorescue@0 505 desc = "Toggle notifications.",
Zerotorescue@0 506 args = {
Zerotorescue@0 507 -- Notifications config inline group
Zerotorescue@0 508 nofitications = {
Zerotorescue@0 509 order = 10,
Zerotorescue@0 510 type = "group",
Zerotorescue@0 511 inline = true,
Zerotorescue@0 512 name = "Notifications",
Zerotorescue@0 513 args = {
Zerotorescue@0 514 description = {
Zerotorescue@0 515 order = 10,
Zerotorescue@0 516 type = "description",
Zerotorescue@0 517 name = "Toggle which notification you wish to see.",
Zerotorescue@0 518 },
Zerotorescue@0 519 },
Zerotorescue@0 520 }, -- end Notifications config inline group
Zerotorescue@0 521
Zerotorescue@0 522 -- General Notifications config inline group
Zerotorescue@0 523 general = {
Zerotorescue@0 524 order = 20,
Zerotorescue@0 525 type = "group",
Zerotorescue@0 526 inline = true,
Zerotorescue@0 527 name = "General Notifications",
Zerotorescue@0 528 args = {
Zerotorescue@62 529 --[[welcome = {
Zerotorescue@0 530 order = 20,
Zerotorescue@0 531 type = "toggle",
Zerotorescue@0 532 name = "Show message when |cfffed000opening the mailbox|r",
Zerotorescue@0 533 desc = "Print the welcome message whenever you open the mailbox.",
Zerotorescue@0 534 set = function(i, v) MailOpener.db.profile.notifications.welcome = v; end,
Zerotorescue@0 535 get = function() return MailOpener.db.profile.notifications.welcome; end,
Zerotorescue@0 536 width = "double",
Zerotorescue@0 537 },
Zerotorescue@0 538 bye = {
Zerotorescue@0 539 order = 21,
Zerotorescue@0 540 type = "toggle",
Zerotorescue@0 541 name = "Show message when |cfffed000closing the mailbox|r",
Zerotorescue@0 542 desc = "Print the bye message whenever you close the mailbox.",
Zerotorescue@0 543 set = function(i, v) MailOpener.db.profile.notifications.bye = v; end,
Zerotorescue@0 544 get = function() return MailOpener.db.profile.notifications.bye; end,
Zerotorescue@0 545 width = "double",
Zerotorescue@62 546 },]]
Zerotorescue@0 547 fishedOpeningBatch = {
Zerotorescue@0 548 order = 22,
Zerotorescue@0 549 type = "toggle",
Zerotorescue@0 550 name = "Announce when |cfffed000finished opening the current batch|r",
Zerotorescue@54 551 desc = "Announce when opening of the current batch of mail has been completed.",
Zerotorescue@0 552 set = function(i, v) MailOpener.db.profile.notifications.finishedCurrentBatch = v; end,
Zerotorescue@0 553 get = function() return MailOpener.db.profile.notifications.finishedCurrentBatch; end,
Zerotorescue@0 554 width = "double",
Zerotorescue@0 555 },
Zerotorescue@0 556 noMoreMailAvailable = {
Zerotorescue@0 557 order = 23,
Zerotorescue@0 558 type = "toggle",
Zerotorescue@0 559 name = "Announce when |cfffed000the mailbox is completely empty|r",
Zerotorescue@0 560 desc = "Announce when there is nothing left for Mail Opener to open.",
Zerotorescue@0 561 set = function(i, v) MailOpener.db.profile.notifications.mailboxIsEmpty = v; end,
Zerotorescue@0 562 get = function() return MailOpener.db.profile.notifications.mailboxIsEmpty; end,
Zerotorescue@0 563 width = "double",
Zerotorescue@0 564 },
Zerotorescue@0 565 },
Zerotorescue@0 566 }, -- end General Notifications config inline group
Zerotorescue@0 567
Zerotorescue@0 568 -- Mail Skipped Notifications config inline group
Zerotorescue@0 569 mailSkipped = {
Zerotorescue@0 570 order = 30,
Zerotorescue@0 571 type = "group",
Zerotorescue@0 572 inline = true,
Zerotorescue@0 573 name = "Mail Skipped Notifications",
Zerotorescue@0 574 args = {
Zerotorescue@0 575 descriptionMailSkipped = {
Zerotorescue@0 576 order = 31,
Zerotorescue@0 577 type = "description",
Zerotorescue@0 578 name = "Announce when mail is skipped because...",
Zerotorescue@0 579 },
Zerotorescue@0 580
Zerotorescue@0 581 skippedToggleAll = {
Zerotorescue@0 582 order = 35,
Zerotorescue@0 583 type = "toggle",
Zerotorescue@0 584 name = "Toggle everything",
Zerotorescue@0 585 desc = "Announce when mail is skipped for |cfffed000any|r reason.",
Zerotorescue@0 586 set = function(i, v) MailOpener.db.profile.notifications.skipped.all = v; end,
Zerotorescue@0 587 get = function() return MailOpener.db.profile.notifications.skipped.all; end,
Zerotorescue@0 588 },
Zerotorescue@0 589 skippedInventoryFull = {
Zerotorescue@0 590 order = 36,
Zerotorescue@0 591 type = "toggle",
Zerotorescue@0 592 name = "Your inventory is full",
Zerotorescue@0 593 desc = "Announce when mail is skipped because |cfffed000your inventory is full|r.",
Zerotorescue@0 594 set = function(i, v) MailOpener.db.profile.notifications.skipped.inventoryFull = v; end,
Zerotorescue@0 595 get = function() return MailOpener.db.profile.notifications.skipped.inventoryFull; end,
Zerotorescue@0 596 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 597 },
Zerotorescue@0 598 skippedKeepFreeSpaceLimit = {
Zerotorescue@0 599 order = 37,
Zerotorescue@0 600 type = "toggle",
Zerotorescue@0 601 name = "Keep free space limit reached",
Zerotorescue@0 602 desc = "Announce when mail is skipped because |cfffed000the keep free space limit has been reached|r.",
Zerotorescue@0 603 set = function(i, v) MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit = v; end,
Zerotorescue@0 604 get = function() return MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit; end,
Zerotorescue@0 605 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 606 },
Zerotorescue@0 607 skippedGMMail = {
Zerotorescue@0 608 order = 38,
Zerotorescue@0 609 type = "toggle",
Zerotorescue@0 610 name = "GM mail",
Zerotorescue@0 611 desc = "Announce when mail is skipped because it's |cfffed000mail sent by a Game Master|r.",
Zerotorescue@0 612 set = function(i, v) MailOpener.db.profile.notifications.skipped.GMMail = v; end,
Zerotorescue@0 613 get = function() return MailOpener.db.profile.notifications.skipped.GMMail; end,
Zerotorescue@0 614 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 615 },
Zerotorescue@0 616 skippedCOD = {
Zerotorescue@0 617 order = 39,
Zerotorescue@0 618 type = "toggle",
Zerotorescue@0 619 name = "C.O.D. mail",
Zerotorescue@0 620 desc = "Announce when mail is skipped because it's |cfffed000a Cost On Delivery mail|r.",
Zerotorescue@0 621 set = function(i, v) MailOpener.db.profile.notifications.skipped.COD = v; end,
Zerotorescue@0 622 get = function() return MailOpener.db.profile.notifications.skipped.COD; end,
Zerotorescue@0 623 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 624 },
Zerotorescue@0 625 skippedNormalGoldMail = {
Zerotorescue@0 626 order = 40,
Zerotorescue@0 627 type = "toggle",
Zerotorescue@0 628 name = "Normal mail with gold",
Zerotorescue@0 629 desc = "Announce when mail is skipped because it's |cfffed000normal mail containing gold|r.",
Zerotorescue@0 630 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalGoldMail = v; end,
Zerotorescue@0 631 get = function() return MailOpener.db.profile.notifications.skipped.normalGoldMail; end,
Zerotorescue@0 632 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 633 },
Zerotorescue@0 634 skippedNormalItemsMail = {
Zerotorescue@0 635 order = 41,
Zerotorescue@0 636 type = "toggle",
Zerotorescue@0 637 name = "Normal mail with attachments",
Zerotorescue@0 638 desc = "Announce when mail is skipped because it's |cfffed000normal mail containing items|r.",
Zerotorescue@0 639 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalItemsMail = v; end,
Zerotorescue@0 640 get = function() return MailOpener.db.profile.notifications.skipped.normalItemsMail; end,
Zerotorescue@0 641 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 642 },
Zerotorescue@0 643 skippedAHExpired = {
Zerotorescue@0 644 order = 42,
Zerotorescue@0 645 type = "toggle",
Zerotorescue@0 646 name = "Auction expired mail",
Zerotorescue@0 647 desc = "Announce when mail is skipped because it's |cfffed000auction expired mail|r.",
Zerotorescue@0 648 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHexpired = v; end,
Zerotorescue@0 649 get = function() return MailOpener.db.profile.notifications.skipped.AHexpired; end,
Zerotorescue@0 650 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 651 },
Zerotorescue@0 652 skippedAHSuccessful = {
Zerotorescue@0 653 order = 43,
Zerotorescue@0 654 type = "toggle",
Zerotorescue@0 655 name = "Auction successful mail",
Zerotorescue@0 656 desc = "Announce when mail is skipped because it's |cfffed000auction successful mail|r.",
Zerotorescue@0 657 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHsuccess = v; end,
Zerotorescue@0 658 get = function() return MailOpener.db.profile.notifications.skipped.AHsuccess; end,
Zerotorescue@0 659 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 660 },
Zerotorescue@0 661 skippedAHWon = {
Zerotorescue@0 662 order = 44,
Zerotorescue@0 663 type = "toggle",
Zerotorescue@0 664 name = "Auction won mail",
Zerotorescue@0 665 desc = "Announce when mail is skipped because it's |cfffed000auction won mail|r.",
Zerotorescue@0 666 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHwon = v; end,
Zerotorescue@0 667 get = function() return MailOpener.db.profile.notifications.skipped.AHwon; end,
Zerotorescue@0 668 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 669 },
Zerotorescue@0 670 skippedAHCanceled = {
Zerotorescue@0 671 order = 45,
Zerotorescue@0 672 type = "toggle",
Zerotorescue@0 673 name = "Auction canceled mail",
Zerotorescue@0 674 desc = "Announce when mail is skipped because it's |cfffed000auction canceled mail|r.",
Zerotorescue@0 675 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHcanceled = v; end,
Zerotorescue@0 676 get = function() return MailOpener.db.profile.notifications.skipped.AHcanceled; end,
Zerotorescue@0 677 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 678 },
Zerotorescue@0 679 skippedAHOutbid = {
Zerotorescue@0 680 order = 46,
Zerotorescue@0 681 type = "toggle",
Zerotorescue@0 682 name = "Auction outbid mail",
Zerotorescue@0 683 desc = "Announce when mail is skipped because it's |cfffed000auction outbid mail|r.",
Zerotorescue@0 684 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHoutbid = v; end,
Zerotorescue@0 685 get = function() return MailOpener.db.profile.notifications.skipped.AHoutbid; end,
Zerotorescue@0 686 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 687 },
Zerotorescue@0 688 skippedOther = {
Zerotorescue@0 689 order = 47,
Zerotorescue@0 690 type = "toggle",
Zerotorescue@0 691 name = "Other mail (e.g. plain text)",
Zerotorescue@0 692 desc = "Announce when mail is skipped because it's |cfffed000any other kind of mail|r (e.g. plain text).",
Zerotorescue@0 693 set = function(i, v) MailOpener.db.profile.notifications.skipped.other = v; end,
Zerotorescue@0 694 get = function() return MailOpener.db.profile.notifications.skipped.other; end,
Zerotorescue@0 695 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 696 },
Zerotorescue@0 697 },
Zerotorescue@0 698 }, -- end Mail Skipped Notifications config inline group
Zerotorescue@0 699
Zerotorescue@0 700 -- Mail Processed Notifications config inline group
Zerotorescue@0 701 mailProcessed = {
Zerotorescue@0 702 order = 40,
Zerotorescue@0 703 type = "group",
Zerotorescue@0 704 inline = true,
Zerotorescue@0 705 name = "Mail Processed Notifications",
Zerotorescue@0 706 args = {
Zerotorescue@0 707 descriptionMailProcessed = {
Zerotorescue@0 708 order = 61,
Zerotorescue@0 709 type = "description",
Zerotorescue@0 710 name = "Announce when mail is processed because...",
Zerotorescue@0 711 },
Zerotorescue@0 712
Zerotorescue@0 713 processedToggleAll = {
Zerotorescue@0 714 order = 65,
Zerotorescue@0 715 type = "toggle",
Zerotorescue@0 716 name = "Toggle everything",
Zerotorescue@0 717 desc = "Announce when mail is processed for |cfffed000any|r reason.",
Zerotorescue@0 718 set = function(i, v) MailOpener.db.profile.notifications.processed.all = v; end,
Zerotorescue@0 719 get = function() return MailOpener.db.profile.notifications.processed.all; end,
Zerotorescue@0 720 },
Zerotorescue@0 721 processedNormalGoldMail = {
Zerotorescue@0 722 order = 70,
Zerotorescue@0 723 type = "toggle",
Zerotorescue@0 724 name = "Normal mail with gold",
Zerotorescue@0 725 desc = "Announce when mail is processed because it's |cfffed000normal mail containing gold|r.",
Zerotorescue@0 726 set = function(i, v) MailOpener.db.profile.notifications.processed.normalGoldMail = v; end,
Zerotorescue@0 727 get = function() return MailOpener.db.profile.notifications.processed.normalGoldMail; end,
Zerotorescue@0 728 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 729 },
Zerotorescue@0 730 processedNormalItemsMail = {
Zerotorescue@0 731 order = 71,
Zerotorescue@0 732 type = "toggle",
Zerotorescue@0 733 name = "Normal mail with attachments",
Zerotorescue@0 734 desc = "Announce when mail is processed because it's |cfffed000normal mail containing items|r.",
Zerotorescue@0 735 set = function(i, v) MailOpener.db.profile.notifications.processed.normalItemsMail = v; end,
Zerotorescue@0 736 get = function() return MailOpener.db.profile.notifications.processed.normalItemsMail; end,
Zerotorescue@0 737 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 738 },
Zerotorescue@0 739 processedAHExpired = {
Zerotorescue@0 740 order = 72,
Zerotorescue@0 741 type = "toggle",
Zerotorescue@0 742 name = "Auction expired mail",
Zerotorescue@0 743 desc = "Announce when mail is processed because it's |cfffed000auction expired mail|r.",
Zerotorescue@0 744 set = function(i, v) MailOpener.db.profile.notifications.processed.AHexpired = v; end,
Zerotorescue@0 745 get = function() return MailOpener.db.profile.notifications.processed.AHexpired; end,
Zerotorescue@0 746 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 747 },
Zerotorescue@0 748 processedAHSuccessful = {
Zerotorescue@0 749 order = 73,
Zerotorescue@0 750 type = "toggle",
Zerotorescue@0 751 name = "Auction successful mail",
Zerotorescue@0 752 desc = "Announce when mail is processed because it's |cfffed000auction successful mail|r.",
Zerotorescue@0 753 set = function(i, v) MailOpener.db.profile.notifications.processed.AHsuccess = v; end,
Zerotorescue@0 754 get = function() return MailOpener.db.profile.notifications.processed.AHsuccess; end,
Zerotorescue@0 755 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 756 },
Zerotorescue@0 757 processedAHWon = {
Zerotorescue@0 758 order = 74,
Zerotorescue@0 759 type = "toggle",
Zerotorescue@0 760 name = "Auction won mail",
Zerotorescue@0 761 desc = "Announce when mail is processed because it's |cfffed000auction won mail|r.",
Zerotorescue@0 762 set = function(i, v) MailOpener.db.profile.notifications.processed.AHwon = v; end,
Zerotorescue@0 763 get = function() return MailOpener.db.profile.notifications.processed.AHwon; end,
Zerotorescue@0 764 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 765 },
Zerotorescue@0 766 processedAHCanceled = {
Zerotorescue@0 767 order = 75,
Zerotorescue@0 768 type = "toggle",
Zerotorescue@0 769 name = "Auction canceled mail",
Zerotorescue@0 770 desc = "Announce when mail is processed because it's |cfffed000auction canceled mail|r.",
Zerotorescue@0 771 set = function(i, v) MailOpener.db.profile.notifications.processed.AHcanceled = v; end,
Zerotorescue@0 772 get = function() return MailOpener.db.profile.notifications.processed.AHcanceled; end,
Zerotorescue@0 773 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 774 },
Zerotorescue@0 775 processedAHOutbid = {
Zerotorescue@0 776 order = 76,
Zerotorescue@0 777 type = "toggle",
Zerotorescue@0 778 name = "Auction outbid mail",
Zerotorescue@0 779 desc = "Announce when mail is processed because it's |cfffed000auction outbid mail|r.",
Zerotorescue@0 780 set = function(i, v) MailOpener.db.profile.notifications.processed.AHoutbid = v; end,
Zerotorescue@0 781 get = function() return MailOpener.db.profile.notifications.processed.AHoutbid; end,
Zerotorescue@0 782 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 783 },
Zerotorescue@0 784 processedOther = {
Zerotorescue@0 785 order = 77,
Zerotorescue@0 786 type = "toggle",
Zerotorescue@0 787 name = "Other mail (e.g. plain text)",
Zerotorescue@0 788 desc = "Announce when mail is processed because it's |cfffed000any other kind of mail|r (e.g. plain text).",
Zerotorescue@0 789 set = function(i, v) MailOpener.db.profile.notifications.processed.other = v; end,
Zerotorescue@0 790 get = function() return MailOpener.db.profile.notifications.processed.other; end,
Zerotorescue@0 791 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 792 },
Zerotorescue@0 793 },
Zerotorescue@0 794 }, -- end Mail Processed Notifications config inline group
Zerotorescue@0 795
Zerotorescue@0 796 -- Sound Notifications config inline group
Zerotorescue@0 797 sound = {
Zerotorescue@0 798 order = 50,
Zerotorescue@0 799 type = "group",
Zerotorescue@0 800 inline = true,
Zerotorescue@0 801 name = "Sound Notifications",
Zerotorescue@0 802 args = {
Zerotorescue@42 803 descriptionMailProcessed = {
Zerotorescue@42 804 order = 61,
Zerotorescue@42 805 type = "description",
Zerotorescue@42 806 name = "Play a sound when...",
Zerotorescue@42 807 },
Zerotorescue@0 808 bagsFullSound = {
Zerotorescue@0 809 order = 100,
Zerotorescue@0 810 type = "toggle",
Zerotorescue@42 811 name = "Inventory is full",
Zerotorescue@0 812 desc = "Play a sound when your inventory is full. You can select what sound in the select box next to this.",
Zerotorescue@0 813 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSound = v; end,
Zerotorescue@0 814 get = function() return MailOpener.db.profile.notifications.bagsFullSound; end,
Zerotorescue@42 815 width = "medium",
Zerotorescue@0 816 },
Zerotorescue@0 817 bagsFullSoundFile = {
Zerotorescue@0 818 order = 101,
Zerotorescue@0 819 type = "select",
Zerotorescue@0 820 name = "Sound File",
Zerotorescue@0 821 desc = "Sound file to play when your bags are full.",
Zerotorescue@0 822 dialogControl = "LSM30_Sound",
Zerotorescue@0 823 set = function(i, v)
Zerotorescue@0 824 MailOpener.db.profile.notifications.bagsFullSoundFile = Media:Fetch("sound", v);
Zerotorescue@0 825 MailOpener.db.profile.notifications.bagsFullSoundFileName = v;
Zerotorescue@0 826
Zerotorescue@0 827 PlaySoundFile(MailOpener.db.profile.notifications.bagsFullSoundFile);
Zerotorescue@0 828
Zerotorescue@0 829 print("|cff15ff00Mail Opener|r: You may have to increase the mail opening interval if this sound effect gets spammy. The recommended value is 10 seconds.");
Zerotorescue@0 830 end,
Zerotorescue@0 831 get = function() return MailOpener.db.profile.notifications.bagsFullSoundFileName end,
Zerotorescue@0 832 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 833 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@0 834 },
Zerotorescue@0 835 bagsFullSoundOnlyOnce = {
Zerotorescue@0 836 order = 102,
Zerotorescue@0 837 type = "toggle",
Zerotorescue@0 838 name = "Only once",
Zerotorescue@42 839 desc = "Only play this sound once each time new mail has been arrived or your bags are updated.",
Zerotorescue@0 840 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce = v; end,
Zerotorescue@0 841 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce; end,
Zerotorescue@0 842 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@42 843 --width = "half",
Zerotorescue@42 844 },
Zerotorescue@42 845 bagsFullSoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 846 order = 103,
Zerotorescue@42 847 type = "toggle",
Zerotorescue@42 848 name = "...per mailbox visit",
Zerotorescue@42 849 desc = "Only play this sound once each time you visit the mailbox.",
Zerotorescue@42 850 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 851 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 852 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce); end,
Zerotorescue@0 853 },
Zerotorescue@0 854 mailboxEmptySound = {
Zerotorescue@0 855 order = 110,
Zerotorescue@0 856 type = "toggle",
Zerotorescue@42 857 name = "No more mail can be opened",
Zerotorescue@0 858 desc = "Play a sound when no more mail can be opened. You can select what sound in the select box next to this.",
Zerotorescue@0 859 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySound = v; end,
Zerotorescue@0 860 get = function() return MailOpener.db.profile.notifications.mailboxEmptySound; end,
Zerotorescue@42 861 --width = "double",
Zerotorescue@0 862 },
Zerotorescue@0 863 mailboxEmptySoundFile = {
Zerotorescue@0 864 order = 111,
Zerotorescue@0 865 type = "select",
Zerotorescue@0 866 name = "Sound File",
Zerotorescue@0 867 desc = "Sound file to play when Mail Opener can't open any more mail.",
Zerotorescue@0 868 dialogControl = "LSM30_Sound",
Zerotorescue@0 869 set = function(i, v)
Zerotorescue@0 870 MailOpener.db.profile.notifications.mailboxEmptySoundFile = Media:Fetch("sound", v);
Zerotorescue@0 871 MailOpener.db.profile.notifications.mailboxEmptySoundFileName = v;
Zerotorescue@0 872
Zerotorescue@0 873 PlaySoundFile(MailOpener.db.profile.notifications.mailboxEmptySoundFile);
Zerotorescue@0 874
Zerotorescue@0 875 print("|cff15ff00Mail Opener|r: You may have to increase the mail opening interval if this sound effect gets spammy. The recommended value is 10 seconds.");
Zerotorescue@0 876 end,
Zerotorescue@0 877 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundFileName end,
Zerotorescue@0 878 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 879 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@0 880 },
Zerotorescue@0 881 mailboxEmptySoundOnlyOnce = {
Zerotorescue@0 882 order = 112,
Zerotorescue@0 883 type = "toggle",
Zerotorescue@0 884 name = "Only once",
Zerotorescue@0 885 desc = "Only play this sound once each time new mail has been arrived.",
Zerotorescue@0 886 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce = v; end,
Zerotorescue@0 887 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce; end,
Zerotorescue@0 888 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@42 889 --width = "half",
Zerotorescue@42 890 },
Zerotorescue@42 891 mailboxEmptySoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 892 order = 113,
Zerotorescue@42 893 type = "toggle",
Zerotorescue@42 894 name = "...per mailbox visit",
Zerotorescue@42 895 desc = "Only play this sound once each time you visit the mailbox.",
Zerotorescue@42 896 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 897 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 898 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce); end,
Zerotorescue@0 899 },
Zerotorescue@0 900 },
Zerotorescue@0 901 }, -- end Sound Notifications config inline group
Zerotorescue@0 902 },
Zerotorescue@0 903 };
Zerotorescue@0 904
Zerotorescue@0 905 return notificationsConfigGroup;
Zerotorescue@0 906 end