LibrarianSettings = ZO_Object:Subclass() local time_formats = { { name = "12 hour", value = TIME_FORMAT_PRECISION_TWELVE_HOUR}, { name = "24 hour", value = TIME_FORMAT_PRECISION_TWENTY_FOUR_HOUR} } function LibrarianSettings:New( ... ) local result = ZO_Object.New( self ) result:Initialise( ... ) return result end local function map(tbl, f) local t = {} for k,v in pairs(tbl) do t[k] = f(v) end return t end local function getValue(tbl, name) for _,p in pairs(tbl) do if p.name == name then return p.value end end end local function getName(tbl, value) for _,p in pairs(tbl) do if p.value == value then return p.name end end end function LibrarianSettings:Initialise(settings) self.settings = settings if self.settings.time_format == nil then self.settings.time_format = (GetCVar("Language.2") == "en") and TIME_FORMAT_PRECISION_TWELVE_HOUR or TIME_FORMAT_PRECISION_TWENTY_FOUR_HOUR end if self.settings.showAllBooks == nil then self.settings.showAllBooks = true end local LAM = LibStub("LibAddonMenu-1.0") local optionsPanel = LAM:CreateControlPanel("LibrarianOptions", "Librarian") local time_formats_list = map(time_formats, function(item) return item.name end) LAM:AddDropdown(optionsPanel, "LibrarianOptionsTimeFormat", "Time Format", "Select a format to display times in.", time_formats_list, function() return getName(time_formats, self.settings.time_format) end, function(format) self.settings.time_format = getValue(time_formats, format) Librarian:LayoutBooks() end) end