using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static ShiftOS.Engine.SkinEngine; namespace ShiftOS.Engine { public class LauncherAttribute : Attribute { /// /// Marks this form as a launcher item that, when clicked, will open the form. /// /// The text displayed on the launcher item /// Whether or not an upgrade must be installed to see the launcher /// The ID of the upgrade - leave blank if requiresUpgrade is false. public LauncherAttribute(string name, bool requiresUpgrade, string upgradeID = "") { Name = name; RequiresUpgrade = requiresUpgrade; ID = upgradeID; } public string Name { get; set; } public bool RequiresUpgrade { get; set; } public string ID { get; set; } public bool UpgradeInstalled { get { if (!RequiresUpgrade) return true; return Shiftorium.UpgradeInstalled(ID); } } } public interface IDesktop { void SetupDesktop(); void PopulateAppLauncher(LauncherItem[] items); void ShowWindow(IWindowBorder border); void KillWindow(IWindowBorder border); void PopulatePanelButtons(); void MinimizeWindow(IWindowBorder brdr); void MaximizeWindow(IWindowBorder brdr); void RestoreWindow(IWindowBorder brdr); void InvokeOnWorkerThread(Action act); Size GetSize(); } public static class Desktop { private static IDesktop _desktop = null; public static Size Size { get { return _desktop.GetSize(); } } public static void Init(IDesktop desk) { _desktop = desk; } public static void InvokeOnWorkerThread(Action act) { _desktop.InvokeOnWorkerThread(act); } public static void ResetPanelButtons() { _desktop.PopulatePanelButtons(); } public static void ShowWindow(IWindowBorder brdr) { _desktop.ShowWindow(brdr); } public static void PopulateAppLauncher() { _desktop.PopulateAppLauncher(AppLauncherDaemon.Available().ToArray()); } } }