using System;
using System.Diagnostics;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;

namespace ETDiscordPresence
{
	internal class Tray : IDisposable
	{
		internal delegate void ExitDelegate();

		internal ExitDelegate Exit;

		private readonly NotifyIcon icon;

		public Tray()
		{
			var menu = new ContextMenu();

			var homepage = new MenuItem(@"a domestic cat © 2019");
			homepage.Click += (sender, args) => { Process.Start("https://github.com/adawolfa/et-discord-presence"); };
			
			var exit = new MenuItem(@"Quit");
			exit.Click += (sender, args) => Exit();

			menu.MenuItems.Add(0, exit);
			menu.MenuItems.Add(0, homepage);

			icon = new NotifyIcon()
			{
				Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location),
				ContextMenu = menu,
				Text = "ET Discord presence",
			};
		}

		internal bool Visible
		{
			set => icon.Visible = value;
		}

		public void Dispose()
		{
			icon?.Dispose();
		}
	}
}