LeoAltholic_Settings = ZO_Object:Subclass()
local LAM = LibStub("LibAddonMenu-2.0")

function LeoAltholic_Settings:New(...)
    local object = ZO_Object.New(self)
    object:Initialize(...)
    return object
end

function LeoAltholic_Settings:Initialize()
end

function LeoAltholic_Settings:CreatePanel()
	local OptionsName = "LeoAltholicOptions"
	local panelData = {
		type = "panel",
		name = LeoAltholic.name,
        slashCommand = "/leoaltoptions",
		displayName = "|c39B027"..LeoAltholic.displayName.."|r",
		author = "@LeandroSilva",
		version = LeoAltholic.version,
		registerForRefresh = true,
		registerForDefaults = true,
		website = "http://www.esoui.com/downloads/info2140-LeosAltholic.html"
	}
	LAM:RegisterAddonPanel(OptionsName, panelData)

	local optionsData = {
		{
			type = "header",
			name = "|c3f7fff"..GetString(LEOALT_CHECKLIST).."|r"
		},{
			type = "checkbox",
			name = GetString(SI_ADDON_MANAGER_ENABLED),
			default = true,
			getFunc = function() return LeoAltholic.charData.settings.checklist.enabled end,
			setFunc = function(value)
				LeoAltholic.charData.settings.checklist.enabled = value
                LeoAltholicChecklistUI.RestorePosition()
			end,
		},{
			type = "submenu",
			name = GetString(SI_GAMEPAD_OPTIONS_MENU),
			controls = {
				{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE16),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_ALCHEMY] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_ALCHEMY] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE13),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_BLACKSMITHING] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_BLACKSMITHING] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE14),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_CLOTHIER] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_CLOTHIER] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE17),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_ENCHANTING] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_ENCHANTING] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE25),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_JEWELRYCRAFTING] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_JEWELRYCRAFTING] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE18),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_PROVISIONING] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_PROVISIONING] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_ITEMFILTERTYPE15),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_WOODWORKING] end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.craft[CRAFTING_TYPE_WOODWORKING] = value
						LeoAltholicChecklistUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_STAT_GAMEPAD_RIDING_HEADER_TRAINING),
					default = true,
					disabled = function() return not LeoAltholic.charData.settings.checklist.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.charData.settings.checklist.riding end,
					setFunc = function(value)
						LeoAltholic.charData.settings.checklist.riding = value
						LeoAltholicChecklistUI.update()
					end,
				}
			}
		},{
			type = "header",
			name = "|c3f7fff"..GetString(LEOALT_TOOLBAR).."|r"
		},{
			type = "description",
			text = GetString(LEOALT_ACCOUNT_CONFIGURATION)
		},{
			type = "checkbox",
			name = GetString(SI_ADDON_MANAGER_ENABLED),
			default = true,
			getFunc = function() return LeoAltholic.globalData.settings.toolbar.enabled end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.toolbar.enabled = value
				LeoAltholicToolbarUI.RestorePosition()
			end,
		},{
			type = "checkbox",
			name = GetString(LEOALT_BUMP_COMPASS),
			default = true,
			getFunc = function() return LeoAltholic.globalData.settings.toolbar.bumpCompass end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.toolbar.bumpCompass = value
				LeoAltholicToolbarUI.bumpCompass()
			end,
		},{
			type = "submenu",
			name = GetString(SI_GAMEPAD_OPTIONS_MENU),
			controls = {
				{
					type = "checkbox",
					name = GetString(SI_STAT_GAMEPAD_RIDING_HEADER_TRAINING),
					default = true,
					disabled = function() return not LeoAltholic.globalData.settings.toolbar.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.globalData.settings.toolbar.riding end,
					setFunc = function(value)
						LeoAltholic.globalData.settings.toolbar.riding = value
						LeoAltholicToolbarUI.RestorePosition()
						LeoAltholicToolbarUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(SI_GAMEPAD_SMITHING_CURRENT_RESEARCH_HEADER),
					default = true,
					disabled = function() return not LeoAltholic.globalData.settings.toolbar.enabled end,
					width = "half",
					getFunc = function() return LeoAltholic.globalData.settings.toolbar.researching end,
					setFunc = function(value)
						LeoAltholic.globalData.settings.toolbar.researching = value
						LeoAltholicToolbarUI.RestorePosition()
						LeoAltholicToolbarUI.update()
					end,
				},{
					type = "checkbox",
					name = GetString(LEOALT_CHECKLIST) .. " ( soon )",
					default = true,
					disabled = true,
					width = "half",
					getFunc = function() return LeoAltholic.globalData.settings.toolbar.checklist end,
					setFunc = function(value)
						LeoAltholic.globalData.settings.toolbar.checklist = value
						LeoAltholicToolbarUI.RestorePosition()
						LeoAltholicToolbarUI.update()
					end,
				}
			}
		},{
			type = "header",
			name = "|c3f7fff"..GetString(LEOALT_TRACKED_QUESTS).."|r"
		},{
			type = "description",
			text = GetString(LEOALT_ACCOUNT_CONFIGURATION)
		},{
			type = "checkbox",
			name = GetString(LEOALT_AUTO_TRACK_WRIT),
			default = true,
			getFunc = function() return LeoAltholic.globalData.settings.tracked.dailyWrits end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.tracked.dailyWrits = value
			end,
		},{
			type = "checkbox",
			name = GetString(LEOALT_AUTO_TRACK_DAILY),
			default = false,
			getFunc = function() return LeoAltholic.globalData.settings.tracked.allDaily end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.tracked.allDaily = value
			end,
		},{
			type = "header",
			name = "|c3f7fff"..GetString(LEOALT_COMPLETED_RESEARCH).."|r"
		},{
			type = "description",
			text = GetString(LEOALT_ACCOUNT_CONFIGURATION)
		},{
			type = "checkbox",
			name = GetString(LEOALT_CHAT_ALL),
			tooltip = GetString(LEOALT_CHAT_ALL_TOOLTIP),
			default = true,
			getFunc = function() return LeoAltholic.globalData.settings.completedResearch.chat end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.completedResearch.chat = value
			end,
		},{
			type = "checkbox",
			name = GetString(LEOALT_CENTERSCREEN_CURRENT),
			tooltip = GetString(LEOALT_CENTERSCREEN_CURRENT_TOOLTIP),
			default = true,
			getFunc = function() return LeoAltholic.globalData.settings.completedResearch.screen end,
			setFunc = function(value)
				LeoAltholic.globalData.settings.completedResearch.screen = value
			end,
		}
	}
	LAM:RegisterOptionControls(OptionsName, optionsData)
end

function LeoAltholic_Settings_OnMouseEnter(control, tooltip)
	InitializeTooltip(InformationTooltip, control, BOTTOMLEFT, 0, -2, TOPLEFT)
	SetTooltipText(InformationTooltip, tooltip)
end