annotate Modules/Config.lua @ 69:21b5ecd7d018

Localizations update. Second packager test (docs are invalid, default for handle-subnamespaces is not ?none?).
author Zerotorescue
date Wed, 15 Sep 2010 13:37:29 +0200
parents eadff31e61e8
children f01e0184a275
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@68 4 mod.moduleDescription = L["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@68 33 text = L["Do you wish to enable \"continue opening mail\"? Read the tip at the bottom of the \"General\" config for more information."],
Zerotorescue@68 34 button1 = L["Yes"],
Zerotorescue@68 35 button2 = L["No"],
Zerotorescue@60 36 OnAccept = function()
Zerotorescue@60 37 MailOpener.db.profile.general.continueOpening = true;
Zerotorescue@60 38
Zerotorescue@68 39 MailOpener:Print(L["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@68 42 MailOpener:Print(L["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@68 65 L["To make Mail Opener automatically continue the opening of a batch of mail that had previously been interrupted, 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 interrupted (e.g. because you closed the mailbox or because your bags were full)."],
Zerotorescue@68 66 L["You can |cfffed000shift-click|r a mail icon to loot all attachments from that single mail."],
Zerotorescue@62 67 {
Zerotorescue@68 68 txt = L["|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@68 72 txt = L["|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@68 75 L["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@68 77 txt = L["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@68 80 L["|cfffed000Cost on Delivery|r and |cfffed000Blizzard|r mail will always be skipped, regardless of any filters."],
Zerotorescue@68 81 L["|cfffed000Right-click|r the |cfffed000open all|r button to quickly adjust your mail opening filters."],
Zerotorescue@68 82 L["|cfffed000Shift-click|r the |cfffed000open all|r button to temporarily override your filters and loot every single mail containing attachments and/or gold."],
Zerotorescue@68 83 L["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@68 144 print(L["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@68 182 name = L["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@68 235 name = L["Modules"],
Zerotorescue@68 236 desc = L["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@68 242 name = L["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@68 249 name = L["|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@68 256 name = L["|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@68 263 name = L["|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@68 298 return L["|cff00ff00Enabled|r"];
Zerotorescue@31 299 else
Zerotorescue@68 300 return L["|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@68 313 desc = L["|cff00ff00Enabled|r"];
Zerotorescue@31 314 else
Zerotorescue@68 315 desc = L["|cffff0000Disabled|r"];
Zerotorescue@31 316 end
Zerotorescue@31 317
Zerotorescue@31 318 if module.moduleRequired then
Zerotorescue@68 319 desc = desc .. " " .. L["(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@68 354 name = L["General"],
Zerotorescue@68 355 desc = L["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@68 362 name = L["General"],
Zerotorescue@0 363 args = {
Zerotorescue@0 364 defaultStatus = {
Zerotorescue@0 365 order = 0,
Zerotorescue@0 366 type = "select",
Zerotorescue@68 367 name = L["Default mail opener status"],
Zerotorescue@68 368 desc = L["Select the default Mail Opener status when you open a mailbox for the first time since your log on."],
Zerotorescue@0 369 values = {
Zerotorescue@68 370 _enabled = L["Completely enabled"],
Zerotorescue@68 371 disabled = L["Auto opening disabled"],
Zerotorescue@68 372 xdisabled = L["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@68 380 name = L["Default QA Auto Mail status"],
Zerotorescue@68 381 desc = L["Select the default Quick Auctions auto mail status whenever you open a mailbox."],
Zerotorescue@0 382 values = {
Zerotorescue@68 383 __remember = L["Remember"],
Zerotorescue@68 384 _enabled = L["Enabled"],
Zerotorescue@68 385 disabled = L["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@68 394 name = L["Continue trying to open mail after your bags are full"],
Zerotorescue@68 395 desc = L["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@68 403 name = L["Display help tooltips at the mailbox buttons added by Mail Opener."],
Zerotorescue@68 404 desc = L["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@68 412 name = L["Turn Quick Auction's auto mail status |cffff0000off|r when opening mail"],
Zerotorescue@68 413 desc = L["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@68 422 name = L["Turn Quick Auction's auto mail status |cff00ff00on|r after opening mail has finished"],
Zerotorescue@68 423 desc = L["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@68 433 name = L["Set Quick Auction's auto mail status |cff00ffffback|r after opening mail has finished (remember it)"],
Zerotorescue@68 434 desc = L["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@68 448 name = L["New Character Specific Profile"],
Zerotorescue@0 449 args = {
Zerotorescue@0 450 description = {
Zerotorescue@0 451 order = 10,
Zerotorescue@0 452 type = "description",
Zerotorescue@68 453 name = L["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@68 463 name = L["Create a new character specific profile"],
Zerotorescue@68 464 desc = L["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@68 477 name = L["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@68 488 name = L["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@68 504 name = L["Notifications"],
Zerotorescue@68 505 desc = L["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@68 512 name = L["Notifications"],
Zerotorescue@0 513 args = {
Zerotorescue@0 514 description = {
Zerotorescue@0 515 order = 10,
Zerotorescue@0 516 type = "description",
Zerotorescue@68 517 name = L["Notifications"],
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@68 527 name = L["General Notifications"],
Zerotorescue@0 528 args = {
Zerotorescue@0 529 fishedOpeningBatch = {
Zerotorescue@0 530 order = 22,
Zerotorescue@0 531 type = "toggle",
Zerotorescue@68 532 name = L["Announce when |cfffed000finished opening the current batch|r"],
Zerotorescue@68 533 desc = L["Announce when opening of the current batch of mail has been completed."],
Zerotorescue@0 534 set = function(i, v) MailOpener.db.profile.notifications.finishedCurrentBatch = v; end,
Zerotorescue@0 535 get = function() return MailOpener.db.profile.notifications.finishedCurrentBatch; end,
Zerotorescue@0 536 width = "double",
Zerotorescue@0 537 },
Zerotorescue@0 538 noMoreMailAvailable = {
Zerotorescue@0 539 order = 23,
Zerotorescue@0 540 type = "toggle",
Zerotorescue@68 541 name = L["Announce when |cfffed000the mailbox is completely empty|r"],
Zerotorescue@68 542 desc = L["Announce when there is nothing left for Mail Opener to open."],
Zerotorescue@0 543 set = function(i, v) MailOpener.db.profile.notifications.mailboxIsEmpty = v; end,
Zerotorescue@0 544 get = function() return MailOpener.db.profile.notifications.mailboxIsEmpty; end,
Zerotorescue@0 545 width = "double",
Zerotorescue@0 546 },
Zerotorescue@0 547 },
Zerotorescue@0 548 }, -- end General Notifications config inline group
Zerotorescue@0 549
Zerotorescue@0 550 -- Mail Skipped Notifications config inline group
Zerotorescue@0 551 mailSkipped = {
Zerotorescue@0 552 order = 30,
Zerotorescue@0 553 type = "group",
Zerotorescue@0 554 inline = true,
Zerotorescue@68 555 name = L["Mail Skipped Notifications"],
Zerotorescue@0 556 args = {
Zerotorescue@0 557 descriptionMailSkipped = {
Zerotorescue@0 558 order = 31,
Zerotorescue@0 559 type = "description",
Zerotorescue@68 560 name = L["Announce when mail is skipped because..."],
Zerotorescue@0 561 },
Zerotorescue@0 562
Zerotorescue@0 563 skippedToggleAll = {
Zerotorescue@0 564 order = 35,
Zerotorescue@0 565 type = "toggle",
Zerotorescue@68 566 name = L["Toggle everything"],
Zerotorescue@68 567 desc = L["Announce when mail is skipped for |cfffed000any|r reason."],
Zerotorescue@0 568 set = function(i, v) MailOpener.db.profile.notifications.skipped.all = v; end,
Zerotorescue@0 569 get = function() return MailOpener.db.profile.notifications.skipped.all; end,
Zerotorescue@0 570 },
Zerotorescue@0 571 skippedInventoryFull = {
Zerotorescue@0 572 order = 36,
Zerotorescue@0 573 type = "toggle",
Zerotorescue@68 574 name = L["Your inventory is full"],
Zerotorescue@68 575 desc = L["Announce when mail is skipped because |cfffed000your inventory is full|r."],
Zerotorescue@0 576 set = function(i, v) MailOpener.db.profile.notifications.skipped.inventoryFull = v; end,
Zerotorescue@0 577 get = function() return MailOpener.db.profile.notifications.skipped.inventoryFull; end,
Zerotorescue@0 578 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 579 },
Zerotorescue@0 580 skippedKeepFreeSpaceLimit = {
Zerotorescue@0 581 order = 37,
Zerotorescue@0 582 type = "toggle",
Zerotorescue@68 583 name = L["Keep free space limit reached"],
Zerotorescue@68 584 desc = L["Announce when mail is skipped because |cfffed000the keep free space limit has been reached|r."],
Zerotorescue@0 585 set = function(i, v) MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit = v; end,
Zerotorescue@0 586 get = function() return MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit; end,
Zerotorescue@0 587 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 588 },
Zerotorescue@0 589 skippedGMMail = {
Zerotorescue@0 590 order = 38,
Zerotorescue@0 591 type = "toggle",
Zerotorescue@68 592 name = L["Blizzard mail"],
Zerotorescue@68 593 desc = L["Announce when mail is skipped because it's |cfffed000mail sent by Blizzard|r."],
Zerotorescue@0 594 set = function(i, v) MailOpener.db.profile.notifications.skipped.GMMail = v; end,
Zerotorescue@0 595 get = function() return MailOpener.db.profile.notifications.skipped.GMMail; end,
Zerotorescue@0 596 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 597 },
Zerotorescue@0 598 skippedCOD = {
Zerotorescue@0 599 order = 39,
Zerotorescue@0 600 type = "toggle",
Zerotorescue@68 601 name = L["C.O.D. mail"],
Zerotorescue@68 602 desc = L["Announce when mail is skipped because it's |cfffed000a Cost On Delivery mail|r."],
Zerotorescue@0 603 set = function(i, v) MailOpener.db.profile.notifications.skipped.COD = v; end,
Zerotorescue@0 604 get = function() return MailOpener.db.profile.notifications.skipped.COD; end,
Zerotorescue@0 605 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 606 },
Zerotorescue@0 607 skippedNormalGoldMail = {
Zerotorescue@0 608 order = 40,
Zerotorescue@0 609 type = "toggle",
Zerotorescue@68 610 name = L["Normal mail with gold"],
Zerotorescue@68 611 desc = L["Announce when mail is skipped because it's |cfffed000normal mail containing gold|r."],
Zerotorescue@0 612 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalGoldMail = v; end,
Zerotorescue@0 613 get = function() return MailOpener.db.profile.notifications.skipped.normalGoldMail; end,
Zerotorescue@0 614 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 615 },
Zerotorescue@0 616 skippedNormalItemsMail = {
Zerotorescue@0 617 order = 41,
Zerotorescue@0 618 type = "toggle",
Zerotorescue@68 619 name = L["Normal mail with attachments"],
Zerotorescue@68 620 desc = L["Announce when mail is skipped because it's |cfffed000normal mail containing items|r."],
Zerotorescue@0 621 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalItemsMail = v; end,
Zerotorescue@0 622 get = function() return MailOpener.db.profile.notifications.skipped.normalItemsMail; end,
Zerotorescue@0 623 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 624 },
Zerotorescue@0 625 skippedAHExpired = {
Zerotorescue@0 626 order = 42,
Zerotorescue@0 627 type = "toggle",
Zerotorescue@68 628 name = L["Auction expired mail"],
Zerotorescue@68 629 desc = L["Announce when mail is skipped because it's |cfffed000auction expired mail|r."],
Zerotorescue@0 630 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHexpired = v; end,
Zerotorescue@0 631 get = function() return MailOpener.db.profile.notifications.skipped.AHexpired; end,
Zerotorescue@0 632 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 633 },
Zerotorescue@0 634 skippedAHSuccessful = {
Zerotorescue@0 635 order = 43,
Zerotorescue@0 636 type = "toggle",
Zerotorescue@68 637 name = L["Auction successful mail"],
Zerotorescue@68 638 desc = L["Announce when mail is skipped because it's |cfffed000auction successful mail|r."],
Zerotorescue@0 639 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHsuccess = v; end,
Zerotorescue@0 640 get = function() return MailOpener.db.profile.notifications.skipped.AHsuccess; end,
Zerotorescue@0 641 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 642 },
Zerotorescue@0 643 skippedAHWon = {
Zerotorescue@0 644 order = 44,
Zerotorescue@0 645 type = "toggle",
Zerotorescue@68 646 name = L["Auction won mail"],
Zerotorescue@68 647 desc = L["Announce when mail is skipped because it's |cfffed000auction won mail|r."],
Zerotorescue@0 648 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHwon = v; end,
Zerotorescue@0 649 get = function() return MailOpener.db.profile.notifications.skipped.AHwon; end,
Zerotorescue@0 650 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 651 },
Zerotorescue@0 652 skippedAHCanceled = {
Zerotorescue@0 653 order = 45,
Zerotorescue@0 654 type = "toggle",
Zerotorescue@68 655 name = L["Auction canceled mail"],
Zerotorescue@68 656 desc = L["Announce when mail is skipped because it's |cfffed000auction canceled mail|r."],
Zerotorescue@0 657 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHcanceled = v; end,
Zerotorescue@0 658 get = function() return MailOpener.db.profile.notifications.skipped.AHcanceled; end,
Zerotorescue@0 659 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 660 },
Zerotorescue@0 661 skippedAHOutbid = {
Zerotorescue@0 662 order = 46,
Zerotorescue@0 663 type = "toggle",
Zerotorescue@68 664 name = L["Auction outbid mail"],
Zerotorescue@68 665 desc = L["Announce when mail is skipped because it's |cfffed000auction outbid mail|r."],
Zerotorescue@0 666 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHoutbid = v; end,
Zerotorescue@0 667 get = function() return MailOpener.db.profile.notifications.skipped.AHoutbid; end,
Zerotorescue@0 668 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 669 },
Zerotorescue@0 670 skippedOther = {
Zerotorescue@0 671 order = 47,
Zerotorescue@0 672 type = "toggle",
Zerotorescue@68 673 name = L["Other mail (e.g. plain text)"],
Zerotorescue@68 674 desc = L["Announce when mail is skipped because it's |cfffed000any other kind of mail|r (e.g. plain text)."],
Zerotorescue@0 675 set = function(i, v) MailOpener.db.profile.notifications.skipped.other = v; end,
Zerotorescue@0 676 get = function() return MailOpener.db.profile.notifications.skipped.other; end,
Zerotorescue@0 677 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 678 },
Zerotorescue@0 679 },
Zerotorescue@0 680 }, -- end Mail Skipped Notifications config inline group
Zerotorescue@0 681
Zerotorescue@0 682 -- Mail Processed Notifications config inline group
Zerotorescue@0 683 mailProcessed = {
Zerotorescue@0 684 order = 40,
Zerotorescue@0 685 type = "group",
Zerotorescue@0 686 inline = true,
Zerotorescue@68 687 name = L["Mail Processed Notifications"],
Zerotorescue@0 688 args = {
Zerotorescue@0 689 descriptionMailProcessed = {
Zerotorescue@0 690 order = 61,
Zerotorescue@0 691 type = "description",
Zerotorescue@68 692 name = L["Announce when mail is processed because..."],
Zerotorescue@0 693 },
Zerotorescue@0 694
Zerotorescue@0 695 processedToggleAll = {
Zerotorescue@0 696 order = 65,
Zerotorescue@0 697 type = "toggle",
Zerotorescue@68 698 name = L["Toggle everything"],
Zerotorescue@68 699 desc = L["Announce when mail is processed for |cfffed000any|r reason."],
Zerotorescue@0 700 set = function(i, v) MailOpener.db.profile.notifications.processed.all = v; end,
Zerotorescue@0 701 get = function() return MailOpener.db.profile.notifications.processed.all; end,
Zerotorescue@0 702 },
Zerotorescue@0 703 processedNormalGoldMail = {
Zerotorescue@0 704 order = 70,
Zerotorescue@0 705 type = "toggle",
Zerotorescue@68 706 name = L["Normal mail with gold"],
Zerotorescue@68 707 desc = L["Announce when mail is processed because it's |cfffed000normal mail containing gold|r."],
Zerotorescue@0 708 set = function(i, v) MailOpener.db.profile.notifications.processed.normalGoldMail = v; end,
Zerotorescue@0 709 get = function() return MailOpener.db.profile.notifications.processed.normalGoldMail; end,
Zerotorescue@0 710 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 711 },
Zerotorescue@0 712 processedNormalItemsMail = {
Zerotorescue@0 713 order = 71,
Zerotorescue@0 714 type = "toggle",
Zerotorescue@68 715 name = L["Normal mail with attachments"],
Zerotorescue@68 716 desc = L["Announce when mail is processed because it's |cfffed000normal mail containing items|r."],
Zerotorescue@0 717 set = function(i, v) MailOpener.db.profile.notifications.processed.normalItemsMail = v; end,
Zerotorescue@0 718 get = function() return MailOpener.db.profile.notifications.processed.normalItemsMail; end,
Zerotorescue@0 719 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 720 },
Zerotorescue@0 721 processedAHExpired = {
Zerotorescue@0 722 order = 72,
Zerotorescue@0 723 type = "toggle",
Zerotorescue@68 724 name = L["Auction expired mail"],
Zerotorescue@68 725 desc = L["Announce when mail is processed because it's |cfffed000auction expired mail|r."],
Zerotorescue@0 726 set = function(i, v) MailOpener.db.profile.notifications.processed.AHexpired = v; end,
Zerotorescue@0 727 get = function() return MailOpener.db.profile.notifications.processed.AHexpired; end,
Zerotorescue@0 728 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 729 },
Zerotorescue@0 730 processedAHSuccessful = {
Zerotorescue@0 731 order = 73,
Zerotorescue@0 732 type = "toggle",
Zerotorescue@68 733 name = L["Auction successful mail"],
Zerotorescue@68 734 desc = L["Announce when mail is processed because it's |cfffed000auction successful mail|r."],
Zerotorescue@0 735 set = function(i, v) MailOpener.db.profile.notifications.processed.AHsuccess = v; end,
Zerotorescue@0 736 get = function() return MailOpener.db.profile.notifications.processed.AHsuccess; end,
Zerotorescue@0 737 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 738 },
Zerotorescue@0 739 processedAHWon = {
Zerotorescue@0 740 order = 74,
Zerotorescue@0 741 type = "toggle",
Zerotorescue@68 742 name = L["Auction won mail"],
Zerotorescue@68 743 desc = L["Announce when mail is processed because it's |cfffed000auction won mail|r."],
Zerotorescue@0 744 set = function(i, v) MailOpener.db.profile.notifications.processed.AHwon = v; end,
Zerotorescue@0 745 get = function() return MailOpener.db.profile.notifications.processed.AHwon; end,
Zerotorescue@0 746 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 747 },
Zerotorescue@0 748 processedAHCanceled = {
Zerotorescue@0 749 order = 75,
Zerotorescue@0 750 type = "toggle",
Zerotorescue@68 751 name = L["Auction canceled mail"],
Zerotorescue@68 752 desc = L["Announce when mail is processed because it's |cfffed000auction canceled mail|r."],
Zerotorescue@0 753 set = function(i, v) MailOpener.db.profile.notifications.processed.AHcanceled = v; end,
Zerotorescue@0 754 get = function() return MailOpener.db.profile.notifications.processed.AHcanceled; end,
Zerotorescue@0 755 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 756 },
Zerotorescue@0 757 processedAHOutbid = {
Zerotorescue@0 758 order = 76,
Zerotorescue@0 759 type = "toggle",
Zerotorescue@68 760 name = L["Auction outbid mail"],
Zerotorescue@68 761 desc = L["Announce when mail is processed because it's |cfffed000auction outbid mail|r."],
Zerotorescue@0 762 set = function(i, v) MailOpener.db.profile.notifications.processed.AHoutbid = v; end,
Zerotorescue@0 763 get = function() return MailOpener.db.profile.notifications.processed.AHoutbid; end,
Zerotorescue@0 764 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 765 },
Zerotorescue@0 766 processedOther = {
Zerotorescue@0 767 order = 77,
Zerotorescue@0 768 type = "toggle",
Zerotorescue@68 769 name = L["Other mail (e.g. plain text)"],
Zerotorescue@68 770 desc = L["Announce when mail is processed because it's |cfffed000any other kind of mail|r (e.g. plain text)."],
Zerotorescue@0 771 set = function(i, v) MailOpener.db.profile.notifications.processed.other = v; end,
Zerotorescue@0 772 get = function() return MailOpener.db.profile.notifications.processed.other; end,
Zerotorescue@0 773 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 774 },
Zerotorescue@0 775 },
Zerotorescue@0 776 }, -- end Mail Processed Notifications config inline group
Zerotorescue@0 777
Zerotorescue@0 778 -- Sound Notifications config inline group
Zerotorescue@0 779 sound = {
Zerotorescue@0 780 order = 50,
Zerotorescue@0 781 type = "group",
Zerotorescue@0 782 inline = true,
Zerotorescue@68 783 name = L["Sound Notifications"],
Zerotorescue@0 784 args = {
Zerotorescue@42 785 descriptionMailProcessed = {
Zerotorescue@42 786 order = 61,
Zerotorescue@42 787 type = "description",
Zerotorescue@68 788 name = L["Play a sound when..."],
Zerotorescue@42 789 },
Zerotorescue@0 790 bagsFullSound = {
Zerotorescue@0 791 order = 100,
Zerotorescue@0 792 type = "toggle",
Zerotorescue@68 793 name = L["Inventory is full"],
Zerotorescue@68 794 desc = L["Play a sound when your inventory is full. You can select what sound in the select box next to this."],
Zerotorescue@0 795 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSound = v; end,
Zerotorescue@0 796 get = function() return MailOpener.db.profile.notifications.bagsFullSound; end,
Zerotorescue@42 797 width = "medium",
Zerotorescue@0 798 },
Zerotorescue@0 799 bagsFullSoundFile = {
Zerotorescue@0 800 order = 101,
Zerotorescue@0 801 type = "select",
Zerotorescue@68 802 name = L["Sound File"],
Zerotorescue@68 803 desc = L["Sound file to play when your bags are full."],
Zerotorescue@0 804 dialogControl = "LSM30_Sound",
Zerotorescue@0 805 set = function(i, v)
Zerotorescue@0 806 MailOpener.db.profile.notifications.bagsFullSoundFile = Media:Fetch("sound", v);
Zerotorescue@0 807 MailOpener.db.profile.notifications.bagsFullSoundFileName = v;
Zerotorescue@0 808
Zerotorescue@0 809 PlaySoundFile(MailOpener.db.profile.notifications.bagsFullSoundFile);
Zerotorescue@0 810
Zerotorescue@68 811 MailOpener:Print(L["You may have to increase the mail opening interval if this sound effect gets spammy. The recommended value is 10 seconds."]);
Zerotorescue@0 812 end,
Zerotorescue@0 813 get = function() return MailOpener.db.profile.notifications.bagsFullSoundFileName end,
Zerotorescue@0 814 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 815 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@0 816 },
Zerotorescue@0 817 bagsFullSoundOnlyOnce = {
Zerotorescue@0 818 order = 102,
Zerotorescue@0 819 type = "toggle",
Zerotorescue@68 820 name = L["Only once"],
Zerotorescue@68 821 desc = L["Only play this sound once each time new mail has been arrived or your bags are updated."],
Zerotorescue@0 822 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce = v; end,
Zerotorescue@0 823 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce; end,
Zerotorescue@0 824 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@42 825 --width = "half",
Zerotorescue@42 826 },
Zerotorescue@42 827 bagsFullSoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 828 order = 103,
Zerotorescue@42 829 type = "toggle",
Zerotorescue@68 830 name = L["...per mailbox visit"],
Zerotorescue@68 831 desc = L["Only play this sound once each time you visit the mailbox."],
Zerotorescue@42 832 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 833 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 834 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce); end,
Zerotorescue@0 835 },
Zerotorescue@0 836 mailboxEmptySound = {
Zerotorescue@0 837 order = 110,
Zerotorescue@0 838 type = "toggle",
Zerotorescue@68 839 name = L["No more mail can be opened"],
Zerotorescue@68 840 desc = L["Play a sound when no more mail can be opened. You can select what sound in the select box next to this."],
Zerotorescue@0 841 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySound = v; end,
Zerotorescue@0 842 get = function() return MailOpener.db.profile.notifications.mailboxEmptySound; end,
Zerotorescue@42 843 --width = "double",
Zerotorescue@0 844 },
Zerotorescue@0 845 mailboxEmptySoundFile = {
Zerotorescue@0 846 order = 111,
Zerotorescue@0 847 type = "select",
Zerotorescue@68 848 name = L["Sound File"],
Zerotorescue@68 849 desc = L["Sound file to play when Mail Opener can't open any more mail."],
Zerotorescue@0 850 dialogControl = "LSM30_Sound",
Zerotorescue@0 851 set = function(i, v)
Zerotorescue@0 852 MailOpener.db.profile.notifications.mailboxEmptySoundFile = Media:Fetch("sound", v);
Zerotorescue@0 853 MailOpener.db.profile.notifications.mailboxEmptySoundFileName = v;
Zerotorescue@0 854
Zerotorescue@0 855 PlaySoundFile(MailOpener.db.profile.notifications.mailboxEmptySoundFile);
Zerotorescue@0 856
Zerotorescue@68 857 MailOpener:Print(L["You may have to increase the mail opening interval if this sound effect gets spammy. The recommended value is 10 seconds."]);
Zerotorescue@0 858 end,
Zerotorescue@0 859 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundFileName end,
Zerotorescue@0 860 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 861 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@0 862 },
Zerotorescue@0 863 mailboxEmptySoundOnlyOnce = {
Zerotorescue@0 864 order = 112,
Zerotorescue@0 865 type = "toggle",
Zerotorescue@68 866 name = L["Only once"],
Zerotorescue@68 867 desc = L["Only play this sound once each time new mail has been arrived."],
Zerotorescue@0 868 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce = v; end,
Zerotorescue@0 869 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce; end,
Zerotorescue@0 870 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@42 871 --width = "half",
Zerotorescue@42 872 },
Zerotorescue@42 873 mailboxEmptySoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 874 order = 113,
Zerotorescue@42 875 type = "toggle",
Zerotorescue@68 876 name = L["...per mailbox visit"],
Zerotorescue@68 877 desc = L["Only play this sound once each time you visit the mailbox."],
Zerotorescue@42 878 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 879 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 880 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce); end,
Zerotorescue@0 881 },
Zerotorescue@0 882 },
Zerotorescue@0 883 }, -- end Sound Notifications config inline group
Zerotorescue@0 884 },
Zerotorescue@0 885 };
Zerotorescue@0 886
Zerotorescue@0 887 return notificationsConfigGroup;
Zerotorescue@0 888 end