using IniParser;
using IniParser.Model;
using System.IO;

namespace Sleepy
{
	public class Config
	{
		private string file;
		private FileIniDataParser parser;
		private IniData config;

		public int Timeout = 60;
		public bool WindowsUpdate = true;

		public Config(string file)
		{
			this.file = file;
			parser = new FileIniDataParser();
			try
			{
				config = parser.ReadFile(file);
			} catch
			{
				config = new IniData();
			}
			Reload();
		}

		public void Save()
		{
			config["config"]["timeout"] = Timeout.ToString();
			config["config"]["windows_update"] = WindowsUpdate.ToString();

			if (!File.Exists(Path.GetDirectoryName(file)))
			{
				Directory.CreateDirectory(Path.GetDirectoryName(file));
			}

			parser.WriteFile(file, config);
		}

		public void Reload()
		{
			string timeout = "60";

			if (!string.IsNullOrEmpty(config["config"]["timeout"]))
			{
				timeout = config["config"]["timeout"];
			}

			if (!string.IsNullOrEmpty(config["config"]["windows_update"]))
			{
				WindowsUpdate = config["config"]["windows_update"].ToLower() == "true";
			}

			int iTimeout;

			if (int.TryParse(timeout, out iTimeout) && iTimeout >= 15 && iTimeout <= 900)
			{
				Timeout = iTimeout;
			}
		}
	}
}