Update SoftwareList with new fields

This commit is contained in:
Matt Nadareski
2022-11-03 11:44:29 -07:00
parent b0dba93134
commit 7e3c04e8a2
6 changed files with 26 additions and 2 deletions

View File

@@ -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);

View File

@@ -1233,6 +1233,9 @@ namespace SabreTools.DatFiles
/// <param name="softwareList">SoftwareList to remove replace fields in</param>
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();

View File

@@ -14,6 +14,13 @@ namespace SabreTools.DatItems.Formats
{
#region Fields
/// <summary>
/// Tag for the software list
/// </summary>
[JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("tag")]
public string Tag { get; set; }
/// <summary>
/// Name of the item
/// </summary>
@@ -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);
}

View File

@@ -952,7 +952,7 @@ namespace SabreTools.Filtering
/// <returns>True if the item passed the filter, false otherwise</returns>
private bool PassesFilters(Chip chip)
{
// DatItem_Tag
// Filter on tag
if (!PassStringFilter(Tag, chip.Tag))
return false;
@@ -2007,6 +2007,10 @@ namespace SabreTools.Filtering
/// <returns>True if the item passed the filter, false otherwise</returns>
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;

View File

@@ -1069,6 +1069,9 @@ namespace SabreTools.Filtering
/// <param name="softwareList">SoftwareList to remove fields from</param>
private void RemoveFields(SoftwareList softwareList)
{
if (DatItemFields.Contains(DatItemField.Tag))
softwareList.Tag = null;
if (DatItemFields.Contains(DatItemField.SoftwareListStatus))
softwareList.Status = SoftwareListStatus.NULL;

View File

@@ -1060,6 +1060,9 @@ namespace SabreTools.Filtering
/// <param name="datItemFields">List of fields representing what should be updated</param>
private static void ReplaceFields(SoftwareList softwareList, SoftwareList newItem, List<DatItemField> datItemFields)
{
if (datItemFields.Contains(DatItemField.Tag))
softwareList.Tag = newItem.Tag;
if (datItemFields.Contains(DatItemField.SoftwareListStatus))
softwareList.Status = newItem.Status;