From 910a1c455e0176bfff7776e47f9160e349cfaf67 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 25 Feb 2017 10:03:36 -0500 Subject: [PATCH] Notification counter on desktop. --- .../Applications/Notifications.Designer.cs | 1 + .../Applications/Notifications.cs | 57 +++++++++++-------- ShiftOS.WinForms/WinformsDesktop.cs | 12 ++++ ShiftOS_TheReturn/NotificationDaemon.cs | 19 +++++-- ShiftOS_TheReturn/SaveSystem.cs | 5 +- 5 files changed, 62 insertions(+), 32 deletions(-) diff --git a/ShiftOS.WinForms/Applications/Notifications.Designer.cs b/ShiftOS.WinForms/Applications/Notifications.Designer.cs index d9a8388..74fd5b7 100644 --- a/ShiftOS.WinForms/Applications/Notifications.Designer.cs +++ b/ShiftOS.WinForms/Applications/Notifications.Designer.cs @@ -47,6 +47,7 @@ // fllist // this.fllist.Dock = System.Windows.Forms.DockStyle.Fill; + this.fllist.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.fllist.Location = new System.Drawing.Point(0, 33); this.fllist.Name = "fllist"; this.fllist.Size = new System.Drawing.Size(437, 487); diff --git a/ShiftOS.WinForms/Applications/Notifications.cs b/ShiftOS.WinForms/Applications/Notifications.cs index 4f7cc55..6fb659d 100644 --- a/ShiftOS.WinForms/Applications/Notifications.cs +++ b/ShiftOS.WinForms/Applications/Notifications.cs @@ -36,32 +36,41 @@ namespace ShiftOS.WinForms.Applications { if (note.Read == false) { - showNoNotes = false; - var headerLabel = new Label(); - headerLabel.Tag = "header2"; - ControlManager.SetupControl(headerLabel); - headerLabel.Text = ParseNotification(note); - headerLabel.Width = fllist.Width - 4; - fllist.Controls.Add(headerLabel); - headerLabel.Show(); - - var markButton = new Button(); - ControlManager.SetupControl(markButton); - markButton.Text = "Mark as read"; - markButton.Click += (o, a) => + try { - NotificationDaemon.MarkRead(new List(NotificationDaemon.GetAllFromFile()).IndexOf(note)); - SetupUI(); - }; - fllist.Controls.Add(markButton); - markButton.Show(); + showNoNotes = false; + var headerLabel = new Label(); + headerLabel.Tag = "header2"; + ControlManager.SetupControl(headerLabel); + headerLabel.Text = ParseNotification(note); + headerLabel.Width = fllist.Width - 4; + fllist.Controls.Add(headerLabel); + headerLabel.Show(); - var dataLabel = new Label(); - dataLabel.Text = ParseNotificationData(note); - dataLabel.MaximumSize = new Size(fllist.Width - 4, 0); - dataLabel.AutoSize = true; - fllist.Controls.Add(dataLabel); - dataLabel.Show(); + var markButton = new Button(); + ControlManager.SetupControl(markButton); + markButton.Text = "Mark as read"; + markButton.AutoSize = true; + markButton.AutoSizeMode = AutoSizeMode.GrowAndShrink; + markButton.Click += (o, a) => + { + NotificationDaemon.MarkRead(new List(NotificationDaemon.GetAllFromFile()).IndexOf(note)); + SetupUI(); + }; + fllist.Controls.Add(markButton); + markButton.Show(); + + var dataLabel = new Label(); + dataLabel.Text = ParseNotificationData(note); + dataLabel.MaximumSize = new Size(fllist.Width - 4, 0); + dataLabel.AutoSize = true; + fllist.Controls.Add(dataLabel); + dataLabel.Show(); + } + catch + { + + } } } diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs index ded68ba..957c793 100644 --- a/ShiftOS.WinForms/WinformsDesktop.cs +++ b/ShiftOS.WinForms/WinformsDesktop.cs @@ -60,6 +60,14 @@ namespace ShiftOS.WinForms { InitializeComponent(); this.TopMost = false; + + NotificationDaemon.NotificationMade += (note) => + { + //Soon this will pop a balloon note. + btnnotifications.Text = "Notifications (" + NotificationDaemon.GetUnreadCount().ToString() + ")"; + + }; + this.LocationChanged += (o, a) => { if (this.Left != 0) @@ -80,6 +88,10 @@ namespace ShiftOS.WinForms { if(this.Visible == true) this.Invoke(new Action(() => SetupDesktop())); + this.Invoke(new Action(() => + { + btnnotifications.Text = "Notifications (" + NotificationDaemon.GetUnreadCount().ToString() + ")"; + })); }; Shiftorium.Installed += () => { diff --git a/ShiftOS_TheReturn/NotificationDaemon.cs b/ShiftOS_TheReturn/NotificationDaemon.cs index 3a2e96a..3ea8a54 100644 --- a/ShiftOS_TheReturn/NotificationDaemon.cs +++ b/ShiftOS_TheReturn/NotificationDaemon.cs @@ -45,6 +45,15 @@ namespace ShiftOS.Engine notes[note].Read = true; WriteNotes(notes); } + + public static int GetUnreadCount() + { + int c = 0; + foreach (var note in GetAllFromFile()) + if (note.Read == false) + c++; //gahh I hate that programming language. + return c; + } } public struct Notification @@ -57,13 +66,13 @@ namespace ShiftOS.Engine Timestamp = DateTime.Now; } - public bool Read { get; internal set; } - public NotificationType Type { get; private set; } - public object Data { get; private set; } - public DateTime Timestamp { get; private set; } + public bool Read { get; set; } + public NotificationType Type { get; set; } + public object Data { get; set; } + public DateTime Timestamp { get; set; } } - public enum NotificationType : byte + public enum NotificationType { Generic = 0x00, MemoReceived = 0x10, diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs index fb7070a..9ae18a9 100644 --- a/ShiftOS_TheReturn/SaveSystem.cs +++ b/ShiftOS_TheReturn/SaveSystem.cs @@ -209,8 +209,7 @@ namespace ShiftOS.Engine public static void TransferCodepointsToVoid(int amount) { CurrentSave.Codepoints -= amount; - if(!Shiftorium.Silent) - Console.WriteLine($"{{SHIFTORIUM_TRANSFERRED_TO}}: {amount} -> sys"); + NotificationDaemon.AddNotification(NotificationType.CodepointsSent, amount); } public static void Restart() @@ -302,7 +301,7 @@ namespace ShiftOS.Engine public static void TransferCodepointsFrom(string who, int amount) { - Console.WriteLine($"{{SHIFTORIUM_TRANSFERRED_FROM}}: {amount} <- {who}"); + NotificationDaemon.AddNotification(NotificationType.CodepointsReceived, amount); CurrentSave.Codepoints += amount; } }