From a94fddbdec411a2d6f4b157636a6c0926f1fdc50 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 11 Dec 2017 10:50:38 +0100
Subject: [PATCH] separate flags if customer report itself is valid, and
 customer report matches manufacturer report (for UI)

---
 .../UserControl/CustomerReportXMLFile.cs      | 20 +++++++++++++++++--
 .../UserControl/ManufacturerReportXMLFile.cs  |  2 +-
 HashingTool/Views/VerifyResults.xaml          |  4 ++--
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/HashingTool/ViewModel/UserControl/CustomerReportXMLFile.cs b/HashingTool/ViewModel/UserControl/CustomerReportXMLFile.cs
index a9c988df6d..5c93c318e2 100644
--- a/HashingTool/ViewModel/UserControl/CustomerReportXMLFile.cs
+++ b/HashingTool/ViewModel/UserControl/CustomerReportXMLFile.cs
@@ -14,6 +14,7 @@ namespace HashingTool.ViewModel.UserControl
 		private string _manufacturerReportDigestValueRead;
 		private bool _manufacturerReportMatchesReport;
 		private string _manufacturerReportDigestValueComputed;
+		private bool _manufacturerReportDigestValid;
 
 		public CustomerReportXMLFile(string name, Func<XmlDocument, IErrorLogger, bool?> contentCheck,
 			Action<XmlDocument, VectoXMLFile> hashValidation = null) : base(name, contentCheck, hashValidation)
@@ -98,6 +99,18 @@ namespace HashingTool.ViewModel.UserControl
 				RaisePropertyChanged("ManufacturerReportDigestValueComputed");
 			}
 		}
+		
+		public bool ManufacturerReportDigestValid
+		{
+			get { return _manufacturerReportDigestValid; }
+			set {
+				if (_manufacturerReportDigestValid == value) {
+					return;
+				}
+				_manufacturerReportDigestValid = value;
+				RaisePropertyChanged("ManufacturerReportDigestValid");
+			}
+		}
 
 		protected virtual void ManufacturerReportChanged(object sender, PropertyChangedEventArgs e)
 		{
@@ -108,8 +121,8 @@ namespace HashingTool.ViewModel.UserControl
 
 		protected override void ReportChanged(object sender, PropertyChangedEventArgs e)
 		{
+			base.ReportChanged(sender, e);
 			if (sender == _xmlFile && e.PropertyName == GeneralUpdate) {
-				ReadReportData();
 				VerifyManufacturerReport();
 			}
 		}
@@ -155,7 +168,10 @@ namespace HashingTool.ViewModel.UserControl
 			ManufacturerReportDigestValueRead = manufacturerReportDigestValueRead;
 			ManufacturerReportDigestValueComputed = manufacturerReportDigestValueComputed;
 
-			ManufacturerReportMatchesReport = digestMatch;
+			ManufacturerReportMatchesReport = FileIntegrityValid != null && FileIntegrityValid.Value && digestMatch;
+
+			ManufacturerReportDigestValid = digestMatch;
 		}
+
 	}
 }
\ No newline at end of file
diff --git a/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs b/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs
index 4ede443676..b1dcad74f1 100644
--- a/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs
+++ b/HashingTool/ViewModel/UserControl/ManufacturerReportXMLFile.cs
@@ -152,7 +152,7 @@ namespace HashingTool.ViewModel.UserControl
 				}
 			}
 
-			ManufacturerReportValid = JobDigestMatchesReport && hasComponentsFromJob && !certificationNumberMismatch.Any() && !digestMismatch.Any();
+			ManufacturerReportValid = FileIntegrityValid != null && FileIntegrityValid.Value && hasComponentsFromJob && !certificationNumberMismatch.Any() && !digestMismatch.Any();
 		}
 
 		public bool ManufacturerReportValid
diff --git a/HashingTool/Views/VerifyResults.xaml b/HashingTool/Views/VerifyResults.xaml
index e5ec6b59de..6dbecb27c9 100644
--- a/HashingTool/Views/VerifyResults.xaml
+++ b/HashingTool/Views/VerifyResults.xaml
@@ -321,7 +321,7 @@
                                 <Style TargetType="TextBox" BasedOn="{StaticResource DigestValueTextboxStyle}">
                                     <Setter Property="Foreground" Value="{StaticResource Color.ErrorRed}" />
                                     <Style.Triggers>
-                                        <DataTrigger Binding="{Binding ManufacturerReportMatchesReport}" Value="True">
+                                        <DataTrigger Binding="{Binding ManufacturerReportDigestValid}" Value="True">
                                             <Setter Property="Foreground" Value="{StaticResource Color.SuccessGreen}" />
                                         </DataTrigger>
                                     </Style.Triggers>
@@ -337,7 +337,7 @@
                                 <Style TargetType="TextBox" BasedOn="{StaticResource DigestValueTextboxStyle}">
                                     <Setter Property="Foreground" Value="{StaticResource Color.ErrorRed}" />
                                     <Style.Triggers>
-                                        <DataTrigger Binding="{Binding ManufacturerReportMatchesReport}" Value="True">
+                                        <DataTrigger Binding="{Binding ManufacturerReportDigestValid}" Value="True">
                                             <Setter Property="Foreground" Value="{StaticResource Color.SuccessGreen}" />
                                         </DataTrigger>
                                     </Style.Triggers>
-- 
GitLab