Quantcast
local config = CreateFrame("Frame");
local config2 = CreateFrame("Frame");
local moduleconfig = CreateFrame("frame");

local ns = select( 2, ... )
local L = ns.L;

FlightMapEnhancedCFrame = config;
function config:SetDefaultConfig()
	FlightMapEnhanced_Config.vconf = {["ShowMiniMapButton"]=1,["LockFlightMap"]=1};
	config.ShowMiniMapButton:SetChecked(1);
	config.LockFlightMap:SetChecked(1);
	config.DetachAddon:SetChecked(0);
	config.LockAddonFrame:SetChecked(0);
end



function config:SetCurrentConfig()
	config.ShowMiniMapButton:SetChecked(FlightMapEnhanced_Config.vconf.ShowMiniMapButton);
	config.LockFlightMap:SetChecked(FlightMapEnhanced_Config.vconf.LockFlightMap);
	config.DetachAddon:SetChecked(FlightMapEnhanced_Config.vconf.DetachAddon);
	config.LockAddonFrame:SetChecked(FlightMapEnhanced_Config.vconf.LockAddonFrame);
	config.ConfirmFlyAuto:SetChecked(FlightMapEnhanced_Config.vconf.ConfirmFlyAuto);
	config.ConfirmFlyManual:SetChecked(FlightMapEnhanced_Config.vconf.ConfirmFlyManual);
end

function config:ChangeState()
	FlightMapEnhanced_Config.vconf[self.id] = self:GetChecked();
	config:ChangeHandler(self.id,self:GetChecked());
	if(self.id=="DetachAddon") then
		config:ChangeHandler(config.LockAddonFrame.id,config.LockAddonFrame:GetChecked());
	end
end



function config:ChangeHandler(w,n)
	if(w=="ShowMiniMapButton") then
		if(n) then
			FlightMapEnhancedMinimapButton:Show();
		else
			FlightMapEnhancedMinimapButton:Hide()
		end
	elseif(w=="LockFlightMap") then
		if(n) then
			TaxiFrame:RegisterForDrag();
			FlightMapEnhancedResize:Hide();
		else
			TaxiFrame:RegisterForDrag("LeftButton");
			FlightMapEnhancedResize:Show();
		end
	elseif(w=="DetachAddon") then

		if(n) then
			config.LockAddonFrame:Show();
			FlightMapEnhancedTaxiChoice:ClearAllPoints();
		else
			config.LockAddonFrame:Hide();
			FlightMapEnhancedTaxiChoice:RegisterForDrag();
			FlightMapEnhancedTaxiChoiceResizeButton:Hide();
		end

	elseif(w=="LockAddonFrame") then
		if(n or not FlightMapEnhanced_Config.vconf["DetachAddon"]) then
			FlightMapEnhancedTaxiChoice:RegisterForDrag();
			FlightMapEnhancedTaxiChoiceResizeButton:Hide();
		else
			FlightMapEnhancedTaxiChoice:RegisterForDrag("LeftButton");
			FlightMapEnhancedTaxiChoiceResizeButton:Show();
		end
	end
end



