aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Main/ShiftOS/Desktop.cs
diff options
context:
space:
mode:
authorAShifter <[email protected]>2017-10-01 08:23:50 -0600
committerAShifter <[email protected]>2017-10-01 08:23:50 -0600
commit46fe7eb7098dd31b186e13e228fede07c46ee064 (patch)
treee6fbc5ac67890b11293f682c279ff7670ecef8cf /ShiftOS.Main/ShiftOS/Desktop.cs
parentf5004702c46d6c99737a0519d7d6735307c7501a (diff)
parentf2ed0c673c2d3f0e021b0307a22792af66fd217d (diff)
downloadshiftos-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.cs61
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}";
+ }
+}