annotate Modules/Config.lua @ 91:0a8e4a93316d

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