function config:Init()
	config2.name = "Flight Map Enhanced";
	config2:SetScript("OnShow",function () InterfaceOptionsFrame_OpenToCategory(config); end);
	InterfaceOptions_AddCategory(config2);

	config.name = L.CONFIG_BASIC;
	config.parent="Flight Map Enhanced";


 local ShowMiniMapButton = CreateFrame( "CheckButton", "FlightMapEnhancedShowMiniMapButton", config, "InterfaceOptionsCheckButtonTemplate" );
	config.ShowMiniMapButton = ShowMiniMapButton;
	ShowMiniMapButton.id = "ShowMiniMapButton";
	ShowMiniMapButton:SetPoint( "TOPLEFT", 16, -16 );
	ShowMiniMapButton:SetScript("onClick",config.ChangeState);
	_G[ ShowMiniMapButton:GetName().."Text" ]:SetText( L.SHOW_MINIMAP_BUTTON );

 local LockFlightMap = CreateFrame( "CheckButton", "FlightMapEnhancedLockFlightMap", config, "InterfaceOptionsCheckButtonTemplate" );
    config.LockFlightMap = LockFlightMap;
	LockFlightMap.id = "LockFlightMap";
	LockFlightMap:SetPoint( "TOPLEFT", ShowMiniMapButton, "BOTTOMLEFT", 0, -16);
	LockFlightMap:SetScript("onClick",config.ChangeState);
	_G[ LockFlightMap:GetName().."Text" ]:SetText(  L.FLIGHT_FRAME_LOCK );

  local DetachAddon = CreateFrame( "CheckButton", "FlightMapEnhancedDetachAddon", config, "InterfaceOptionsCheckButtonTemplate" );
    config.DetachAddon = DetachAddon;
	DetachAddon.id = "DetachAddon";
	DetachAddon:SetPoint( "TOPLEFT", LockFlightMap, "BOTTOMLEFT", 0, -16);
	DetachAddon:SetScript("onClick",config.ChangeState);
	_G[ DetachAddon:GetName().."Text" ]:SetText( L.DETACH_ADDON_FRAME );

	local LockAddonFrame = CreateFrame( "CheckButton", "FlightMapEnhancedLockAddonFrame", config, "InterfaceOptionsCheckButtonTemplate" );
    config.LockAddonFrame = LockAddonFrame;
	LockAddonFrame.id = "LockAddonFrame";
	LockAddonFrame:SetPoint( "TOPLEFT", DetachAddon, "BOTTOMLEFT", 0, -16);
	LockAddonFrame:SetScript("onClick",config.ChangeState);

	_G[ LockAddonFrame:GetName().."Text" ]:SetText( L.LOCK_ADDON_FRAME );

	local ConfirmFlyAuto = CreateFrame( "CheckButton", "FlightMapEnhancedConfirmFlyAuto", config, "InterfaceOptionsCheckButtonTemplate" );
    config.ConfirmFlyAuto = ConfirmFlyAuto;
	ConfirmFlyAuto.id = "ConfirmFlyAuto";
	ConfirmFlyAuto:SetPoint( "TOPLEFT", LockAddonFrame, "BOTTOMLEFT", 0, -16);
	ConfirmFlyAuto:SetScript("onClick",config.ChangeState);

	_G[ ConfirmFlyAuto:GetName().."Text" ]:SetText( L.CONFIG_CONFIRM_FLIGHT_AUTO );

	local ConfirmFlyManual = CreateFrame( "CheckButton", "FlightMapEnhancedConfirmFlyManual", config, "InterfaceOptionsCheckButtonTemplate" );
    config.ConfirmFlyManual = ConfirmFlyManual;
	ConfirmFlyManual.id = "ConfirmFlyManual";
	ConfirmFlyManual:SetPoint( "TOPLEFT", ConfirmFlyAuto, "BOTTOMLEFT", 0, -16);
	ConfirmFlyManual:SetScript("onClick",config.ChangeState);

	_G[ ConfirmFlyManual:GetName().."Text" ]:SetText( L.CONFIG_CONFIRM_FLIGHT_MANUAL );




 InterfaceOptions_AddCategory(config);

 moduleconfig.name = L.CONFIG_MODULES;
 moduleconfig.parent = "Flight Map Enhanced";
 moduleconfig:SetHeight(10);

 local ModuleWarn = moduleconfig:CreateFontString( nil, "OVERLAY", "GameFontHighlight" );
