annotate Modules/Config.lua @ 128:23f05488970d

Added tag v1.2.8 for changeset ba697df5c2af
author Zerotorescue
date Sat, 16 Oct 2010 15:28:37 +0200
parents b21c39ea338c
children 42d8e16e8483
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@123 403 hidden = (not MailOpener.ZeroAuctionsEnabled),
Zerotorescue@0 404 },
Zerotorescue@108 405 overrideCheckInbox = {
Zerotorescue@108 406 order = 12,
Zerotorescue@108 407 type = "toggle",
Zerotorescue@111 408 name = L["Don't refresh the mailbox while there is still mail waiting to be opened"],
Zerotorescue@111 409 desc = L["Having this option toggled on will prevent the mailbox from automatically refreshing while there is still openable mail remaining.\n\nIf you close the mailbox while there is still mail remaining, your client will always try to refresh the inbox when you reopen it. This feature will wait with refreshing until there is no openable mail remaining, possibly saving a few seconds."],
Zerotorescue@108 410 width = "full",
Zerotorescue@108 411 get = function() return MailOpener.db.profile.general.overrideCheckInbox; end,
Zerotorescue@108 412 set = function(i, v) MailOpener.db.profile.general.overrideCheckInbox = v; end,
Zerotorescue@108 413 },
Zerotorescue@0 414 continueOpeningStackableItems = {
Zerotorescue@0 415 order = 15,
Zerotorescue@0 416 type = "toggle",
Zerotorescue@68 417 name = L["Continue trying to open mail after your bags are full"],
Zerotorescue@68 418 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 419 width = "full",
Zerotorescue@0 420 get = function() return MailOpener.db.profile.general.continueOpeningStackableItems; end,
Zerotorescue@0 421 set = function(i, v) MailOpener.db.profile.general.continueOpeningStackableItems = v; end,
Zerotorescue@0 422 },
Zerotorescue@51 423 showHelpTooltips = {
Zerotorescue@51 424 order = 17,
Zerotorescue@51 425 type = "toggle",
Zerotorescue@68 426 name = L["Display help tooltips at the mailbox buttons added by Mail Opener."],
Zerotorescue@68 427 desc = L["Display the help tooltips when hovering at any of the mailbox buttons added by Mail Opener."],
Zerotorescue@51 428 width = "full",
Zerotorescue@51 429 get = function() return MailOpener.db.profile.general.showHelpTooltips; end,
Zerotorescue@51 430 set = function(i, v) MailOpener.db.profile.general.showHelpTooltips = v; end,
Zerotorescue@51 431 },
Zerotorescue@0 432 autoDisableQAAutoMail = {
Zerotorescue@0 433 order = 20,
Zerotorescue@0 434 type = "toggle",
Zerotorescue@68 435 name = L["Turn Quick Auction's auto mail status |cffff0000off|r when opening mail"],
Zerotorescue@68 436 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 437 width = "full",
Zerotorescue@0 438 get = function() return MailOpener.db.profile.general.autoDisableQAAutoMail; end,
Zerotorescue@0 439 set = function(i, v) MailOpener.db.profile.general.autoDisableQAAutoMail = v; end,
Zerotorescue@123 440 hidden = (not MailOpener.ZeroAuctionsEnabled),
Zerotorescue@0 441 },
Zerotorescue@0 442 autoReenableQAAutoMail = {
Zerotorescue@0 443 order = 30,
Zerotorescue@0 444 type = "toggle",
Zerotorescue@68 445 name = L["Turn Quick Auction's auto mail status |cff00ff00on|r after opening mail has finished"],
Zerotorescue@68 446 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 447 width = "full",
Zerotorescue@0 448 get = function() return MailOpener.db.profile.general.autoReenableQAAutoMail; end,
Zerotorescue@0 449 set = function(i, v) MailOpener.db.profile.general.autoReenableQAAutoMail = v; end,
Zerotorescue@123 450 hidden = (not MailOpener.ZeroAuctionsEnabled),
Zerotorescue@0 451 disabled = function() return (MailOpener.db.profile.general.autoSetBackQAAutoMail and not MailOpener.db.profile.general.autoReenableQAAutoMail); end,
Zerotorescue@0 452 },
Zerotorescue@0 453 autoSetBackQAAutoMail = {
Zerotorescue@0 454 order = 40,
Zerotorescue@0 455 type = "toggle",
Zerotorescue@68 456 name = L["Set Quick Auction's auto mail status |cff00ffffback|r after opening mail has finished (remember it)"],
Zerotorescue@68 457 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 458 width = "full",
Zerotorescue@0 459 get = function() return MailOpener.db.profile.general.autoSetBackQAAutoMail; end,
Zerotorescue@0 460 set = function(i, v) MailOpener.db.profile.general.autoSetBackQAAutoMail = v; end,
Zerotorescue@123 461 hidden = (not MailOpener.ZeroAuctionsEnabled),
Zerotorescue@0 462 disabled = function() return (MailOpener.db.profile.general.autoReenableQAAutoMail and not MailOpener.db.profile.general.autoSetBackQAAutoMail); end,
Zerotorescue@0 463 },
Zerotorescue@0 464 },
Zerotorescue@0 465 }, -- end General config inline group
Zerotorescue@0 466 -- Profile config inline group
Zerotorescue@0 467 profileConfig = {
Zerotorescue@0 468 order = 15,
Zerotorescue@0 469 type = "group",
Zerotorescue@0 470 inline = true,
Zerotorescue@68 471 name = L["New Character Specific Profile"],
Zerotorescue@0 472 args = {
Zerotorescue@0 473 description = {
Zerotorescue@0 474 order = 10,
Zerotorescue@0 475 type = "description",
Zerotorescue@68 476 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 477 },
Zerotorescue@0 478 header = {
Zerotorescue@0 479 order = 15,
Zerotorescue@0 480 type = "header",
Zerotorescue@0 481 name = "",
Zerotorescue@0 482 },
Zerotorescue@0 483 createNewProfile = {
Zerotorescue@0 484 order = 20,
Zerotorescue@0 485 type = "execute",
Zerotorescue@68 486 name = L["Create a new character specific profile"],
Zerotorescue@68 487 desc = L["Create a new profile for this user. You can also make profile groups at the profiles tab to the left."],
Zerotorescue@0 488 width = "double",
Zerotorescue@0 489 func = function()
Zerotorescue@0 490 MailOpener.db:SetProfile(UnitName("player") .. " - " .. GetRealmName());
Zerotorescue@0 491 end,
Zerotorescue@0 492 },
Zerotorescue@0 493 },
Zerotorescue@0 494 }, -- end Profile config inline group
Zerotorescue@60 495 -- Tip
Zerotorescue@60 496 tipConfig = {
Zerotorescue@60 497 order = 20,
Zerotorescue@60 498 type = "group",
Zerotorescue@60 499 inline = true,
Zerotorescue@68 500 name = L["Mail Opening Tip"],
Zerotorescue@60 501 args = {
Zerotorescue@60 502 description = {
Zerotorescue@60 503 order = 10,
Zerotorescue@60 504 type = "description",
Zerotorescue@60 505 fontSize = "medium",
Zerotorescue@60 506 name = function() return tip; end,
Zerotorescue@60 507 },
Zerotorescue@60 508 nextTip = {
Zerotorescue@60 509 order = 20,
Zerotorescue@60 510 type = "execute",
Zerotorescue@68 511 name = L["Next Tip"],
Zerotorescue@60 512 width = "half",
Zerotorescue@60 513 func = function() self:NextTip(); self:GetTip(); end,
Zerotorescue@60 514 },
Zerotorescue@77 515 tipLink = {
Zerotorescue@77 516 order = 30,
Zerotorescue@77 517 type = "execute",
Zerotorescue@77 518 name = L["Copy URL"],
Zerotorescue@77 519 width = "half",
Zerotorescue@77 520 func = function()
Zerotorescue@77 521 MailOpener.currentPopupContents = tipLink;
Zerotorescue@77 522
Zerotorescue@77 523 StaticPopup_Show("MailOpenerCopyWindow");
Zerotorescue@77 524 end,
Zerotorescue@77 525 hidden = function() return tipLink == nil; end,
Zerotorescue@77 526 },
Zerotorescue@60 527 },
Zerotorescue@60 528 }, -- end Tip
Zerotorescue@0 529 },
Zerotorescue@0 530 };
Zerotorescue@0 531
Zerotorescue@0 532 return generalConfigGroup;
Zerotorescue@0 533 end
Zerotorescue@0 534
Zerotorescue@31 535 function mod:GetNotificationsOptions()
Zerotorescue@0 536 local notificationsConfigGroup = {
Zerotorescue@0 537 order = 200,
Zerotorescue@0 538 type = "group",
Zerotorescue@68 539 name = L["Notifications"],
Zerotorescue@68 540 desc = L["Toggle notifications."],
Zerotorescue@0 541 args = {
Zerotorescue@0 542 -- Notifications config inline group
Zerotorescue@0 543 nofitications = {
Zerotorescue@0 544 order = 10,
Zerotorescue@0 545 type = "group",
Zerotorescue@0 546 inline = true,
Zerotorescue@68 547 name = L["Notifications"],
Zerotorescue@0 548 args = {
Zerotorescue@0 549 description = {
Zerotorescue@0 550 order = 10,
Zerotorescue@0 551 type = "description",
Zerotorescue@68 552 name = L["Notifications"],
Zerotorescue@0 553 },
Zerotorescue@0 554 },
Zerotorescue@0 555 }, -- end Notifications config inline group
Zerotorescue@0 556
Zerotorescue@0 557 -- General Notifications config inline group
Zerotorescue@0 558 general = {
Zerotorescue@0 559 order = 20,
Zerotorescue@0 560 type = "group",
Zerotorescue@0 561 inline = true,
Zerotorescue@68 562 name = L["General Notifications"],
Zerotorescue@0 563 args = {
Zerotorescue@0 564 fishedOpeningBatch = {
Zerotorescue@0 565 order = 22,
Zerotorescue@0 566 type = "toggle",
Zerotorescue@68 567 name = L["Announce when |cfffed000finished opening the current batch|r"],
Zerotorescue@68 568 desc = L["Announce when opening of the current batch of mail has been completed."],
Zerotorescue@0 569 set = function(i, v) MailOpener.db.profile.notifications.finishedCurrentBatch = v; end,
Zerotorescue@0 570 get = function() return MailOpener.db.profile.notifications.finishedCurrentBatch; end,
Zerotorescue@0 571 width = "double",
Zerotorescue@0 572 },
Zerotorescue@0 573 noMoreMailAvailable = {
Zerotorescue@0 574 order = 23,
Zerotorescue@0 575 type = "toggle",
Zerotorescue@68 576 name = L["Announce when |cfffed000the mailbox is completely empty|r"],
Zerotorescue@68 577 desc = L["Announce when there is nothing left for Mail Opener to open."],
Zerotorescue@0 578 set = function(i, v) MailOpener.db.profile.notifications.mailboxIsEmpty = v; end,
Zerotorescue@0 579 get = function() return MailOpener.db.profile.notifications.mailboxIsEmpty; end,
Zerotorescue@0 580 width = "double",
Zerotorescue@0 581 },
Zerotorescue@0 582 },
Zerotorescue@0 583 }, -- end General Notifications config inline group
Zerotorescue@0 584
Zerotorescue@0 585 -- Mail Skipped Notifications config inline group
Zerotorescue@0 586 mailSkipped = {
Zerotorescue@0 587 order = 30,
Zerotorescue@0 588 type = "group",
Zerotorescue@0 589 inline = true,
Zerotorescue@68 590 name = L["Mail Skipped Notifications"],
Zerotorescue@0 591 args = {
Zerotorescue@0 592 descriptionMailSkipped = {
Zerotorescue@0 593 order = 31,
Zerotorescue@0 594 type = "description",
Zerotorescue@68 595 name = L["Announce when mail is skipped because..."],
Zerotorescue@0 596 },
Zerotorescue@0 597
Zerotorescue@0 598 skippedToggleAll = {
Zerotorescue@0 599 order = 35,
Zerotorescue@0 600 type = "toggle",
Zerotorescue@68 601 name = L["Toggle everything"],
Zerotorescue@68 602 desc = L["Announce when mail is skipped for |cfffed000any|r reason."],
Zerotorescue@0 603 set = function(i, v) MailOpener.db.profile.notifications.skipped.all = v; end,
Zerotorescue@0 604 get = function() return MailOpener.db.profile.notifications.skipped.all; end,
Zerotorescue@0 605 },
Zerotorescue@0 606 skippedInventoryFull = {
Zerotorescue@0 607 order = 36,
Zerotorescue@0 608 type = "toggle",
Zerotorescue@68 609 name = L["Your inventory is full"],
Zerotorescue@68 610 desc = L["Announce when mail is skipped because |cfffed000your inventory is full|r."],
Zerotorescue@0 611 set = function(i, v) MailOpener.db.profile.notifications.skipped.inventoryFull = v; end,
Zerotorescue@0 612 get = function() return MailOpener.db.profile.notifications.skipped.inventoryFull; end,
Zerotorescue@0 613 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 614 },
Zerotorescue@0 615 skippedKeepFreeSpaceLimit = {
Zerotorescue@0 616 order = 37,
Zerotorescue@0 617 type = "toggle",
Zerotorescue@68 618 name = L["Keep free space limit reached"],
Zerotorescue@68 619 desc = L["Announce when mail is skipped because |cfffed000the keep free space limit has been reached|r."],
Zerotorescue@0 620 set = function(i, v) MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit = v; end,
Zerotorescue@0 621 get = function() return MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit; end,
Zerotorescue@0 622 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 623 },
Zerotorescue@0 624 skippedGMMail = {
Zerotorescue@0 625 order = 38,
Zerotorescue@0 626 type = "toggle",
Zerotorescue@68 627 name = L["Blizzard mail"],
Zerotorescue@68 628 desc = L["Announce when mail is skipped because it's |cfffed000mail sent by Blizzard|r."],
Zerotorescue@0 629 set = function(i, v) MailOpener.db.profile.notifications.skipped.GMMail = v; end,
Zerotorescue@0 630 get = function() return MailOpener.db.profile.notifications.skipped.GMMail; end,
Zerotorescue@0 631 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 632 },
Zerotorescue@0 633 skippedCOD = {
Zerotorescue@0 634 order = 39,
Zerotorescue@0 635 type = "toggle",
Zerotorescue@68 636 name = L["C.O.D. mail"],
Zerotorescue@68 637 desc = L["Announce when mail is skipped because it's |cfffed000a Cost On Delivery mail|r."],
Zerotorescue@0 638 set = function(i, v) MailOpener.db.profile.notifications.skipped.COD = v; end,
Zerotorescue@0 639 get = function() return MailOpener.db.profile.notifications.skipped.COD; end,
Zerotorescue@0 640 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 641 },
Zerotorescue@0 642 skippedNormalGoldMail = {
Zerotorescue@0 643 order = 40,
Zerotorescue@0 644 type = "toggle",
Zerotorescue@68 645 name = L["Normal mail with gold"],
Zerotorescue@68 646 desc = L["Announce when mail is skipped because it's |cfffed000normal mail containing gold|r."],
Zerotorescue@0 647 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalGoldMail = v; end,
Zerotorescue@0 648 get = function() return MailOpener.db.profile.notifications.skipped.normalGoldMail; end,
Zerotorescue@0 649 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 650 },
Zerotorescue@0 651 skippedNormalItemsMail = {
Zerotorescue@0 652 order = 41,
Zerotorescue@0 653 type = "toggle",
Zerotorescue@68 654 name = L["Normal mail with attachments"],
Zerotorescue@68 655 desc = L["Announce when mail is skipped because it's |cfffed000normal mail containing items|r."],
Zerotorescue@0 656 set = function(i, v) MailOpener.db.profile.notifications.skipped.normalItemsMail = v; end,
Zerotorescue@0 657 get = function() return MailOpener.db.profile.notifications.skipped.normalItemsMail; end,
Zerotorescue@0 658 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 659 },
Zerotorescue@0 660 skippedAHExpired = {
Zerotorescue@0 661 order = 42,
Zerotorescue@0 662 type = "toggle",
Zerotorescue@68 663 name = L["Auction expired mail"],
Zerotorescue@68 664 desc = L["Announce when mail is skipped because it's |cfffed000auction expired mail|r."],
Zerotorescue@0 665 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHexpired = v; end,
Zerotorescue@0 666 get = function() return MailOpener.db.profile.notifications.skipped.AHexpired; end,
Zerotorescue@0 667 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 668 },
Zerotorescue@0 669 skippedAHSuccessful = {
Zerotorescue@0 670 order = 43,
Zerotorescue@0 671 type = "toggle",
Zerotorescue@68 672 name = L["Auction successful mail"],
Zerotorescue@68 673 desc = L["Announce when mail is skipped because it's |cfffed000auction successful mail|r."],
Zerotorescue@0 674 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHsuccess = v; end,
Zerotorescue@0 675 get = function() return MailOpener.db.profile.notifications.skipped.AHsuccess; end,
Zerotorescue@0 676 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 677 },
Zerotorescue@0 678 skippedAHWon = {
Zerotorescue@0 679 order = 44,
Zerotorescue@0 680 type = "toggle",
Zerotorescue@68 681 name = L["Auction won mail"],
Zerotorescue@68 682 desc = L["Announce when mail is skipped because it's |cfffed000auction won mail|r."],
Zerotorescue@0 683 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHwon = v; end,
Zerotorescue@0 684 get = function() return MailOpener.db.profile.notifications.skipped.AHwon; end,
Zerotorescue@0 685 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 686 },
Zerotorescue@0 687 skippedAHCanceled = {
Zerotorescue@0 688 order = 45,
Zerotorescue@0 689 type = "toggle",
Zerotorescue@68 690 name = L["Auction canceled mail"],
Zerotorescue@68 691 desc = L["Announce when mail is skipped because it's |cfffed000auction canceled mail|r."],
Zerotorescue@0 692 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHcanceled = v; end,
Zerotorescue@0 693 get = function() return MailOpener.db.profile.notifications.skipped.AHcanceled; end,
Zerotorescue@0 694 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 695 },
Zerotorescue@0 696 skippedAHOutbid = {
Zerotorescue@0 697 order = 46,
Zerotorescue@0 698 type = "toggle",
Zerotorescue@68 699 name = L["Auction outbid mail"],
Zerotorescue@68 700 desc = L["Announce when mail is skipped because it's |cfffed000auction outbid mail|r."],
Zerotorescue@0 701 set = function(i, v) MailOpener.db.profile.notifications.skipped.AHoutbid = v; end,
Zerotorescue@0 702 get = function() return MailOpener.db.profile.notifications.skipped.AHoutbid; end,
Zerotorescue@0 703 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 704 },
Zerotorescue@0 705 skippedOther = {
Zerotorescue@0 706 order = 47,
Zerotorescue@0 707 type = "toggle",
Zerotorescue@68 708 name = L["Other mail (e.g. plain text)"],
Zerotorescue@68 709 desc = L["Announce when mail is skipped because it's |cfffed000any other kind of mail|r (e.g. plain text)."],
Zerotorescue@0 710 set = function(i, v) MailOpener.db.profile.notifications.skipped.other = v; end,
Zerotorescue@0 711 get = function() return MailOpener.db.profile.notifications.skipped.other; end,
Zerotorescue@0 712 disabled = function() return (not MailOpener.db.profile.notifications.skipped.all); end,
Zerotorescue@0 713 },
Zerotorescue@0 714 },
Zerotorescue@0 715 }, -- end Mail Skipped Notifications config inline group
Zerotorescue@0 716
Zerotorescue@0 717 -- Mail Processed Notifications config inline group
Zerotorescue@0 718 mailProcessed = {
Zerotorescue@0 719 order = 40,
Zerotorescue@0 720 type = "group",
Zerotorescue@0 721 inline = true,
Zerotorescue@68 722 name = L["Mail Processed Notifications"],
Zerotorescue@0 723 args = {
Zerotorescue@0 724 descriptionMailProcessed = {
Zerotorescue@0 725 order = 61,
Zerotorescue@0 726 type = "description",
Zerotorescue@68 727 name = L["Announce when mail is processed because..."],
Zerotorescue@0 728 },
Zerotorescue@0 729
Zerotorescue@0 730 processedToggleAll = {
Zerotorescue@0 731 order = 65,
Zerotorescue@0 732 type = "toggle",
Zerotorescue@68 733 name = L["Toggle everything"],
Zerotorescue@68 734 desc = L["Announce when mail is processed for |cfffed000any|r reason."],
Zerotorescue@0 735 set = function(i, v) MailOpener.db.profile.notifications.processed.all = v; end,
Zerotorescue@0 736 get = function() return MailOpener.db.profile.notifications.processed.all; end,
Zerotorescue@0 737 },
Zerotorescue@0 738 processedNormalGoldMail = {
Zerotorescue@0 739 order = 70,
Zerotorescue@0 740 type = "toggle",
Zerotorescue@68 741 name = L["Normal mail with gold"],
Zerotorescue@68 742 desc = L["Announce when mail is processed because it's |cfffed000normal mail containing gold|r."],
Zerotorescue@0 743 set = function(i, v) MailOpener.db.profile.notifications.processed.normalGoldMail = v; end,
Zerotorescue@0 744 get = function() return MailOpener.db.profile.notifications.processed.normalGoldMail; end,
Zerotorescue@0 745 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 746 },
Zerotorescue@0 747 processedNormalItemsMail = {
Zerotorescue@0 748 order = 71,
Zerotorescue@0 749 type = "toggle",
Zerotorescue@68 750 name = L["Normal mail with attachments"],
Zerotorescue@68 751 desc = L["Announce when mail is processed because it's |cfffed000normal mail containing items|r."],
Zerotorescue@0 752 set = function(i, v) MailOpener.db.profile.notifications.processed.normalItemsMail = v; end,
Zerotorescue@0 753 get = function() return MailOpener.db.profile.notifications.processed.normalItemsMail; end,
Zerotorescue@0 754 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 755 },
Zerotorescue@0 756 processedAHExpired = {
Zerotorescue@0 757 order = 72,
Zerotorescue@0 758 type = "toggle",
Zerotorescue@68 759 name = L["Auction expired mail"],
Zerotorescue@68 760 desc = L["Announce when mail is processed because it's |cfffed000auction expired mail|r."],
Zerotorescue@0 761 set = function(i, v) MailOpener.db.profile.notifications.processed.AHexpired = v; end,
Zerotorescue@0 762 get = function() return MailOpener.db.profile.notifications.processed.AHexpired; end,
Zerotorescue@0 763 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 764 },
Zerotorescue@0 765 processedAHSuccessful = {
Zerotorescue@0 766 order = 73,
Zerotorescue@0 767 type = "toggle",
Zerotorescue@68 768 name = L["Auction successful mail"],
Zerotorescue@68 769 desc = L["Announce when mail is processed because it's |cfffed000auction successful mail|r."],
Zerotorescue@0 770 set = function(i, v) MailOpener.db.profile.notifications.processed.AHsuccess = v; end,
Zerotorescue@0 771 get = function() return MailOpener.db.profile.notifications.processed.AHsuccess; end,
Zerotorescue@0 772 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 773 },
Zerotorescue@0 774 processedAHWon = {
Zerotorescue@0 775 order = 74,
Zerotorescue@0 776 type = "toggle",
Zerotorescue@68 777 name = L["Auction won mail"],
Zerotorescue@68 778 desc = L["Announce when mail is processed because it's |cfffed000auction won mail|r."],
Zerotorescue@0 779 set = function(i, v) MailOpener.db.profile.notifications.processed.AHwon = v; end,
Zerotorescue@0 780 get = function() return MailOpener.db.profile.notifications.processed.AHwon; end,
Zerotorescue@0 781 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 782 },
Zerotorescue@0 783 processedAHCanceled = {
Zerotorescue@0 784 order = 75,
Zerotorescue@0 785 type = "toggle",
Zerotorescue@68 786 name = L["Auction canceled mail"],
Zerotorescue@68 787 desc = L["Announce when mail is processed because it's |cfffed000auction canceled mail|r."],
Zerotorescue@0 788 set = function(i, v) MailOpener.db.profile.notifications.processed.AHcanceled = v; end,
Zerotorescue@0 789 get = function() return MailOpener.db.profile.notifications.processed.AHcanceled; end,
Zerotorescue@0 790 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 791 },
Zerotorescue@0 792 processedAHOutbid = {
Zerotorescue@0 793 order = 76,
Zerotorescue@0 794 type = "toggle",
Zerotorescue@68 795 name = L["Auction outbid mail"],
Zerotorescue@68 796 desc = L["Announce when mail is processed because it's |cfffed000auction outbid mail|r."],
Zerotorescue@0 797 set = function(i, v) MailOpener.db.profile.notifications.processed.AHoutbid = v; end,
Zerotorescue@0 798 get = function() return MailOpener.db.profile.notifications.processed.AHoutbid; end,
Zerotorescue@0 799 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 800 },
Zerotorescue@0 801 processedOther = {
Zerotorescue@0 802 order = 77,
Zerotorescue@0 803 type = "toggle",
Zerotorescue@68 804 name = L["Other mail (e.g. plain text)"],
Zerotorescue@68 805 desc = L["Announce when mail is processed because it's |cfffed000any other kind of mail|r (e.g. plain text)."],
Zerotorescue@0 806 set = function(i, v) MailOpener.db.profile.notifications.processed.other = v; end,
Zerotorescue@0 807 get = function() return MailOpener.db.profile.notifications.processed.other; end,
Zerotorescue@0 808 disabled = function() return (not MailOpener.db.profile.notifications.processed.all); end,
Zerotorescue@0 809 },
Zerotorescue@0 810 },
Zerotorescue@0 811 }, -- end Mail Processed Notifications config inline group
Zerotorescue@0 812
Zerotorescue@0 813 -- Sound Notifications config inline group
Zerotorescue@0 814 sound = {
Zerotorescue@0 815 order = 50,
Zerotorescue@0 816 type = "group",
Zerotorescue@0 817 inline = true,
Zerotorescue@68 818 name = L["Sound Notifications"],
Zerotorescue@0 819 args = {
Zerotorescue@42 820 descriptionMailProcessed = {
Zerotorescue@42 821 order = 61,
Zerotorescue@42 822 type = "description",
Zerotorescue@68 823 name = L["Play a sound when..."],
Zerotorescue@42 824 },
Zerotorescue@0 825 bagsFullSound = {
Zerotorescue@0 826 order = 100,
Zerotorescue@0 827 type = "toggle",
Zerotorescue@68 828 name = L["Inventory is full"],
Zerotorescue@68 829 desc = L["Play a sound when your inventory is full. You can select what sound in the select box next to this."],
Zerotorescue@0 830 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSound = v; end,
Zerotorescue@0 831 get = function() return MailOpener.db.profile.notifications.bagsFullSound; end,
Zerotorescue@42 832 width = "medium",
Zerotorescue@0 833 },
Zerotorescue@0 834 bagsFullSoundFile = {
Zerotorescue@0 835 order = 101,
Zerotorescue@0 836 type = "select",
Zerotorescue@68 837 name = L["Sound File"],
Zerotorescue@68 838 desc = L["Sound file to play when your bags are full."],
Zerotorescue@0 839 dialogControl = "LSM30_Sound",
Zerotorescue@0 840 set = function(i, v)
Zerotorescue@0 841 MailOpener.db.profile.notifications.bagsFullSoundFile = Media:Fetch("sound", v);
Zerotorescue@0 842 MailOpener.db.profile.notifications.bagsFullSoundFileName = v;
Zerotorescue@0 843
Zerotorescue@0 844 PlaySoundFile(MailOpener.db.profile.notifications.bagsFullSoundFile);
Zerotorescue@0 845
Zerotorescue@68 846 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 847 end,
Zerotorescue@0 848 get = function() return MailOpener.db.profile.notifications.bagsFullSoundFileName end,
Zerotorescue@0 849 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 850 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@0 851 },
Zerotorescue@0 852 bagsFullSoundOnlyOnce = {
Zerotorescue@0 853 order = 102,
Zerotorescue@0 854 type = "toggle",
Zerotorescue@68 855 name = L["Only once"],
Zerotorescue@68 856 desc = L["Only play this sound once each time new mail has been arrived or your bags are updated."],
Zerotorescue@0 857 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce = v; end,
Zerotorescue@0 858 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce; end,
Zerotorescue@0 859 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound); end,
Zerotorescue@42 860 --width = "half",
Zerotorescue@42 861 },
Zerotorescue@42 862 bagsFullSoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 863 order = 103,
Zerotorescue@42 864 type = "toggle",
Zerotorescue@68 865 name = L["...per mailbox visit"],
Zerotorescue@68 866 desc = L["Only play this sound once each time you visit the mailbox."],
Zerotorescue@42 867 set = function(i, v) MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 868 get = function() return MailOpener.db.profile.notifications.bagsFullSoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 869 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.bagsFullSoundOnlyOnce); end,
Zerotorescue@0 870 },
Zerotorescue@0 871 mailboxEmptySound = {
Zerotorescue@0 872 order = 110,
Zerotorescue@0 873 type = "toggle",
Zerotorescue@68 874 name = L["No more mail can be opened"],
Zerotorescue@68 875 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 876 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySound = v; end,
Zerotorescue@0 877 get = function() return MailOpener.db.profile.notifications.mailboxEmptySound; end,
Zerotorescue@42 878 --width = "double",
Zerotorescue@0 879 },
Zerotorescue@0 880 mailboxEmptySoundFile = {
Zerotorescue@0 881 order = 111,
Zerotorescue@0 882 type = "select",
Zerotorescue@68 883 name = L["Sound File"],
Zerotorescue@68 884 desc = L["Sound file to play when Mail Opener can't open any more mail."],
Zerotorescue@0 885 dialogControl = "LSM30_Sound",
Zerotorescue@0 886 set = function(i, v)
Zerotorescue@0 887 MailOpener.db.profile.notifications.mailboxEmptySoundFile = Media:Fetch("sound", v);
Zerotorescue@0 888 MailOpener.db.profile.notifications.mailboxEmptySoundFileName = v;
Zerotorescue@0 889
Zerotorescue@0 890 PlaySoundFile(MailOpener.db.profile.notifications.mailboxEmptySoundFile);
Zerotorescue@0 891
Zerotorescue@68 892 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 893 end,
Zerotorescue@0 894 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundFileName end,
Zerotorescue@0 895 values = function () return (Media:HashTable("sound") or nil); end,
Zerotorescue@0 896 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@0 897 },
Zerotorescue@0 898 mailboxEmptySoundOnlyOnce = {
Zerotorescue@0 899 order = 112,
Zerotorescue@0 900 type = "toggle",
Zerotorescue@68 901 name = L["Only once"],
Zerotorescue@68 902 desc = L["Only play this sound once each time new mail has been arrived."],
Zerotorescue@0 903 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce = v; end,
Zerotorescue@0 904 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce; end,
Zerotorescue@0 905 disabled = function() return (not MailOpener.db.profile.notifications.mailboxEmptySound); end,
Zerotorescue@42 906 --width = "half",
Zerotorescue@42 907 },
Zerotorescue@42 908 mailboxEmptySoundOnlyOncePerMailboxVisit = {
Zerotorescue@42 909 order = 113,
Zerotorescue@42 910 type = "toggle",
Zerotorescue@68 911 name = L["...per mailbox visit"],
Zerotorescue@68 912 desc = L["Only play this sound once each time you visit the mailbox."],
Zerotorescue@42 913 set = function(i, v) MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit = v; end,
Zerotorescue@42 914 get = function() return MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOncePerMailboxVisit; end,
Zerotorescue@42 915 disabled = function() return (not MailOpener.db.profile.notifications.bagsFullSound or not MailOpener.db.profile.notifications.mailboxEmptySoundOnlyOnce); end,
Zerotorescue@0 916 },
Zerotorescue@0 917 },
Zerotorescue@0 918 }, -- end Sound Notifications config inline group
Zerotorescue@0 919 },
Zerotorescue@0 920 };
Zerotorescue@0 921
Zerotorescue@0 922 return notificationsConfigGroup;
Zerotorescue@0 923 end