#2: Add accountwide settings
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Florian Brinker 2020-06-07 14:47:51 +02:00
parent dfbc2feeb4
commit af3a473fe2
5 changed files with 73 additions and 14 deletions

View File

@ -15,6 +15,7 @@ function AchievementInfo.initialize(_, addOnName)
AchievementInfo.hijackedFirstLoad = true AchievementInfo.hijackedFirstLoad = true
-- Load Saved Variables -- Load Saved Variables
AchievementInfo.useAccountWideSettings = AchievementInfo.loadUseAccountWideSettings()
AchievementInfo.savedVars = AchievementInfo.loadSavedVars() AchievementInfo.savedVars = AchievementInfo.loadSavedVars()
-- Load Language Data -- Load Language Data

View File

@ -6,7 +6,7 @@
## Contact: mail@coded-with-heart.com ## Contact: mail@coded-with-heart.com
## APIVersion: 100031 ## APIVersion: 100031
## SavedVariables: ACHIEVEMENT_INFO_DB ## SavedVariables: ACHIEVEMENT_INFO_DB ACHIEVEMENT_INFO_DB_USE_AW
## DependsOn: LibAddonMenu-2.0 ## DependsOn: LibAddonMenu-2.0

View File

@ -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.AddOnEnabledTooltip = "Enable or disable this AddOn"
LANG_STORE.EN.SettingsOption.AddOnEnabledWarning = "Only the output messages can be disabled here" 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.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%" 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.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.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.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" 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.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.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.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%" 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%"

View File

