diff options
| author | AShifter <[email protected]> | 2017-06-05 09:49:46 -0600 |
|---|---|---|
| committer | AShifter <[email protected]> | 2017-06-05 09:49:46 -0600 |
| commit | 61c906e596145bbedd60725c6dcee68c34a27907 (patch) | |
| tree | cd7a00d501affe96028bfb21a8dec90c2ee63f2c /ShiftOS_TheReturn/NotificationDaemon.cs | |
| parent | 66ea2cf2fdeeaa025bd22961a0400423233c505d (diff) | |
| parent | 3e11eca70481841b6e2f2253d667944779cfd5fb (diff) | |
| download | shiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.tar.gz shiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.tar.bz2 shiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.zip | |
Merge remote-tracking branch 'refs/remotes/shiftos-game/master'
Diffstat (limited to 'ShiftOS_TheReturn/NotificationDaemon.cs')
| -rw-r--r-- | ShiftOS_TheReturn/NotificationDaemon.cs | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/ShiftOS_TheReturn/NotificationDaemon.cs b/ShiftOS_TheReturn/NotificationDaemon.cs index 77a31fc..0725782 100644 --- a/ShiftOS_TheReturn/NotificationDaemon.cs +++ b/ShiftOS_TheReturn/NotificationDaemon.cs @@ -25,6 +25,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; @@ -34,6 +35,36 @@ namespace ShiftOS.Engine { public static class NotificationDaemon { + /// <summary> + /// Gets a list of all <see cref="IStatusIcon"/> objects that meet their Shiftorium dependencies. + /// </summary> + /// <returns>An array of <see cref="Type"/>s containing the found objects.</returns> + public static Type[] GetAllStatusIcons() + { + List<Type> lst = new List<Type>(); + foreach(var exec in System.IO.Directory.GetFiles(Environment.CurrentDirectory)) + { + if(exec.ToLower().EndsWith(".exe") || exec.ToLower().EndsWith(".dll")) + { + try + { + var asm = Assembly.LoadFile(exec); + foreach(var type in asm.GetTypes().Where(x => x.GetInterfaces().Contains(typeof(IStatusIcon)))) + { + if (Shiftorium.UpgradeAttributesUnlocked(type)) + { + lst.Add(type); + } + } + } + catch { } + } + } + return lst.ToArray(); + } + + + //if the notifications file already exists then get them public static Notification[] GetAllFromFile() { Notification[] notes = { }; @@ -44,23 +75,25 @@ namespace ShiftOS.Engine return notes; } + //tells the computer how it likes it to be written in the file internal static void WriteNotes(Notification[] notes) { - Utils.WriteAllText(Paths.GetPath("notifications.dat"), JsonConvert.SerializeObject(notes, Formatting.Indented)); + Utils.WriteAllText(Paths.GetPath("notifications.dat"), JsonConvert.SerializeObject(notes, Formatting.Indented)); //"write it in there indented pls" } - public static event Action<Notification> NotificationMade; - + public static event Action<Notification> NotificationMade; //use this if you want to know when a notification has been made + public static void AddNotification(NotificationType note, object data) { - var lst = new List<Notification>(GetAllFromFile()); - lst.Add(new Engine.Notification(note, data)); + var lst = new List<Notification>(GetAllFromFile()); //grabs all current notifications + lst.Add(new Engine.Notification(note, data)); //then adds the new one to the list WriteNotes(lst.ToArray()); - NotificationMade?.Invoke(lst[lst.Count - 1]); + NotificationMade?.Invoke(lst[lst.Count - 1]); //says to the program that a notification has indeed been made } public static event Action NotificationRead; + //for every notification that there is, mark them as read public static void MarkAllRead() { var notes = GetAllFromFile(); @@ -68,30 +101,33 @@ namespace ShiftOS.Engine MarkRead(i); } + //grabs list of notifcations and if the notification you want to mark as read actually exsists, then it assigns it as read public static void MarkRead(int note) { var notes = GetAllFromFile(); if (note >= notes.Length || note < 0) throw new ArgumentOutOfRangeException("note", new Exception("You cannot mark a notification that does not exist as read.")); - notes[note].Read = true; + notes[note].Read = true; //assigns the specific notification as read WriteNotes(notes); NotificationRead?.Invoke(); } - public static int GetUnreadCount() + public static int GetUnreadCount() //use this if you want the unread notification count, but i think you probably already knew that { int c = 0; foreach (var note in GetAllFromFile()) if (note.Read == false) - c++; //gahh I hate that programming language. + c++; //gahh I hate that programming language. //dont we all return c; } } + //actually gives the proper data for the notification public struct Notification { + //defaults for all notificaions public Notification(NotificationType t, object data) { Type = t; @@ -106,9 +142,10 @@ namespace ShiftOS.Engine public DateTime Timestamp { get; set; } } + //defines all the possible notificaions that can happen public enum NotificationType { - Generic = 0x00, + Generic = 0x00, //lets get generic MemoReceived = 0x10, MemoSent = 0x11, DownloadStarted = 0x20, |
