diff --git a/AchievementInfo.lua b/AchievementInfo.lua index f96f6d7..f225230 100644 --- a/AchievementInfo.lua +++ b/AchievementInfo.lua @@ -15,6 +15,7 @@ function AchievementInfo.initialize(_, addOnName) AchievementInfo.hijackedFirstLoad = true -- Load Saved Variables + AchievementInfo.useAccountWideSettings = AchievementInfo.loadUseAccountWideSettings() AchievementInfo.savedVars = AchievementInfo.loadSavedVars() -- Load Language Data diff --git a/AchievementInfo.txt b/AchievementInfo.txt index a4becb2..40122f0 100644 --- a/AchievementInfo.txt +++ b/AchievementInfo.txt @@ -6,7 +6,7 @@ ## Contact: mail@coded-with-heart.com ## APIVersion: 100031 -## SavedVariables: ACHIEVEMENT_INFO_DB +## SavedVariables: ACHIEVEMENT_INFO_DB ACHIEVEMENT_INFO_DB_USE_AW ## DependsOn: LibAddonMenu-2.0 diff --git a/AchievementInfoLangStore.lua b/AchievementInfoLangStore.lua index 7914c5c..4a3aa76 100644 --- a/AchievementInfoLangStore.lua +++ b/AchievementInfoLangStore.lua @@ -35,6 +35,9 @@ LANG_STORE.EN.SettingsOption.AddOnEnabled = "AddOn enabled" LANG_STORE.EN.SettingsOption.AddOnEnabledTooltip = "Enable or disable this AddOn" LANG_STORE.EN.SettingsOption.AddOnEnabledWarning = "Only the output messages can be disabled here" +LANG_STORE.EN.SettingsOption.AccountWideEnabled = "Use acctountwide Settings" +LANG_STORE.EN.SettingsOption.AccountWideEnabledTooltip = "Use and save the settings for all of your characters" + LANG_STORE.EN.SettingsOption.ShowEveryUpdate = "Show every update" LANG_STORE.EN.SettingsOption.ShowEveryUpdateTooltip = "Shows a message on every status update of an achievement. Otherwise the messages appear only in steps of x%" @@ -86,6 +89,9 @@ LANG_STORE.DE.SettingsOption.AddOnEnabled = "AddOn aktiviert" LANG_STORE.DE.SettingsOption.AddOnEnabledTooltip = "Aktiviere oder deaktiviere dieses AddOn" LANG_STORE.DE.SettingsOption.AddOnEnabledWarning = "An dieser Stelle können nur die Ausgaben deaktiviert werden." +LANG_STORE.DE.SettingsOption.AccountWideEnabled = "Accountübergreifende Einstellungen" +LANG_STORE.DE.SettingsOption.AccountWideEnabledTooltip = "Benutze und speichere die Einstellungen für alle Charaktere" + LANG_STORE.DE.SettingsOption.ShowEveryUpdate = "Zeige alle Fortschritte" LANG_STORE.DE.SettingsOption.ShowEveryUpdateTooltip = "Zeigt bei jeder Aktualisierung eines Erfolgs einen Hinweis. Alternativ wird nur in x% Schritten ein Status ausgegeben" @@ -138,6 +144,9 @@ LANG_STORE.FR.SettingsOption.AddOnEnabled = "Extension activée" LANG_STORE.FR.SettingsOption.AddOnEnabledTooltip = "Active ou désactive cette extension" LANG_STORE.FR.SettingsOption.AddOnEnabledWarning = "Seul les messages sortants peuvent être désactivés" +LANG_STORE.FR.SettingsOption.AccountWideEnabled = LANG_STORE.EN.SettingsOption.AccountWideEnabled +LANG_STORE.FR.SettingsOption.AccountWideEnabledTooltip = LANG_STORE.EN.SettingsOption.AccountWideEnabledTooltip + LANG_STORE.FR.SettingsOption.ShowEveryUpdate = "Affichage de chaque mise à jour" LANG_STORE.FR.SettingsOption.ShowEveryUpdateTooltip = "Affiche un message pour chaque mise à jour d'un succès. Le reste du temps les messages n'apparaissent que sous forme de plage de x%" diff --git a/AchievementInfoSettings.lua b/AchievementInfoSettings.lua index ece4aaa..5894d14 100644 --- a/AchievementInfoSettings.lua +++ b/AchievementInfoSettings.lua @@ -5,6 +5,15 @@ +-- Function to determine if Account Wide Settings should be used +function AchievementInfo.loadUseAccountWideSettings() + return ZO_SavedVars:New("ACHIEVEMENT_INFO_DB_USE_AW", 1, nil, { + enabled = false + }) +end + + + -- Function to set and load the Saved Variables function AchievementInfo.loadSavedVars() local defaults = { @@ -36,9 +45,14 @@ function AchievementInfo.loadSavedVars() cat20 = true, cat21 = true, cat22 = true, + -- ... new one default to true devDebug = false } + if AchievementInfo.useAccountWideSettings["enabled"] == true then + return ZO_SavedVars:NewAccountWide("ACHIEVEMENT_INFO_DB", 1, nil, defaults) + end + return ZO_SavedVars:New("ACHIEVEMENT_INFO_DB", 1, nil, defaults) end @@ -49,16 +63,16 @@ function AchievementInfo.createSettingsPanel() local panelData = { type = "panel", name = AchievementInfo.name, - displayName = AchievementInfo.clrDefault..AchievementInfo.name, + displayName = AchievementInfo.clrDefault .. AchievementInfo.name, author = AchievementInfo.author, - version = string.format("%.1f", AchievementInfo.version), + version = string.format("%.2f", AchievementInfo.version), slashCommand = "/achievementInfo" } local optionsTable = { [1] = { type = "header", - name = AchievementInfo.clrSettingsHeader..LANG.SettingsHeader.General + name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.General }, [2] = { type = "checkbox", @@ -69,13 +83,21 @@ function AchievementInfo.createSettingsPanel() warning = LANG.SettingsOption.AddOnEnabledWarning }, [3] = { + type = "checkbox", + name = LANG.SettingsOption.AccountWideEnabled, + tooltip = LANG.SettingsOption.AccountWideEnabledTooltip, + getFunc = function() return AchievementInfo.useAccountWideSettings["enabled"] end, + setFunc = function() AchievementInfo.toggleAccountWideSettings() end, + requiresReload = true + }, + [4] = { type = "checkbox", name = LANG.SettingsOption.ShowEveryUpdate, tooltip = LANG.SettingsOption.ShowEveryUpdateTooltip, getFunc = function() return AchievementInfo.settingGet("genShowEveryUpdate") end, setFunc = function() AchievementInfo.settingToogle("genShowEveryUpdate") end }, - [4] = { + [5] = { type = "slider", name = LANG.SettingsOption.ShowUpdateSteps, tooltip = LANG.SettingsOption.ShowUpdateStepsTooltip, @@ -86,21 +108,21 @@ function AchievementInfo.createSettingsPanel() setFunc = function(value) AchievementInfo.settingSet("genShowUpdateSteps", value) end, default = 25 }, - [5] = { + [6] = { type = "checkbox", name = LANG.SettingsOption.ShowDetails, tooltip = LANG.SettingsOption.ShowDetailsTooltip, getFunc = function() return AchievementInfo.settingGet("genShowDetails") end, setFunc = function() AchievementInfo.settingToogle("genShowDetails") end }, - [6] = { + [7] = { type = "checkbox", name = LANG.SettingsOption.ShowOpenDetailsOnly, tooltip = LANG.SettingsOption.ShowOpenDetailsOnlyTooltip, getFunc = function() return AchievementInfo.settingGet("genShowOpenDetailsOnly") end, setFunc = function() AchievementInfo.settingToogle("genShowOpenDetailsOnly") end }, - [7] = { + [8] = { type = "checkbox", name = LANG.SettingsOption.OneElementPerLine, tooltip = LANG.SettingsOption.OneElementPerLineTooltip, @@ -108,11 +130,11 @@ function AchievementInfo.createSettingsPanel() setFunc = function() AchievementInfo.settingToogle("genOnePerLine") end, warning = LANG.SettingsOption.OneElementPerLineWarning }, - [8] = { + [9] = { type = "header", name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.Categories }, - [9] = { + [10] = { type = "description", text = LANG.SettingsHeader.CategoriesDescription .. ":" } @@ -128,8 +150,8 @@ function AchievementInfo.createSettingsPanel() type = "checkbox", name = catName, tooltip = LANG.SettingsOption.CategoryTooltip .. " '" .. catName .. "'", - getFunc = function() return AchievementInfo.settingGet("cat"..i) end, - setFunc = function() AchievementInfo.settingToogle("cat"..i) end + getFunc = function() return AchievementInfo.settingGetForCategory("cat" .. i) end, + setFunc = function() AchievementInfo.settingToogle("cat" .. i) end }) end @@ -149,8 +171,8 @@ function AchievementInfo.createSettingsPanel() }) -- Register - LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name.."SettingsPanel", panelData) - LibAddonMenu2:RegisterOptionControls(AchievementInfo.name.."SettingsPanel", optionsTable) + LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name .. "SettingsPanel", panelData) + LibAddonMenu2:RegisterOptionControls(AchievementInfo.name .. "SettingsPanel", optionsTable) end @@ -167,6 +189,18 @@ end +-- Function to retrieve settings for categories (default true) +function AchievementInfo.settingGetForCategory(id) + if AchievementInfo.savedVars[id] == nil then + AchievementInfo.savedVars[id] = true + return true + else + return AchievementInfo.savedVars[id] + end +end + + + -- Function to toggle Checkbox values function AchievementInfo.settingToogle(id) if AchievementInfo.savedVars[id] == false then @@ -178,6 +212,17 @@ end +-- Function to toggle Checkbox value for accountWideSettings +function AchievementInfo.toggleAccountWideSettings() + if AchievementInfo.useAccountWideSettings["enabled"] == false then + AchievementInfo.useAccountWideSettings["enabled"] = true + else + AchievementInfo.useAccountWideSettings["enabled"] = false + end +end + + + -- Function to set settings function AchievementInfo.settingSet(id, value) AchievementInfo.savedVars[id] = value diff --git a/CHANGELOG.md b/CHANGELOG.md index fda1ab7..1932195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ #### Notable Changes +##### Release 4.0 +* Added accountwide settings +* Added an "use accountwide settings" option to the settings of each character + ##### Release 3.0 * Removed the bundled Dependency LibAddonMenu-2.0: You have to download it on your own now