diff options
Diffstat (limited to 'ShiftOS.Main/ShiftOS/Desktop.cs')
| -rw-r--r-- | ShiftOS.Main/ShiftOS/Desktop.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/ShiftOS.Main/ShiftOS/Desktop.cs b/ShiftOS.Main/ShiftOS/Desktop.cs new file mode 100644 index 0000000..494222a --- /dev/null +++ b/ShiftOS.Main/ShiftOS/Desktop.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Engine.WindowManager; + +namespace ShiftOS.Main.ShiftOS +{ + public partial class Desktop : Form + { + public Desktop() + { + InitializeComponent(); + + timer1.Start(); + + this.Closed += (sender, args) => + { + Application.Exit(); + }; + + #region Disgusting taskbar code + + ShiftWM.Windows.CollectionChanged += (sender, args) => + { + args.NewItems?.OfType<ShiftWindow>().ToList().ForEach(window => + { + taskbar.Invoke(new Action(() => + { + taskbar.Items.Add(new ToolStripButton + { + Text = window.Title.Text, + Image = window.Icon.ToBitmap(), + Tag = window.Id + }); + })); + }); + + args.OldItems?.OfType<ShiftWindow>().ToList().ForEach(window => + { + taskbar.Invoke(new Action(() => + { + var tbRemovalList = taskbar.Items.OfType<ToolStripItem>().Where(i => (uint) i.Tag == window.Id); + + tbRemovalList.ToList().ForEach(p => taskbar.Items.Remove(p)); + })); + }); + }; + + #endregion + } + + private void timer1_Tick(object sender, EventArgs e) => + taskbarClock.Text = $"{DateTime.Now:t}"; + } +} |