@ -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 to set and load the Saved Variables
function AchievementInfo.loadSavedVars() function AchievementInfo.loadSavedVars()
local defaults = { local defaults = {
@ -36,9 +45,14 @@ function AchievementInfo.loadSavedVars()
cat20 = true, cat20 = true,
cat21 = true, cat21 = true,
cat22 = true, cat22 = true,
-- ... new one default to true
devDebug = false 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) return ZO_SavedVars:New("ACHIEVEMENT_INFO_DB", 1, nil, defaults)
end end
@ -49,16 +63,16 @@ function AchievementInfo.createSettingsPanel()
local panelData = { local panelData = {
type = "panel", type = "panel",
name = AchievementInfo.name, name = AchievementInfo.name,
displayName = AchievementInfo.clrDefault..AchievementInfo.name, displayName = AchievementInfo.clrDefault .. AchievementInfo.name,
author = AchievementInfo.author, author = AchievementInfo.author,
version = string.format("%.1f", AchievementInfo.version), version = string.format("%.2f", AchievementInfo.version),
slashCommand = "/achievementInfo" slashCommand = "/achievementInfo"
} }
local optionsTable = { local optionsTable = {
[1] = { [1] = {
type = "header", type = "header",
name = AchievementInfo.clrSettingsHeader..LANG.SettingsHeader.General name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.General
}, },
[2] = { [2] = {
type = "checkbox", type = "checkbox",
@ -69,13 +83,21 @@ function AchievementInfo.createSettingsPanel()
warning = LANG.SettingsOption.AddOnEnabledWarning warning = LANG.SettingsOption.AddOnEnabledWarning
}, },
[3] = { [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", type = "checkbox",
name = LANG.SettingsOption.ShowEveryUpdate, name = LANG.SettingsOption.ShowEveryUpdate,
tooltip = LANG.SettingsOption.ShowEveryUpdateTooltip, tooltip = LANG.SettingsOption.ShowEveryUpdateTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowEveryUpdate") end, getFunc = function() return AchievementInfo.settingGet("genShowEveryUpdate") end,
setFunc = function() AchievementInfo.settingToogle("genShowEveryUpdate") end setFunc = function() AchievementInfo.settingToogle("genShowEveryUpdate") end
}, },
[4] = { [5] = {
type = "slider", type = "slider",
name = LANG.SettingsOption.ShowUpdateSteps, name = LANG.SettingsOption.ShowUpdateSteps,
tooltip = LANG.SettingsOption.ShowUpdateStepsTooltip, tooltip = LANG.SettingsOption.ShowUpdateStepsTooltip,
@ -86,21 +108,21 @@ function AchievementInfo.createSettingsPanel()
setFunc = function(value) AchievementInfo.settingSet("genShowUpdateSteps", value) end, setFunc = function(value) AchievementInfo.settingSet("genShowUpdateSteps", value) end,
default = 25 default = 25
}, },
[5] = { [6] = {
type = "checkbox", type = "checkbox",
name = LANG.SettingsOption.ShowDetails, name = LANG.SettingsOption.ShowDetails,
tooltip = LANG.SettingsOption.ShowDetailsTooltip, tooltip = LANG.SettingsOption.ShowDetailsTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowDetails") end, getFunc = function() return AchievementInfo.settingGet("genShowDetails") end,
setFunc = function() AchievementInfo.settingToogle("genShowDetails") end setFunc = function() AchievementInfo.settingToogle("genShowDetails") end
}, },
[6] = { [7] = {
type = "checkbox", type = "checkbox",
name = LANG.SettingsOption.ShowOpenDetailsOnly, name = LANG.SettingsOption.ShowOpenDetailsOnly,
tooltip = LANG.SettingsOption.ShowOpenDetailsOnlyTooltip, tooltip = LANG.SettingsOption.ShowOpenDetailsOnlyTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowOpenDetailsOnly") end, getFunc = function() return AchievementInfo.settingGet("genShowOpenDetailsOnly") end,
setFunc = function() AchievementInfo.settingToogle("genShowOpenDetailsOnly") end setFunc = function() AchievementInfo.settingToogle("genShowOpenDetailsOnly") end
}, },
[7] = { [8] = {
type = "checkbox", type = "checkbox",
name = LANG.SettingsOption.OneElementPerLine, name = LANG.SettingsOption.OneElementPerLine,
tooltip = LANG.SettingsOption.OneElementPerLineTooltip, tooltip = LANG.SettingsOption.OneElementPerLineTooltip,
@ -108,11 +130,11 @@ function AchievementInfo.createSettingsPanel()
setFunc = function() AchievementInfo.settingToogle("genOnePerLine") end, setFunc = function() AchievementInfo.settingToogle("genOnePerLine") end,
warning = LANG.SettingsOption.OneElementPerLineWarning warning = LANG.SettingsOption.OneElementPerLineWarning
}, },
[8] = { [9] = {
type = "header", type = "header",
name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.Categories name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.Categories
}, },
[9] = { [10] = {
type = "description", type = "description",
text = LANG.SettingsHeader.CategoriesDescription .. ":" text = LANG.SettingsHeader.CategoriesDescription .. ":"
} }
@ -128,8 +150,8 @@ function AchievementInfo.createSettingsPanel()
type = "checkbox", type = "checkbox",
name = catName, name = catName,
tooltip = LANG.SettingsOption.CategoryTooltip .. " '" .. catName .. "'", tooltip = LANG.SettingsOption.CategoryTooltip .. " '" .. catName .. "'",
getFunc = function() return AchievementInfo.settingGet("cat"..i) end, getFunc = function() return AchievementInfo.settingGetForCategory("cat" .. i) end,
setFunc = function() AchievementInfo.settingToogle("cat"..i) end setFunc = function() AchievementInfo.settingToogle("cat" .. i) end
}) })
end end
@ -149,8 +171,8 @@ function AchievementInfo.createSettingsPanel()
}) })
-- Register -- Register
LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name.."SettingsPanel", panelData) LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name .. "SettingsPanel", panelData)
LibAddonMenu2:RegisterOptionControls(AchievementInfo.name.."SettingsPanel", optionsTable) LibAddonMenu2:RegisterOptionControls(AchievementInfo.name .. "SettingsPanel", optionsTable)
end 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 to toggle Checkbox values
function AchievementInfo.settingToogle(id) function AchievementInfo.settingToogle(id)
if AchievementInfo.savedVars[id] == false then 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 to set settings
function AchievementInfo.settingSet(id, value) function AchievementInfo.settingSet(id, value)
AchievementInfo.savedVars[id] = value AchievementInfo.savedVars[id] = value

View File

@ -1,5 +1,9 @@
#### Notable Changes #### Notable Changes
##### Release 4.0
* Added accountwide settings
* Added an "use accountwide settings" option to the settings of each character
##### Release 3.0 ##### Release 3.0
* Removed the bundled Dependency LibAddonMenu-2.0: You have to download it on your own now * Removed the bundled Dependency LibAddonMenu-2.0: You have to download it on your own now