AddonClearer = {}

function AddonClearer:SetAddons(toDo)
	table.sort(ZO_AddOnsList.data, function(a,b) return a.data.addOnName == "AddonClearer" end) -- In place sorting. oh dear
	local thisAddonIndex = ZO_AddOnsList.data[1].data.index

	if not toDo then -- Save current setup
		AddonClearer.settings.savedSetup = {}
		for i,v in ipairs(ZO_AddOnsList.data) do AddonClearer.settings.savedSetup[v.data.index] = v.data.addOnEnabled end
	end

	local AddOnManager = GetAddOnManager()
	local numAddons = AddOnManager:GetNumAddOns()
	for i = 1, numAddons do
		if i ~= thisAddonIndex then -- ignore this addon
			if IsShiftKeyDown() then -- Are we restoring from save?
				AddOnManager:SetAddOnEnabled(i, AddonClearer.settings.savedSetup[i])
			else -- Otherwise continue as normal
				AddOnManager:SetAddOnEnabled(i, toDo)
			end
		end
	end
	-- Reset the view
	SCENE_MANAGER:RemoveFragment(ADDONS_FRAGMENT)
	SCENE_MANAGER:AddFragment(ADDONS_FRAGMENT)
end

function AddonClearer:Loaded(eventCode, addonName)
	if(addonName ~= "AddonClearer") then return end
	AddonClearer.settings  = ZO_SavedVars:NewAccountWide("AddonClearerSV", 1, nil, {savedSetup = {}})
end

EVENT_MANAGER:RegisterForEvent("AddonClearerLoaded", EVENT_ADD_ON_LOADED, function(...) AddonClearer:Loaded(...) end)