From 01f2d4485ff87f4ba9683ade42edc682cdab8f42 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Fri, 29 Jul 2016 13:47:58 -0700 Subject: [PATCH] Sort make/models droplists --- .../PrinterConnections/SetupStepMakeModelName.cs | 16 +++++----------- SettingsManagement/OemSettings.cs | 5 ++++- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs b/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs index 7439a9fb6..702997204 100644 --- a/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs +++ b/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs @@ -185,25 +185,19 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections private void ManufacturerDropList_SelectionChanged(object sender, EventArgs e) { - activeMake = ((Agg.UI.DropDownList)sender).SelectedValue; + activeMake = ((DropDownList)sender).SelectedValue; activeModel = null; + // Select the dictionary containing the printerName->printerToken mappings for the current OEM Dictionary printers; if (!OemSettings.Instance.OemProfiles.TryGetValue(activeMake, out printers)) { + // Fall back to an empty dictionary if no match printers = new Dictionary(); } - var models = printers.Select(profile => new KeyValuePair(profile.Key, profile.Value)).ToList(); - // sort by key (model name) - models.Sort( - delegate (KeyValuePair pair1, - KeyValuePair pair2) - { - return pair1.Key.CompareTo(pair2.Key); - } - ); - printerModelSelector.ListSource = models; + // Models - sort dictionary results by key and assign to .ListSource + printerModelSelector.ListSource = printers.OrderBy(p => p.Key).ToList(); if (printerModelSelector.MenuItems.Count == 1) { // SelectIfOnlyOneModel diff --git a/SettingsManagement/OemSettings.cs b/SettingsManagement/OemSettings.cs index 49973b57b..cff71b6d4 100644 --- a/SettingsManagement/OemSettings.cs +++ b/SettingsManagement/OemSettings.cs @@ -83,8 +83,11 @@ namespace MatterHackers.MatterControl.SettingsManagement public List PreloadedLibraryFiles { get; } = new List(); - internal void SetManufacturers(IEnumerable> manufacturers, List whitelist = null) + internal void SetManufacturers(IEnumerable> unorderedManufacturers, List whitelist = null) { + // Sort manufacturers by name + var manufacturers = unorderedManufacturers.OrderBy(k => k.Value); + if (whitelist != null) { this.PrinterWhiteList = whitelist;