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
{\r
get\r
{\r
- return this.flatPresetList.Values.FirstOrDefault(p => p.IsDefault);\r
+ return this.flatPresetList.FirstOrDefault(p => p.IsDefault);\r
}\r
}\r
\r
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
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
{\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
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
}\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
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
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
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
\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
/// </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
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
/// <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
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
}\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