aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS_TheReturn')
-rw-r--r--ShiftOS_TheReturn/IStatusIcon.cs14
-rw-r--r--ShiftOS_TheReturn/NotificationDaemon.cs30
-rw-r--r--ShiftOS_TheReturn/ShiftOS.Engine.csproj1
3 files changed, 45 insertions, 0 deletions
diff --git a/ShiftOS_TheReturn/IStatusIcon.cs b/ShiftOS_TheReturn/IStatusIcon.cs
new file mode 100644
index 0000000..f32d1c1
--- /dev/null
+++ b/ShiftOS_TheReturn/IStatusIcon.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ShiftOS.Engine
+{
+ public interface IStatusIcon
+ {
+ void Setup();
+
+ }
+}
diff --git a/ShiftOS_TheReturn/NotificationDaemon.cs b/ShiftOS_TheReturn/NotificationDaemon.cs
index a90510a..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,35 @@ 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()
{
diff --git a/ShiftOS_TheReturn/ShiftOS.Engine.csproj b/ShiftOS_TheReturn/ShiftOS.Engine.csproj
index 4cbce72..f70c41e 100644
--- a/ShiftOS_TheReturn/ShiftOS.Engine.csproj
+++ b/ShiftOS_TheReturn/ShiftOS.Engine.csproj
@@ -109,6 +109,7 @@
<Compile Include="FileSkimmerBackend.cs" />
<Compile Include="Infobox.cs" />
<Compile Include="IShiftOSWindow.cs" />
+ <Compile Include="IStatusIcon.cs" />
<Compile Include="KernelWatchdog.cs" />
<Compile Include="Localization.cs" />
<Compile Include="LoginManager.cs" />