aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-02-25 09:45:17 -0500
committerMichael <[email protected]>2017-02-25 09:45:22 -0500
commitea18e37bffacbb8d52b875eecc860dc985ba8bc5 (patch)
treed2314393869ee4b170e0f3f026fc0d0513169805
parentd5678e127cf6ae8f35bf4cfaae41ab28e3c2b95d (diff)
downloadshiftos_thereturn-ea18e37bffacbb8d52b875eecc860dc985ba8bc5.tar.gz
shiftos_thereturn-ea18e37bffacbb8d52b875eecc860dc985ba8bc5.tar.bz2
shiftos_thereturn-ea18e37bffacbb8d52b875eecc860dc985ba8bc5.zip
finish notification backend
-rw-r--r--ShiftOS.WinForms/Applications/Notifications.cs183
-rw-r--r--ShiftOS_TheReturn/Paths.cs1
2 files changed, 184 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/Applications/Notifications.cs b/ShiftOS.WinForms/Applications/Notifications.cs
index aa8ba71..4f7cc55 100644
--- a/ShiftOS.WinForms/Applications/Notifications.cs
+++ b/ShiftOS.WinForms/Applications/Notifications.cs
@@ -8,6 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
+using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications
{
@@ -28,7 +29,189 @@ namespace ShiftOS.WinForms.Applications
public void SetupUI()
{
+ fllist.Controls.Clear();
+ bool showNoNotes = true;
+ foreach (var note in NotificationDaemon.GetAllFromFile())
+ {
+ 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) =>
+ {
+ NotificationDaemon.MarkRead(new List<Notification>(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();
+ }
+ }
+
+ if(showNoNotes == true)
+ {
+ var lbl = new Label();
+ lbl.Tag = "header3";
+ ControlManager.SetupControl(lbl);
+ lbl.AutoSize = true;
+ lbl.Text = "You have no notifications.";
+ fllist.Controls.Add(lbl);
+ lbl.Show();
+ }
+
+
+ }
+
+ public string ParseNotificationData(Notification note)
+ {
+ string data = "";
+ data = note.Timestamp.ToString();
+ data += Environment.NewLine + Environment.NewLine;
+
+ switch (note.Type)
+ {
+ case NotificationType.ChatBan:
+ data += "You have been banned from " + note.Data.ToString() + ".";
+ break;
+ case NotificationType.CodepointsReceived:
+ data += "You have received " + note.Data.ToString() + " Codepoints.";
+ break;
+ case NotificationType.CodepointsSent:
+ data += "You have lost " + note.Data.ToString() + " Codepoints.";
+ break;
+ case NotificationType.CriticalBugwatch:
+ data += "ShiftOS is in a critical bugwatch state. If you see any bugs, report them to us immediately.";
+ break;
+ case NotificationType.DownloadComplete:
+ data += "Download of file " + note.Data.ToString() + " complete.";
+ break;
+ case NotificationType.DownloadStarted:
+ data += "Download started. Destination: " + note.Data.ToString() + ".";
+ break;
+ case NotificationType.Generic:
+ data += note.Data.ToString();
+ break;
+ case NotificationType.LegionBan:
+ data += "You have been banned from " + note.Data.ToString();
+ break;
+ case NotificationType.LegionInvite:
+ data += "You have been invited to a legion. Invite code: " + note.Data.ToString();
+ break;
+ case NotificationType.LegionKick:
+ data += "You have been kicked out of " + note.Data.ToString() + ".";
+ break;
+ case NotificationType.MemoReceived:
+ data += "New memo received from " + note.Data.ToString() + "!";
+ break;
+ case NotificationType.MemoSent:
+ data += "Memo successfully sent to " + note.Data.ToString() + ".";
+ break;
+ case NotificationType.MUDAnnouncement:
+ data += note.Data.ToString();
+ break;
+ case NotificationType.MUDMaintenance:
+ data += "The MUD will be going down for a little while at " + note.Data.ToString() + ". Please beware.";
+ break;
+ case NotificationType.NewAppveyor:
+ data += "A new AppVeyor build of ShiftOS has been released.";
+ break;
+ case NotificationType.NewDeveloper:
+ data += "A new developer, " + note.Data.ToString() + " has been added to the team!";
+ break;
+ case NotificationType.NewShiftOSStable:
+ data += "The latest ShiftOS stable, " + note.Data.ToString() + " has been released!";
+ break;
+ case NotificationType.NewShiftOSStream:
+ data += "We're going to be live at http://youtube.com/ShiftOS/live at " + note.Data.ToString() + " (Eastern Standard Time).";
+ break;
+ case NotificationType.NewShiftOSUnstable:
+ data += "A new unstable version of ShiftOS has been released: " + note.Data.ToString() + ".";
+ break;
+ case NotificationType.NewShiftOSVideo:
+ data += "A new ShiftOS video has been released! Get to it before Victor Tran!";
+ break;
+ case NotificationType.SavePurge:
+ data += "A purge has occurred inside the multi-user domain. If you have lost your save, it is because it has gone rogue and has been purged.";
+ break;
+ case NotificationType.ShopPurchase:
+ data += "You have successfully purchased " + note.Data.ToString() + ".";
+ break;
+ default:
+ data += "Corrupt notification data.";
+ break;
+ }
+
+ return data;
+ }
+
+ public string ParseNotification(Notification note)
+ {
+ switch (note.Type)
+ {
+ case NotificationType.ChatBan:
+ return "Banned from chat";
+ case NotificationType.CodepointsReceived:
+ return "Codepoints received.";
+ case NotificationType.CodepointsSent:
+ return "Codepoints sent.";
+ case NotificationType.CriticalBugwatch:
+ return "Critical Bugwatch in progress";
+ case NotificationType.DownloadComplete:
+ return "Download complete.";
+ case NotificationType.DownloadStarted:
+ return "Download started.";
+ case NotificationType.Generic:
+ return "System update";
+ case NotificationType.LegionBan:
+ return "Banned from legion";
+ case NotificationType.LegionInvite:
+ return "Legion invite received.";
+ case NotificationType.LegionKick:
+ return "Kicked from legion";
+ case NotificationType.MemoReceived:
+ return "New memo";
+ case NotificationType.MemoSent:
+ return "Memo sent.";
+ case NotificationType.MUDAnnouncement:
+ return "MUD Announcement";
+ case NotificationType.MUDMaintenance:
+ return "MUD maintenance warning!";
+ case NotificationType.NewAppveyor:
+ return "New AppVeyor build of ShiftOS";
+ case NotificationType.NewDeveloper:
+ return "Please welcome our newest developer...";
+ case NotificationType.NewShiftOSStable:
+ return "The newest ShiftOS stable is out!";
+ case NotificationType.NewShiftOSStream:
+ return "We're going live soon!";
+ case NotificationType.NewShiftOSUnstable:
+ return "The latest ShiftOS unstable is out!";
+ case NotificationType.NewShiftOSVideo:
+ return "New ShiftOS video is out!";
+ case NotificationType.SavePurge:
+ return "MUD save purge";
+ case NotificationType.ShopPurchase:
+ return "Item purchased from shop.";
+ default:
+ return "Unknown";
+ }
}
public void OnLoad()
diff --git a/ShiftOS_TheReturn/Paths.cs b/ShiftOS_TheReturn/Paths.cs
index 7408bef..4f535d6 100644
--- a/ShiftOS_TheReturn/Paths.cs
+++ b/ShiftOS_TheReturn/Paths.cs
@@ -59,6 +59,7 @@ namespace ShiftOS.Engine
AddPath("system", "applauncher");
AddPath("data", "save.json");
AddPath("data", "user.dat");
+ AddPath("data", "notifications.dat");
AddPath("data", "skin");
AddPath("system", "programs");
AddPath("system", "kernel.sft");