annotate Modules/Config.lua @ 62:1a4b2e73cef3

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