Quantcast
local L = BAGSYNC_L
local currentPlayer = UnitName('player')
local currentRealm = GetRealmName()
local bgProfiles = CreateFrame("Frame","BagSync_ProfilesFrame", UIParent)

--lets do the dropdown menu of DOOM
local bgsProfilesDD = CreateFrame("Frame", "bgsProfilesDD")
bgsProfilesDD.displayMode = 'MENU'

local function addButton(level, text, isTitle, notCheckable, hasArrow, value, func)
	local info = UIDropDownMenu_CreateInfo()
	info.text = text
	info.isTitle = isTitle
	info.notCheckable = notCheckable
	info.hasArrow = hasArrow
	info.value = value
	info.func = func
	UIDropDownMenu_AddButton(info, level)
end

bgsProfilesDD.initialize = function(self, level)
	if not BagSync or not BagSyncDB then return end
	if not BagSyncDB[currentRealm] then return end

	local tmp = {}

	--freaking LUA table.sort is terrible, you can't sort non-numeric keys..
	for k, v in pairs(BagSyncDB[currentRealm]) do
		table.insert(tmp, k)
	end
	table.sort(tmp, function(a,b) return (a < b) end)

	if level == 1 then
		PlaySound('gsTitleOptionExit')

		for i=1, #tmp do
			addButton(level, tmp[i], nil, 1, nil, tmp[i], function(frame, ...)
				if BagSyncProfilesToonNameText then
					BagSyncProfilesToonNameText:SetText(tmp[i])
				end
			end)
		end

		addButton(level, "", nil, 1) --space ;)
		addButton(level, L["Close"], nil, 1)

	end

end

bgProfiles:SetFrameStrata("HIGH")
bgProfiles:SetToplevel(true)
bgProfiles:EnableMouse(true)
bgProfiles:SetMovable(true)
bgProfiles:SetClampedToScreen(true)
bgProfiles:SetWidth(280)
bgProfiles:SetHeight(150)

bgProfiles:SetBackdrop({
		bgFile = "Interface/Tooltips/UI-Tooltip-Background",
		edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
		tile = true,
		tileSize = 16,
		edgeSize = 32,
		insets = { left = 5, right = 5, top = 5, bottom = 5 }
})

bgProfiles:SetBackdropColor(0,0,0,1)
bgProfiles:SetPoint("CENTER", UIParent, "CENTER", 0, 0)

local addonTitle = bgProfiles:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
addonTitle:SetPoint("CENTER", bgProfiles, "TOP", 0, -20)
addonTitle:SetText("|cFF99CC33BagSync|r |cFFFFFFFF("..L["Profiles"]..")|r")

local closeButton = CreateFrame("Button", nil, bgProfiles, "UIPanelCloseButton");
closeButton:SetPoint("TOPRIGHT", bgProfiles, -15, -8);

local warningLabel = bgProfiles:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
warningLabel:SetPoint("CENTER", bgProfiles, 0, 29)
warningLabel:SetText("|cFFDF2B2B"..L["Select a profile to delete.\nNOTE: This is irreversible!"].."|r")
bgProfiles.warningLabel = warningLabel

local buttonText = bgProfiles:CreateFontString("BagSyncProfilesToonNameText", nil, "GameFontNormal")
buttonText:SetText(L["Click Here"])
buttonText:SetPoint("CENTER")

bgProfiles.toonName = CreateFrame("Button", "BagSyncProfilesToonName", bgProfiles);
bgProfiles.toonName:SetPoint("CENTER", bgProfiles, 0, 0)
bgProfiles.toonName:SetHeight(21);
bgProfiles.toonName:SetWidth(266);
bgProfiles.toonName:SetFontString(buttonText)
bgProfiles.toonName:SetBackdrop({
	bgFile = "Interface\\Buttons\\WHITE8x8",
})
bgProfiles.toonName:SetBackdropColor(0,1,0,0.25)
bgProfiles.toonName:SetScript("OnClick", function() ToggleDropDownMenu(1, nil, bgsProfilesDD, 'cursor', 0, 0)  end)
bgProfiles.toonName.text = buttonText

bgProfiles.deleteButton = CreateFrame("Button", nil, bgProfiles, "UIPanelButtonTemplate");
bgProfiles.deleteButton:SetPoint("BOTTOM", bgProfiles, "BOTTOM", -70, 20);
bgProfiles.deleteButton:SetHeight(21);
bgProfiles.deleteButton:SetWidth(100);
bgProfiles.deleteButton:SetText(L["Delete"]);
bgProfiles.deleteButton:SetScript("OnClick", function() BagSync_ProfilesFrame.confirmButton:Enable()  end)

bgProfiles.confirmButton = CreateFrame("Button", nil, bgProfiles, "UIPanelButtonTemplate");
bgProfiles.confirmButton:SetPoint("BOTTOM", bgProfiles, "BOTTOM", 70, 20);
bgProfiles.confirmButton:SetHeight(21);
bgProfiles.confirmButton:SetWidth(100);
bgProfiles.confirmButton:SetText(L["Confirm"]);
bgProfiles.confirmButton:Disable()

bgProfiles.confirmButton:SetScript("OnClick", function()
	local name = BagSyncProfilesToonNameText:GetText()
	if name and BagSyncDB and BagSyncDB[currentRealm] and BagSyncDB[currentRealm][name] then
		BagSyncDB[currentRealm][name] = nil
		BagSyncOpt.delName = name
		BagSync:FixDB_Data()
		BagSync_ProfilesFrame:Hide()
		ReloadUI()
	else
		print(L["BagSync: Error user not found!"])
	end
	BagSync_ProfilesFrame.confirmButton:Disable()
end)

bgProfiles:SetScript("OnHide", function(self) bgsProfilesDD:Hide() end)

bgProfiles:SetScript("OnMouseDown", function(frame, button)
	if frame:IsMovable() then
		frame.isMoving = true
		frame:StartMoving()
	end
end)

bgProfiles:SetScript("OnMouseUp", function(frame, button)
	if( frame.isMoving ) then
		frame.isMoving = nil
		frame:StopMovingOrSizing()
	end
end)

bgProfiles:Hide()