From 3a41ba45e7ac0df930066a79540f82544dbd8114 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 2 Feb 2017 13:51:29 -0500 Subject: Redesign the Infobox, categorize AL items --- ShiftOS.WinForms/WinformsDesktop.cs | 47 ++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'ShiftOS.WinForms/WinformsDesktop.cs') diff --git a/ShiftOS.WinForms/WinformsDesktop.cs b/ShiftOS.WinForms/WinformsDesktop.cs index c9287ff..e2b89fb 100644 --- a/ShiftOS.WinForms/WinformsDesktop.cs +++ b/ShiftOS.WinForms/WinformsDesktop.cs @@ -230,6 +230,20 @@ namespace ShiftOS.WinForms PopulatePanelButtons(); } + public ToolStripMenuItem GetALCategoryWithName(string text) + { + foreach(ToolStripMenuItem menuitem in apps.DropDownItems) + { + if (menuitem.Text == text) + return menuitem; + } + + var itm = new ToolStripMenuItem(); + itm.Text = text; + apps.DropDownItems.Add(itm); + return itm; + } + /// /// Populates the app launcher. /// @@ -239,6 +253,10 @@ namespace ShiftOS.WinForms { apps.DropDownItems.Clear(); + Dictionary> sortedItems = new Dictionary>(); + + + foreach (var kv in items) { var item = new ToolStripMenuItem(); @@ -247,7 +265,34 @@ namespace ShiftOS.WinForms { Engine.AppearanceManager.SetupWindow(Activator.CreateInstance(kv.LaunchType) as IShiftOSWindow); }; - apps.DropDownItems.Add(item); + if (sortedItems.ContainsKey(kv.DisplayData.Category)) + { + sortedItems[kv.DisplayData.Category].Add(item); + } + else + { + sortedItems.Add(kv.DisplayData.Category, new List()); + sortedItems[kv.DisplayData.Category].Add(item); + } + } + + foreach(var kv in sortedItems) + { + if (Shiftorium.UpgradeInstalled("app_launcher_categories")) + { + var cat = GetALCategoryWithName(kv.Key); + foreach(var subItem in kv.Value) + { + cat.DropDownItems.Add(subItem); + } + } + else + { + foreach(var subItem in kv.Value) + { + apps.DropDownItems.Add(subItem); + } + } } if (Shiftorium.UpgradeInstalled("al_shutdown")) -- cgit v1.2.3