Quantcast

-- Grab a copy of the local data
local addonName, addonData = ...
local Translate = addonData.Translate

XMagePortsDB = {
	UpdateInterval = 30,
	FontSize = 12,
	CooldownSize = 20,
	NotAvailableAlpha = 0.1,
	NotIdealAlpha = 0.5,
	AvailableAlpha = 1.0,
	DisplayText = true,
}

local CreateMenuItems = function(frame,level,menuList)
	local info
	if ( menuList == nil ) then

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["OPTIONS"]
		info.isTitle = true
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["UPDATE_INTERVAL"]
		info.hasArrow = true
		info.menuList = "UpdateInterval"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["FONT_SIZE"]
		info.hasArrow = true
		info.menuList = "FontSize"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["COOLDOWN_SIZE"]
		info.hasArrow = true
		info.menuList = "CooldownSize"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["NOT_AVAILABLE_ALPHA"]
		info.hasArrow = true
		info.menuList = "NotAvailableAlpha"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["NOT_IDEAL_ALPHA"]
		info.hasArrow = true
		info.menuList = "NotIdealAlpha"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		info = UIDropDownMenu_CreateInfo()
		info.text = Translate["AVAILABLE_ALPHA"]
		info.hasArrow = true
		info.menuList = "AvailableAlpha"
		info.notCheckable = true
		UIDropDownMenu_AddButton(info,level)

		if ( not IsAddOnLoaded("nUI") ) then
			info = UIDropDownMenu_CreateInfo()
			if ( addonData.XMPFrame:IsShown() ) then
				info.text = Translate["COLLAPSE"]
			else
				info.text = Translate["EXPAND"]
			end
			info.hasArrow = false
			info.menuList = nil
			info.notCheckable = true
			info.func = function()
				if addonData.XMPFrame:IsShown() then
					addonData.XMPFrame:Hide()
				else
					addonData.XMPFrame:Show()
				end
				addonData.OptionsButton:Show()
			end
			UIDropDownMenu_AddButton(info,level)
		end

	elseif ( menuList == "UpdateInterval" ) then
		for i,v in pairs({ 10,20,30,40,50,60 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.UpdateInterval )
			info.notCheckable = false
			info.func = function() XMagePortsDB.UpdateInterval = v addonData:UpdateText(addonData.XMPFrame) end
			UIDropDownMenu_AddButton(info,level)
		end
	elseif ( menuList == "FontSize" ) then
		for i,v in pairs({ 10,12,14,16,18,20 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.FontSize )
			info.notCheckable = false
			info.func = function() XMagePortsDB.FontSize = v addonData:UpdateText(addonData.XMPFrame)  end
			UIDropDownMenu_AddButton(info,level)
		end
	elseif ( menuList == "CooldownSize" ) then
		for i,v in pairs({ 15,20,25,30 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.CooldownSize )
			info.notCheckable = false
			info.func = function() XMagePortsDB.CooldownSize = v addonData:UpdateButtons(addonData.XMPFrame)  end
			UIDropDownMenu_AddButton(info,level)
		end

	elseif ( menuList == "NotAvailableAlpha" ) then
		for i,v in pairs({ 0.1,0.2,0.3,0.4,0.5 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.NotAvailableAlpha )
			info.notCheckable = false
			info.func = function() XMagePortsDB.NotAvailableAlpha = v addonData:UpdateButtons(addonData.XMPFrame)  end
			UIDropDownMenu_AddButton(info,level)
		end
	elseif ( menuList == "NotIdealAlpha" ) then
		for i,v in pairs({ 0.3,0.4,0.5,0.6,0.7,0.8 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.NotIdealAlpha )
			info.notCheckable = false
			info.func = function() XMagePortsDB.NotIdealAlpha = v addonData:UpdateButtons(addonData.XMPFrame)  end
			UIDropDownMenu_AddButton(info,level)
		end
	elseif ( menuList == "AvailableAlpha" ) then
		for i,v in pairs({ 0.6,0.7,0.8,0.9,1.0 }) do
			info = UIDropDownMenu_CreateInfo()
			info.value = v
			info.text = v
			info.checked = ( v == XMagePortsDB.AvailableAlpha )
			info.notCheckable = false
			info.func = function() XMagePortsDB.AvailableAlpha = v addonData:UpdateButtons(addonData.XMPFrame)  end
			UIDropDownMenu_AddButton(info,level)
		end
	end
end

addonData.CreateMenu = function(self)
	local menu = CreateFrame("Frame","XMPOptions",self.XMPFrame,"UIDropDownMenuTemplate")
	menu.displayMode = "MENU"
	menu.initialize = CreateMenuItems
	return menu
end

addonData.CreateOptionsButton = function(self)
	local frame = CreateFrame("Button","XMP_Options",UIParent,"OptionsButtonTemplate")
	frame:SetText(Translate["MAGEPORTS_DESC"])
	frame:SetWidth(200)
	frame:SetHeight(20)
	frame:SetPoint("CENTER",self.XMPFrame,"CENTER",0,0)
	frame:SetPoint("TOP",self.XMPFrame,"TOP",0,20)
	frame:Show()
	frame:SetScript("OnClick", function(self, button, down)
    	ToggleDropDownMenu(1, nil, addonData.OptionsMenu, "cursor", 0, 0)
	end)
	frame:RegisterForClicks("LeftButtonUp","RightButtonUp")
	return frame
end