moduleconfig.ModuleWarn = ModuleWarn;
ModuleWarn:SetPoint("TOPLEFT", moduleconfig,"TOPLEFT", 16, -16)
ModuleWarn:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30);
ModuleWarn:SetHeight(0);
ModuleWarn:SetJustifyH("LEFT");
ModuleWarn:SetText("|c00dfb802"..L.CONFIG_MODULES_HELP_CAPTION.."|r|n"..L.CONFIG_MODULES_HELP_TEXT);


 local modulewmc = CreateFrame( "CheckButton", "FlightMapEnhanced_Module_wmc", moduleconfig, "InterfaceOptionsCheckButtonTemplate" );
 moduleconfig.modulewmc = modulewmc;
 modulewmc.id = "wmc";
 modulewmc:SetPoint( "TOPLEFT", ModuleWarn, "BOTTOMLEFT", 0, -16);
 modulewmc:SetScript("onClick",moduleconfig.ChangeState);
 _G[ modulewmc:GetName().."Text" ]:SetText( "|c00dfb802World Map Click" );

  local Modulewmcexplain = moduleconfig:CreateFontString( nil, "OVERLAY", "GameFontHighlight" );
	moduleconfig.Modulewmcexplain = Modulewmcexplain;
	Modulewmcexplain:SetPoint("TOPLEFT", modulewmc,"TOPLEFT", 0, -16)
	Modulewmcexplain:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30);
	modulewmc:SetHeight(Modulewmcexplain:GetHeight() + 15);
	Modulewmcexplain:SetJustifyH("LEFT");
	Modulewmcexplain:SetText( L.CONFIG_MODULES_WMC_EXPLAIN.."|n"..L.CONFIG_MODULES_WMC_EXPLAIN2);

 local modulemfm = CreateFrame( "CheckButton", "FlightMapEnhanced_Module_mfm", moduleconfig, "InterfaceOptionsCheckButtonTemplate" );
 moduleconfig.modulemfm = modulemfm;
 modulemfm.id = "mfm";
 modulemfm:SetPoint( "TOPLEFT", Modulewmcexplain, "BOTTOMLEFT", 0, -16);
 modulemfm:SetScript("onClick",moduleconfig.ChangeState);
 _G[ modulemfm:GetName().."Text" ]:SetText( "|c00dfb802Missing Flight Masters" );

  local Modulemfmexplain = moduleconfig:CreateFontString( nil, "OVERLAY", "GameFontHighlight" );
	moduleconfig.Modulemfmexplain = Modulemfmexplain;
	Modulemfmexplain:SetPoint("TOPLEFT", modulemfm,"TOPLEFT", 0, -16)
	Modulemfmexplain:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30);
	modulemfm:SetHeight(Modulemfmexplain:GetHeight() + 15);
	Modulemfmexplain:SetJustifyH("LEFT");
	Modulemfmexplain:SetText( L.CONFIG_MOUDLES_MFM_EXPLAIN);

	 local moduleft = CreateFrame( "CheckButton", "FlightMapEnhanced_Module_ft", moduleconfig, "InterfaceOptionsCheckButtonTemplate" );
 moduleconfig.moduleft = moduleft;
 moduleft.id = "ft";
 moduleft:SetPoint( "TOPLEFT", Modulemfmexplain, "BOTTOMLEFT", 0, -16);
 moduleft:SetScript("onClick",moduleconfig.ChangeState);
 _G[ moduleft:GetName().."Text" ]:SetText( "|c00dfb802Flight Times" );

 -- local Modulemfmexplain = moduleconfig:CreateFontString( nil, "OVERLAY", "GameFontHighlight" );
	--moduleconfig.Modulemfmexplain = Modulemfmexplain;
	--Modulemfmexplain:SetPoint("TOPLEFT", modulemfm,"TOPLEFT", 0, -16)
	--Modulemfmexplain:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30);
	--modulemfm:SetHeight(Modulemfmexplain:GetHeight() + 15);
	--Modulemfmexplain:SetJustifyH("LEFT");
	--Modulemfmexplain:SetText( L.CONFIG_MOUDLES_MFM_EXPLAIN);

 InterfaceOptions_AddCategory(moduleconfig);





 if not (FlightMapEnhanced_Config.vconf) then
   config:SetDefaultConfig();
 else
   config:SetCurrentConfig();
 end
 ns.vconf = FlightMapEnhanced_Config.vconf;
config:ChangeHandler(config.ShowMiniMapButton.id,config.ShowMiniMapButton:GetChecked())
config:ChangeHandler(config.LockFlightMap.id,config.LockFlightMap:GetChecked())
config:ChangeHandler(config.DetachAddon.id,config.DetachAddon:GetChecked())
config:ChangeHandler(config.LockAddonFrame.id,config.LockAddonFrame:GetChecked())

	if not(FlightMapEnhanced_Config.vconf.modules) then
		FlightMapEnhanced_Config.vconf.modules = {};
		moduleconfig:SetDefaultConfig();
	else
		moduleconfig:SetCurrentConfig();
	end

end

function moduleconfig:SetDefaultConfig()
	for _, val in pairs(ns.modules) do
		FlightMapEnhanced_Config.vconf.modules[val] = 1;
		_G["FlightMapEnhanced_Module_"..val]:SetChecked(1);
	end
end

function moduleconfig:SetCurrentConfig()
	for key, val in pairs(FlightMapEnhanced_Config.vconf.modules) do
		_G["FlightMapEnhanced_Module_"..key]:SetChecked(val);
	end
end

function moduleconfig:ChangeState()
	FlightMapEnhanced_Config.vconf.modules[self.id] = self:GetChecked();
end