]> granicus.if.org Git - handbrake/commitdiff
WinGui: Remove hard coded ordering on the in-line presets selector.
authorsr55 <sr55.hb@outlook.com>
Mon, 11 Feb 2019 20:08:50 +0000 (20:08 +0000)
committersr55 <sr55.hb@outlook.com>
Mon, 11 Feb 2019 20:09:16 +0000 (20:09 +0000)
win/CS/HandBrakeWPF/Converters/PresetsMenuConverter.cs
win/CS/HandBrakeWPF/Services/Presets/PresetService.cs

index 1baa99a602936fe99308f4054b909149f83346f4..d3a114376b391b18656e0f1687d33d6254962054 100644 (file)
@@ -41,7 +41,7 @@ namespace HandBrakeWPF.Converters
             }
             
             Dictionary<string, MenuItem> groupedMenu = new Dictionary<string, MenuItem>();
-            foreach (IPresetObject item in presets.OrderBy(p => p.Category))
+            foreach (IPresetObject item in presets)
             {
                 PresetDisplayCategory category = item as PresetDisplayCategory;
                 if (category != null)
@@ -103,7 +103,7 @@ namespace HandBrakeWPF.Converters
 
         private void ProcessCategory(Dictionary<string, MenuItem> groupedMenu, PresetDisplayCategory category)
         {
-            foreach (Preset preset in category.Presets.OrderBy(p => p.Name))
+            foreach (Preset preset in category.Presets)
             {
                 this.ProcessPreset(groupedMenu, preset);
             }
index 7a91841d8d242cff274c50fa36576981dd9602b6..9f11a7b0ae273c47e839fb0e26f6f234aa07ab56 100644 (file)
@@ -51,7 +51,8 @@ namespace HandBrakeWPF.Services.Presets
         public static string UserPresetCatgoryName = "Custom Presets";\r
         private readonly string presetFile = Path.Combine(DirectoryUtilities.GetUserStoragePath(VersionHelper.IsNightly()), "presets.json");\r
         private readonly ObservableCollection<IPresetObject> presets = new ObservableCollection<IPresetObject>(); // Can store Presets and PresetDisplayCategory objects.\r
-        private readonly Dictionary<string, Preset> flatPresetList = new Dictionary<string, Preset>();\r
+        private readonly Dictionary<string, Preset> flatPresetDict = new Dictionary<string, Preset>();\r
+        private readonly List<Preset> flatPresetList = new List<Preset>();\r
         private readonly IErrorService errorService;\r
         private readonly IUserSettingService userSettingService;\r
 \r
@@ -90,7 +91,7 @@ namespace HandBrakeWPF.Services.Presets
         {\r
             get\r
             {\r
-                return this.flatPresetList.Values.FirstOrDefault(p => p.IsDefault);\r
+                return this.flatPresetList.FirstOrDefault(p => p.IsDefault);\r
             }\r
         }\r
 \r
@@ -145,7 +146,8 @@ namespace HandBrakeWPF.Services.Presets
                     this.presets.Add(preset);\r
                 }\r
 \r
-                this.flatPresetList.Add(preset.Name, preset);\r
+                this.flatPresetDict.Add(preset.Name, preset);\r
+                this.flatPresetList.Add(preset);\r
 \r
                 // Update the presets file\r
                 if (!isLoading)\r
@@ -251,7 +253,7 @@ namespace HandBrakeWPF.Services.Presets
         public void Update(Preset update)\r
         {\r
             Preset preset;\r
-            if (this.flatPresetList.TryGetValue(update.Name, out preset))\r
+            if (this.flatPresetDict.TryGetValue(update.Name, out preset))\r
             {\r
                 preset.Task = update.Task;\r
                 preset.PictureSettingsMode = update.PictureSettingsMode;\r
@@ -299,7 +301,8 @@ namespace HandBrakeWPF.Services.Presets
             {\r
                 // Remove the preset, and cleanup the category if it's not got any presets in it.\r
                 cateogry.Presets.Remove(preset);\r
-                this.flatPresetList.Remove(preset.Name);\r
+                this.flatPresetList.Remove(preset);\r
+                this.flatPresetDict.Remove(preset.Name);\r
                 if (cateogry.Presets.Count == 0)\r
                 {\r
                     this.presets.Remove(cateogry);\r
@@ -308,7 +311,8 @@ namespace HandBrakeWPF.Services.Presets
             else\r
             {\r
                 this.presets.Remove(preset);\r
-                this.flatPresetList.Remove(preset.Name);\r
+                this.flatPresetList.Remove(preset);\r
+                this.flatPresetDict.Remove(preset.Name);\r
             }\r
 \r
             this.SavePresetFiles();\r
@@ -336,7 +340,8 @@ namespace HandBrakeWPF.Services.Presets
                     }\r
 \r
                     this.presets.Remove(preset);\r
-                    this.flatPresetList.Remove(preset.Name);\r
+                    this.flatPresetList.Remove(preset);\r
+                    this.flatPresetDict.Remove(preset.Name);\r
                 }\r
 \r
                 // Cleanup the category if we can.\r
@@ -358,7 +363,7 @@ namespace HandBrakeWPF.Services.Presets
         public void SetDefault(Preset preset)\r
         {\r
             // Set IsDefault false for everything.\r
-            foreach (Preset item in this.flatPresetList.Values)\r
+            foreach (Preset item in this.flatPresetList)\r
             {\r
                 item.IsDefault = false;\r
             }\r
@@ -381,7 +386,7 @@ namespace HandBrakeWPF.Services.Presets
         public Preset GetPreset(string name)\r
         {\r
             Preset preset;\r
-            if (this.flatPresetList.TryGetValue(name, out preset))\r
+            if (this.flatPresetDict.TryGetValue(name, out preset))\r
             {\r
                 return preset;\r
             }\r
@@ -422,7 +427,8 @@ namespace HandBrakeWPF.Services.Presets
                     foreach (Preset toRemove in presetsToRemove)\r
                     {\r
                         foundCategory.Presets.Remove(toRemove);\r
-                        this.flatPresetList.Remove(toRemove.Name);\r
+                        this.flatPresetList.Remove(toRemove);\r
+                        this.flatPresetDict.Remove(toRemove.Name);\r
                     }\r
 \r
                     // Check if we can remove this category.\r
@@ -440,7 +446,8 @@ namespace HandBrakeWPF.Services.Presets
 \r
                 if (item.GetType() == typeof(Preset))\r
                 {\r
-                    this.flatPresetList.Remove(((Preset)item).Name);\r
+                    this.flatPresetList.Remove(((Preset)item));\r
+                    this.flatPresetDict.Remove(((Preset)item).Name);\r
                 }\r
             }\r
         }\r
@@ -498,7 +505,7 @@ namespace HandBrakeWPF.Services.Presets
         /// </returns>\r
         public bool CheckIfPresetExists(string name)\r
         {\r
-            if (this.flatPresetList.ContainsKey(name))\r
+            if (this.flatPresetDict.ContainsKey(name))\r
             {\r
                 return true;\r
             }\r
@@ -518,7 +525,7 @@ namespace HandBrakeWPF.Services.Presets
         public bool CanUpdatePreset(string name)\r
         {\r
             Preset preset;\r
-            if (this.flatPresetList.TryGetValue(name, out preset))\r
+            if (this.flatPresetDict.TryGetValue(name, out preset))\r
             {\r
                 return !preset.IsBuildIn;\r
             }\r
@@ -532,7 +539,7 @@ namespace HandBrakeWPF.Services.Presets
         /// <param name="selectedPreset">The preset we want to select.</param>\r
         public void SetSelected(Preset selectedPreset)\r
         {\r
-            foreach (var item in this.flatPresetList.Values)\r
+            foreach (var item in this.flatPresetList)\r
             {\r
                 item.IsSelected = false;\r
             }\r
@@ -823,33 +830,12 @@ namespace HandBrakeWPF.Services.Presets
                 Dictionary<string, PresetCategory> presetCategories = new Dictionary<string, PresetCategory>();\r
                 List<HBPreset> uncategorisedPresets = new List<HBPreset>();\r
 \r
-                // Handle User Presets first.\r
-                foreach (Preset item in this.flatPresetList.Values.OrderBy(o => o.IsBuildIn))\r
-                {\r
-                    if (string.IsNullOrEmpty(item.Category))\r
-                    {\r
-                        uncategorisedPresets.Add(JsonPresetFactory.CreateHbPreset(item, HBConfigurationFactory.Create()));\r
-                    }\r
-                    else\r
-                    {\r
-                        HBPreset preset = JsonPresetFactory.CreateHbPreset(item, HBConfigurationFactory.Create());\r
-                        if (presetCategories.ContainsKey(item.Category))\r
-                        {\r
-                            presetCategories[item.Category].ChildrenArray.Add(preset);\r
-                        }\r
-                        else\r
-                        {\r
-                            presetCategories[item.Category] = new PresetCategory\r
-                                                              {\r
-                                                                  ChildrenArray = new List<HBPreset> { preset },\r
-                                                                  Folder = true,\r
-                                                                  PresetName = item.Category,\r
-                                                                  Type = item.IsBuildIn ? 0 : 1\r
-                                                              };\r
-                        }\r
-                    }\r
-                }\r
+                // Handle Built-in Presets\r
+                this.HandlePresetListsForSave(this.flatPresetList.Where(o => o.IsBuildIn).ToList(), presetCategories, uncategorisedPresets);\r
 \r
+                // Handle User Presets.\r
+                this.HandlePresetListsForSave(this.flatPresetList.Where(o => !o.IsBuildIn).ToList(), presetCategories, uncategorisedPresets);\r
+    \r
                 // Wrap the categories in a container. \r
                 JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore };\r
                 PresetTransportContainer container = new PresetTransportContainer(\r
@@ -877,6 +863,35 @@ namespace HandBrakeWPF.Services.Presets
             }\r
         }\r
 \r
+        private void HandlePresetListsForSave(List<Preset> processList, Dictionary<string, PresetCategory> presetCategories, List<HBPreset> uncategorisedPresets)\r
+        {\r
+            foreach (Preset item in processList)\r
+            {\r
+                if (string.IsNullOrEmpty(item.Category))\r
+                {\r
+                    uncategorisedPresets.Add(JsonPresetFactory.CreateHbPreset(item, HBConfigurationFactory.Create()));\r
+                }\r
+                else\r
+                {\r
+                    HBPreset preset = JsonPresetFactory.CreateHbPreset(item, HBConfigurationFactory.Create());\r
+                    if (presetCategories.ContainsKey(item.Category))\r
+                    {\r
+                        presetCategories[item.Category].ChildrenArray.Add(preset);\r
+                    }\r
+                    else\r
+                    {\r
+                        presetCategories[item.Category] = new PresetCategory\r
+                                                          {\r
+                                                              ChildrenArray = new List<HBPreset> { preset },\r
+                                                              Folder = true,\r
+                                                              PresetName = item.Category,\r
+                                                              Type = item.IsBuildIn ? 0 : 1\r
+                                                          };\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
         private Preset ConvertHbPreset(HBPreset hbPreset)\r
         {\r
             Preset preset = null;\r