diff options
| author | AShifter <[email protected]> | 2017-10-01 08:23:50 -0600 |
|---|---|---|
| committer | AShifter <[email protected]> | 2017-10-01 08:23:50 -0600 |
| commit | 46fe7eb7098dd31b186e13e228fede07c46ee064 (patch) | |
| tree | e6fbc5ac67890b11293f682c279ff7670ecef8cf /ShiftOS.Main/ShiftOS/Desktop.cs | |
| parent | f5004702c46d6c99737a0519d7d6735307c7501a (diff) | |
| parent | f2ed0c673c2d3f0e021b0307a22792af66fd217d (diff) | |
| download | shiftos-rewind-46fe7eb7098dd31b186e13e228fede07c46ee064.tar.gz shiftos-rewind-46fe7eb7098dd31b186e13e228fede07c46ee064.tar.bz2 shiftos-rewind-46fe7eb7098dd31b186e13e228fede07c46ee064.zip | |
Merge remote-tracking branch 'refs/remotes/ShiftOS-Rewind/master'
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}"; + } +} |
