Browse Source

compdfkit(win) - SignatureStatusBarControl UI

weixiangjie 1 year ago
parent
commit
35cfa277a9

+ 4 - 0
Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj

@@ -227,6 +227,9 @@
     <Compile Include="DigitalSignature\FillDigitalSignatureControl\FillDigitalSignatureControl.xaml.cs">
       <DependentUpon>FillDigitalSignatureControl.xaml</DependentUpon>
     </Compile>
+    <Compile Include="DigitalSignature\SignatureStatusBarControl\SignatureStatusBarControl.xaml.cs">
+      <DependentUpon>SignatureStatusBarControl.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Edit\ContentEditControl\ContentEditControl.xaml.cs">
       <DependentUpon>ContentEditControl.xaml</DependentUpon>
     </Compile>
@@ -664,6 +667,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="DigitalSignature\SignatureStatusBarControl\SignatureStatusBarControl.xaml" />
     <Page Include="Edit\ContentEditControl\ContentEditControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 7 - 5
Demo/Examples/Compdfkit_Tools/DigitalSignature/DigitalSignatureControl/DigitalSignatureControl.xaml

@@ -30,6 +30,7 @@
     </UserControl.CommandBindings>
     <Grid x:Name="BodyGrid">
         <Grid.RowDefinitions>
+            <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="*"></RowDefinition>
         </Grid.RowDefinitions>
@@ -99,8 +100,9 @@
                 </StackPanel>
             </StackPanel>
         </Border>
-        <Border Grid.Row="1" Visibility="Collapsed" Name="BotaContainer"></Border>
-        <GridSplitter Grid.Row="1" Name="Splitter" Grid.Column="1" Width="15" ResizeBehavior="PreviousAndNext" Visibility="Collapsed">
+        <Border Grid.Column="2" Grid.Row="1" x:Name="SignatureBorder"></Border>
+        <Border Grid.Row="2" Visibility="Collapsed" Name="BotaContainer"></Border>
+        <GridSplitter Grid.Row="2" Name="Splitter" Grid.Column="1" Width="15" ResizeBehavior="PreviousAndNext" Visibility="Collapsed">
             <GridSplitter.Template>
                 <ControlTemplate TargetType="{x:Type GridSplitter}">
                     <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
@@ -115,8 +117,8 @@
                 </ControlTemplate>
             </GridSplitter.Template>
         </GridSplitter>
-        <Border x:Name="PDFGrid" Background="#CECECE" Grid.Row="1" Grid.Column="2"></Border>
-        <Border x:Name="PropertyContainer" Grid.Column="3" Grid.Row="1" Visibility="Collapsed"></Border>
-        <cpdfcommon:PageNumberControl x:Name="FloatPageTool" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
+        <Border x:Name="PDFGrid" Background="#CECECE" Grid.Row="2" Grid.Column="2"></Border>
+        <Border x:Name="PropertyContainer" Grid.Column="3" Grid.Row="2" Visibility="Collapsed"></Border>
+        <cpdfcommon:PageNumberControl x:Name="FloatPageTool" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
     </Grid>
 </UserControl>

+ 5 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/DigitalSignatureControl/DigitalSignatureControl.xaml.cs

@@ -18,6 +18,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using Compdfkit_Tools.DigitalSignature.SignatureStatusBarControl;
 
 namespace Compdfkit_Tools.PDFControl
 { 
@@ -25,6 +26,7 @@ namespace Compdfkit_Tools.PDFControl
     {
         private bool isFirstLoad = true;
         public PDFViewControl PDFViewControl = new PDFViewControl();
+        public SignatureStatusBarControl SignatureStatusBarControl = new SignatureStatusBarControl();
         private bool _isActive = false;
         public event EventHandler<bool> OnCanSaveChanged;
 
@@ -105,7 +107,7 @@ namespace Compdfkit_Tools.PDFControl
             DigitalSignatureBarControl.DigitalSignatureActionChanged += DigitalSignatureBarControl_DigitalSignatureActionChanged;
 
             PDFViewControl.PDFView.WidgetClickHandler -= PDFView_WidgetClickHandler;
-            PDFViewControl.PDFView.WidgetClickHandler += PDFView_WidgetClickHandler; ;
+            PDFViewControl.PDFView.WidgetClickHandler += PDFView_WidgetClickHandler;
 
         }
 
@@ -161,6 +163,8 @@ namespace Compdfkit_Tools.PDFControl
             PDFViewControl.PDFView.UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
             PDFViewControl.PDFView.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
             PDFViewControl.PDFView.SetFormFieldHighlight(true);
+            SignatureBorder.Child = SignatureStatusBarControl;
+            SignatureStatusBarControl.Status = SignatureStatusBarControl.SignatureStatus.Invalid;
         }
 
         /// <summary>

File diff suppressed because it is too large
+ 48 - 0
Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml


+ 91 - 0
Demo/Examples/Compdfkit_Tools/DigitalSignature/SignatureStatusBarControl/SignatureStatusBarControl.xaml.cs

@@ -0,0 +1,91 @@
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace Compdfkit_Tools.DigitalSignature.SignatureStatusBarControl
+{
+    public partial class SignatureStatusBarControl : UserControl, INotifyPropertyChanged
+    {
+        public enum SignatureStatus
+        {
+            None,
+            Valid,
+            Invalid,
+            Unknown
+        }
+
+        private string _messageString;
+        public string MessageString
+        {
+            get => _messageString;
+            set => UpdateProper(ref _messageString, value);
+        }
+        private string validString = "The signature is valid and the document has not been tampered with";
+        private string invalidString = "At least one signature is invalid";
+        private string unknownString = "There's something wrong with at least one of the signatures";
+        
+        private SignatureStatus _status;
+        public SignatureStatus Status
+        {
+            get => _status;
+            set
+            {
+                _status = value;
+                SetStatus(_status);
+            }
+        }
+
+        public SignatureStatusBarControl(SignatureStatus status = SignatureStatus.None)
+        {
+            InitializeComponent();
+            SetStatus(status);
+            DataContext = this;
+        }
+        
+        private void SetStatus(SignatureStatus status)
+        {
+            ValidBorder.Visibility = Visibility.Collapsed;
+            InvalidBorder.Visibility = Visibility.Collapsed;
+            UnknownBorder.Visibility = Visibility.Collapsed;
+
+            switch (status)
+            {
+                case SignatureStatus.None:
+                    MessageString = "";
+                    break;
+                case SignatureStatus.Valid:
+                    ValidBorder.Visibility = Visibility.Visible;
+                    MessageString = validString;
+                    break;
+                case SignatureStatus.Invalid:
+                    InvalidBorder.Visibility = Visibility.Visible;
+                    MessageString = invalidString;
+                    break;
+                case SignatureStatus.Unknown:
+                    UnknownBorder.Visibility = Visibility.Visible;
+                    MessageString = unknownString;
+                    break;
+            }
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        protected void UpdateProper<T>(ref T properValue,
+            T newValue,
+            [CallerMemberName] string properName = "")
+        {
+            if (object.Equals(properValue, newValue))
+                return;
+
+            properValue = newValue;
+            OnPropertyChanged(properName);
+        }
+
+        protected void OnPropertyChanged([CallerMemberName] string propertyName = "") =>
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+        
+        
+    }
+}