void IClassifyObjectProcessor <XElement> .AfterDeserialize(XElement element) { // Some people have strange broken styles in their settings, probably added due to some bug in an earlier version of the program. Styles.RemoveWhere(style => style.Layers == null || style.Layers.Count == 0); foreach (var style in Styles) { if (style.Name == null) { style.Name = "<unknown>"; } if (style.Author == null) { style.Author = "<unknown>"; } if (style.PathTemplate == null) { style.PathTemplate = ""; } } // Added in v019 if (SavedByVersion < 19 && GameInstalls != null) { GameInstallations = GameInstalls; } #pragma warning disable 0618 // ActiveInstallation should only be used for loading/saving the setting, which is what the code below does. if (SavedByVersion < 19 && SelectedGamePath != null) { ActiveInstallation = GameInstallations.Where(gi => gi.Path.EqualsNoCase(SelectedGamePath)).FirstOrDefault() ?? GameInstallations.FirstOrDefault(); } #pragma warning restore 0618 if (SavedByVersion < 19 && SelectedStyleNameAndAuthor != null) { // This is a fairly approximate match but this way at least some users will see the right style still selected. The old property was too lossy to allow for reliable matching. ActiveStyle = Styles.FirstOrDefault(s => SelectedStyleNameAndAuthor.Contains(s.Name) && SelectedStyleNameAndAuthor.Contains(s.Author)); } GameInstalls = null; SelectedGamePath = null; SelectedStyleNameAndAuthor = null; }