using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace TweetDck.Core.Utils{
    [Serializable]
    class WindowState{
        private Rectangle rect;
        private bool isMaximized;

        public void Save(Form form){
            rect = form.WindowState == FormWindowState.Normal ? form.DesktopBounds : form.RestoreBounds;
            isMaximized = form.WindowState == FormWindowState.Maximized;
        }

        public void Restore(Form form){
            if (rect != Rectangle.Empty){
                form.DesktopBounds = rect;
                form.WindowState = isMaximized ? FormWindowState.Maximized : FormWindowState.Normal;
            }

            if (rect == Rectangle.Empty || !Screen.AllScreens.Any(screen => screen.WorkingArea.IntersectsWith(form.Bounds))){
                form.DesktopBounds = Screen.PrimaryScreen.WorkingArea;
                form.WindowState = FormWindowState.Maximized;
                Save(form);
            }
        }
    }
}