Add settings menu and saved variables

Sasky [06-21-14 - 12:26]
Add settings menu and saved variables
Filename
LAddMin.lua
LAddMin.txt
LibAddonMenu-1.0.txt
diff --git a/LAddMin.lua b/LAddMin.lua
index 63860bb..a72b602 100644
--- a/LAddMin.lua
+++ b/LAddMin.lua
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- LAddMin v0.1
+-- LAddMin v0.2
 -------------------------------------------------------------------------------
 --
 -- Copyright (c) 2014 Ales Machat (Garkin)
@@ -34,42 +34,40 @@ local LAM1 = LibStub("LibAddonMenu-1.0")
 local LAM2 = LibStub("LibAddonMenu-2.0")

 -------------------------------------------------------------------------------
--- Library replacement --------------------------------------------------------
+-- Local variables ------------------------------------------------------------
 -------------------------------------------------------------------------------
-local FAKE_LAM1 = setmetatable ({}, { __index = LAM1 })
-LibStub.libs["LibAddonMenu-1.0"] = FAKE_LAM1
-LibStub.minors["LibAddonMenu-1.0"] = 999
-
-local settingsTable = {}
+local sv
 local panelIDs = {}
+local settingsTable = {}
+local invalidAddons = {
+   ["Rainbow Config"] = true,
+}
+-- local missedPanelIDs = {}
+-- local lastID = 1000

-local excludeList = {
-   "_mainPanel",
-   "_optionsRestacker",
-   "_vicstersAddons",
-   "X4D_LibAntiSpam_CPL",
-   "X4D_Chat_CPL",
-   "SCA",
-   "|cFF2222Wykkyd's|r ConfigPanel",
-   "FTC_SettingsPanel",
-   "SousChefMenu",
-   "SpamFilter_OptionsPanel",
-   "Undiscovered_OptionsPanel",
-   "Azurah_SettingsMenu",
-   "Srendarr_SettingsMenu",
-   "pCHAT_OPTIONS",
- }

 -------------------------------------------------------------------------------
--- FAKE_LAM1 functions --------------------------------------------------------
+-- Library replacement --------------------------------------------------------
 -------------------------------------------------------------------------------

+--LAM 1.0 to 2.0 interface
+FAKE_LAM1 = setmetatable ({}, { __index = LAM1 })
+LibStub.libs["LibAddonMenu-1.0"] = FAKE_LAM1
+LibStub.minors["LibAddonMenu-1.0"] = 999
 -- LAM1:CreateControlPanel(controlPanelID, controlPanelName)
 function FAKE_LAM1:CreateControlPanel(controlPanelID, controlPanelName)
    local name = controlPanelName:gsub("|[cC]%w%w%w%w%w%w",""):gsub("|[rR]","")

-   for i,v in ipairs(excludeList) do
-      if controlPanelID == v then
+   if sv == nil then
+      if not invalidAddons[name] then
+         invalidAddons[name] = false
+         return LAM1:CreateControlPanel(controlPanelID, name)
+      end
+   else
+      if not sv.enabled[name] then
+         if sv.enabled[name] == nil then
+            sv.enabled[name] = false
+         end
          return LAM1:CreateControlPanel(controlPanelID, name)
       end
    end
@@ -278,3 +276,63 @@ function FAKE_LAM1:AddSubMenu(panelID, controlName, text, tooltip)

    return tab[#tab].controls
 end
+
+
+-------------------------------------------------------------------------------
+-- Local functions ------------------------------------------------------------
+-------------------------------------------------------------------------------
+local function CreateSettingsMenu()
+   local panel = {
+      name = "L'AddonMinder",
+      displayName = "|cFFFFB0L'AddonMinder|r",
+      author = "Garkin",
+      version = "0.2",
+      registerForRefresh = true,
+      registerForDefaults = true
+   }
+   LAM2:RegisterAddonPanel("LAddMin_Panel", panel)
+
+   local addonNames = {}
+   for name in pairs(sv.enabled) do
+      table.insert(addonNames, name)
+   end
+   table.sort(addonNames)
+
+   local controlTable = {}
+   for _,name in ipairs(addonNames) do
+      local checkbox = {
+         type = "checkbox",
+         name = name,
+         getFunc = function() return sv.enabled[name] end,
+         setFunc = function(value) sv.enabled[name] = value end,
+         default = false
+      }
+      table.insert(controlTable, checkbox)
+   end
+
+   local text = {}
+   for name in pairs(invalidAddons) do
+      table.insert(text, name)
+   end
+   if #text > 0 then
+      table.insert(controlTable, { type = "description", title = "Invalid addons:", text = table.concat(text, "\n- ") })
+   end
+
+   table.insert(controlTable, { type = "button", name = GetString(SI_ADDON_MANAGER_RELOAD), func = function() ReloadUI("ingame") end } )
+
+   LAM2:RegisterOptionControls("LAddMin_Panel", controlTable)
+end
+
+local function OnAddonLoaded(code, addon)
+   if addon ~= "LAddMin" then return end
+
+   sv = ZO_SavedVars:NewAccountWide("LAddMin_SavedVariables", 1, "Addons", { enabled = {} })
+
+   CreateSettingsMenu()
+
+   CALLBACK_MANAGER:RegisterCallback("LAM-PanelControlsCreated", DelayedCalls)
+
+   EVENT_MANAGER:UnregisterForEvent(addon, code)
+end
+
+EVENT_MANAGER:RegisterForEvent("LAddMin", EVENT_ADD_ON_LOADED, OnAddonLoaded)
diff --git a/LAddMin.txt b/LAddMin.txt
index 5aa7723..e26949b 100644
--- a/LAddMin.txt
+++ b/LAddMin.txt
@@ -1,10 +1,13 @@
-## Title: |cFFFFB0LAddMin|r 0.1 - By |c00C000Garkin|r
-## Version: 0.1
+## Title: |cFFFFB0L'AddonMinder|r 0.2 - By |c00C000Garkin|r
+## Version: 0.2
 ## Author: Garkin
 ## APIVersion: 100004
+## SavedVariables: LAddMin_SavedVariables

 Libs\LibStub\LibStub.lua
+
 Libs\LibAddonMenu-1.0\LibAddonMenu-1.0.lua
+
 Libs\LibAddonMenu-2.0\LibAddonMenu-2.0.lua
 Libs\LibAddonMenu-2.0\controls\panel.lua
 Libs\LibAddonMenu-2.0\controls\submenu.lua
diff --git a/LibAddonMenu-1.0.txt b/LibAddonMenu-1.0.txt
index 2347272..98cad4c 100644
--- a/LibAddonMenu-1.0.txt
+++ b/LibAddonMenu-1.0.txt
@@ -1,4 +1,5 @@
-## Title: |cFFFFB0LAddMin loader|r 0.1
+## Title: |cFFFFB0L'AddonMinder loader|r
+## Version: 0.1
 ## APIVersion: 100004
 ## DependsOn: LAddMin