diff --git a/SabreTools.DatFiles/Formats/Listxml.cs b/SabreTools.DatFiles/Formats/Listxml.cs index e2722c4b..611b5956 100644 --- a/SabreTools.DatFiles/Formats/Listxml.cs +++ b/SabreTools.DatFiles/Formats/Listxml.cs @@ -726,6 +726,7 @@ namespace SabreTools.DatFiles.Formats case "softwarelist": datItems.Add(new DatItems.Formats.SoftwareList { + Tag = reader.GetAttribute("tag"), Name = reader.GetAttribute("name"), Status = reader.GetAttribute("status").AsSoftwareListStatus(), Filter = reader.GetAttribute("filter"), @@ -1862,6 +1863,7 @@ namespace SabreTools.DatFiles.Formats case ItemType.SoftwareList: var softwareList = datItem as DatItems.Formats.SoftwareList; xtw.WriteStartElement("softwarelist"); + xtw.WriteRequiredAttributeString("tag", softwareList.Tag); xtw.WriteRequiredAttributeString("name", softwareList.Name); xtw.WriteRequiredAttributeString("status", softwareList.Status.FromSoftwareListStatus()); xtw.WriteOptionalAttributeString("filter", softwareList.Filter); diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs index 64a659ba..80244d7a 100644 --- a/SabreTools.DatFiles/Setter.cs +++ b/SabreTools.DatFiles/Setter.cs @@ -1233,6 +1233,9 @@ namespace SabreTools.DatFiles /// SoftwareList to remove replace fields in private void SetFields(SoftwareList softwareList) { + if (DatItemMappings.Keys.Contains(DatItemField.Tag)) + softwareList.Tag = DatItemMappings[DatItemField.Tag]; + if (DatItemMappings.Keys.Contains(DatItemField.SoftwareListStatus)) softwareList.Status = DatItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus(); diff --git a/SabreTools.DatItems/Formats/SoftwareList.cs b/SabreTools.DatItems/Formats/SoftwareList.cs index 704f38dc..14c8223f 100644 --- a/SabreTools.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.DatItems/Formats/SoftwareList.cs @@ -14,6 +14,13 @@ namespace SabreTools.DatItems.Formats { #region Fields + /// + /// Tag for the software list + /// + [JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)] + [XmlElement("tag")] + public string Tag { get; set; } + /// /// Name of the item /// @@ -77,6 +84,7 @@ namespace SabreTools.DatItems.Formats Source = this.Source.Clone() as Source, Remove = this.Remove, + Tag = this.Tag, Name = this.Name, Status = this.Status, Filter = this.Filter, @@ -97,7 +105,8 @@ namespace SabreTools.DatItems.Formats SoftwareList newOther = other as SoftwareList; // If the SoftwareList information matches - return (Name == newOther.Name + return (Tag == newOther.Tag + && Name == newOther.Name && Status == newOther.Status && Filter == newOther.Filter); } diff --git a/SabreTools.Filtering/DatItemFilter.cs b/SabreTools.Filtering/DatItemFilter.cs index 8a32e6c9..3622a722 100644 --- a/SabreTools.Filtering/DatItemFilter.cs +++ b/SabreTools.Filtering/DatItemFilter.cs @@ -952,7 +952,7 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Chip chip) { - // DatItem_Tag + // Filter on tag if (!PassStringFilter(Tag, chip.Tag)) return false; @@ -2007,6 +2007,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(SoftwareList softwareList) { + // Filter on tag + if (!PassStringFilter(Tag, softwareList.Tag)) + return false; + // Filter on status if (SoftwareListStatus.MatchesPositive(Core.SoftwareListStatus.NULL, softwareList.Status) == false) return false; diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs index a9e83e0d..0da3f014 100644 --- a/SabreTools.Filtering/DatItemRemover.cs +++ b/SabreTools.Filtering/DatItemRemover.cs @@ -1069,6 +1069,9 @@ namespace SabreTools.Filtering /// SoftwareList to remove fields from private void RemoveFields(SoftwareList softwareList) { + if (DatItemFields.Contains(DatItemField.Tag)) + softwareList.Tag = null; + if (DatItemFields.Contains(DatItemField.SoftwareListStatus)) softwareList.Status = SoftwareListStatus.NULL; diff --git a/SabreTools.Filtering/Replacer.cs b/SabreTools.Filtering/Replacer.cs index f26741ac..14f49812 100644 --- a/SabreTools.Filtering/Replacer.cs +++ b/SabreTools.Filtering/Replacer.cs @@ -1060,6 +1060,9 @@ namespace SabreTools.Filtering /// List of fields representing what should be updated private static void ReplaceFields(SoftwareList softwareList, SoftwareList newItem, List datItemFields) { + if (datItemFields.Contains(DatItemField.Tag)) + softwareList.Tag = newItem.Tag; + if (datItemFields.Contains(DatItemField.SoftwareListStatus)) softwareList.Status = newItem.Status;