-- Handle all the option settings

FishingBuddy.OptionsFrame = {};

FishingBuddy.CheckButton_OnShow = function()
   this:SetChecked(FishingBuddy.GetSetting(this.name));
   getglobal(this:GetName().."Text"):SetText(this.text);
end

FishingBuddy.CheckButton_OnClick = function()
   local value = 0;
   if ( this:GetChecked() ) then
      PlaySound("igMainMenuOptionCheckBoxOff");
      value = 1;
   else
      PlaySound("igMainMenuOptionCheckBoxOn");
   end
   FishingBuddy.SetSetting(this.name, value);
end

FishingBuddy.CheckButton_OnEnter = function()
   local tooltip = this.tooltip;
   if ( tooltip ) then
      GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
      GameTooltip:SetText(tooltip, nil, nil, nil, nil, 1);
      GameTooltip:Show();
   end
end

FishingBuddy.CheckButton_OnLeave = function()
   GameTooltip:Hide();
end

FishingBuddy.OptionsFrame.Setup = function()
   for _, option in FishingBuddy.OPTIONS do
      local button = getglobal("FishingBuddyOption_"..option.name);
      if (button) then
	 local showthis = true;
	 if ( option.check ) then
	    showthis = option.check();
	 end
	 if ( showthis ) then
	    button:Show();
	    button.name = option.name;
	    button.text = option.text;
	    button.tooltip = option.tooltip;
	 else
	    button:Hide();
	 end
      end
   end

   if ( FishingBuddy.UseButtonHole() ) then
      FishingBuddyMinimapPosSlider:Hide();
   end
   local gs = FishingBuddy.GetSetting;
   FishingBuddy.OptionsFrame.SetKeyValue("EasyCastKeys", gs("EasyCastKeys"));
 end

FishingBuddy.OptionsFrame.SetKeyValue = function(what, value)
   local show = FishingBuddy.Keys[value];
   FishingBuddy.SetSetting(what, value);
   local menu = getglobal("FishingBuddyOption_"..what);
   if ( menu ) then
      local label = getglobal("FishingBuddyOption_"..what.."Label");
      UIDropDownMenu_SetWidth(90, menu);
      UIDropDownMenu_SetSelectedValue(menu, show);
      UIDropDownMenu_SetText(show, menu);
      label:SetText(FishingBuddy.KEYS_LABEL_TEXT);
   end
end

FishingBuddy.OptionsFrame.LoadKeyMenu = function(what)
   local info = {};
   local setting = FishingBuddy.GetSetting(what);
   for value,label in FishingBuddy.Keys do
      local v = value;
      local w = what;
      info.text = label;
      info.func = function() FishingBuddy.OptionsFrame.SetKeyValue(w, v); end;
      if ( setting == value ) then
	 info.checked = true;
      else
	 info.checked = false;
      end
      UIDropDownMenu_AddButton(info);
   end
end

FishingBuddy.OptionsFrame.MenuSetup = function(what)
   UIDropDownMenu_Initialize(this,
			     function()
				local w = what;
				FishingBuddy.OptionsFrame.LoadKeyMenu(what);
			     end);
end
