Explorar o código

签名-签名功能存储收尾

zhuyi %!s(int64=2) %!d(string=hai) anos
pai
achega
adbc27c20e

+ 3 - 1
PDF Office/Model/AnnotPanel/Signature.cs

@@ -5,6 +5,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Ink;
+using System.Windows.Media;
 
 namespace PDF_Office.Model.AnnotPanel
 {
@@ -37,6 +38,7 @@ namespace PDF_Office.Model.AnnotPanel
             }
         }
         public SignatureType Type { get; set; }
-        public DrawingAttributes DrawingAttributesObject { get; set; }
+        public double inkThickness { get; set; }
+        public Color inkColor { get; set; }
     }
 }

+ 12 - 14
PDF Office/Properties/Settings.Designer.cs

@@ -22,20 +22,7 @@ namespace PDF_Office.Properties {
                 return defaultInstance;
             }
         }
-        [global::System.Configuration.UserScopedSettingAttribute()]
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        [global::System.Configuration.DefaultSettingValueAttribute("10")]
-        public double AnnotateFontSize
-        {
-            get
-            {
-                return ((double)(this["AnnotateFontSize"]));
-            }
-            set
-            {
-                this["AnnotateFontSize"] = value;
-            }
-        }
+        
         [global::System.Configuration.UserScopedSettingAttribute()]
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         public global::PDFSettings.Settings.RecentOpenFiles RecentOpenFiles {
@@ -147,5 +134,16 @@ namespace PDF_Office.Properties {
                 this["CustomStampList"] = value;
             }
         }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public global::PDFSettings.SignatureList SignatureList {
+            get {
+                return ((global::PDFSettings.SignatureList)(this["SignatureList"]));
+            }
+            set {
+                this["SignatureList"] = value;
+            }
+        }
     }
 }

+ 3 - 0
PDF Office/Properties/Settings.settings

@@ -32,5 +32,8 @@
     <Setting Name="CustomStampList" Type="PDFSettings.CustomStampList" Scope="User">
       <Value Profile="(Default)" />
     </Setting>
+    <Setting Name="SignatureList" Type="PDFSettings.SignatureList" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
   </Settings>
 </SettingsFile>

+ 50 - 4
PDF Office/ViewModels/PropertyPanel/AnnotPanel/SignatureAnnotPropertyViewModel.cs

@@ -4,6 +4,7 @@ using ComPDFKitViewer.PdfViewer;
 using Microsoft.Win32;
 using PDF_Office.Model;
 using PDF_Office.Model.AnnotPanel;
+using PDF_Office.Properties;
 using Prism.Commands;
 using Prism.Mvvm;
 using Prism.Regions;
@@ -33,6 +34,28 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
             dialogs = dialogService;
             ShowDialogCommand = new DelegateCommand(ShowDialog);
             SignatureList = new ObservableCollection<Signature>();
+            LoadSettings();
+        }
+
+        /// <summary>
+        /// 加载缓存的签名
+        /// </summary>
+        private void LoadSettings()
+        {
+            PDFSettings.SignatureList items = Settings.Default.SignatureList;
+            if (items != null)
+            {
+                for (int i = 0; i < items.Count; i++)
+                {
+                    Signature customStamp = new Signature();
+                    customStamp.SourcePath = items[i].SourcePath;
+                    customStamp.DrawingPath = items[i].DrawingPath;
+                    customStamp.inkThickness= items[i].inkThickness;
+                    customStamp.inkColor= items[i].inkColor;
+                    customStamp.Type = (SignatureType)items[i].Type;
+                    SignatureList.Add(customStamp);
+                }
+            }
         }
         public void SetSignature(Signature signature)
         {
@@ -52,7 +75,7 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 case SignatureType.Drawing:
                     {
                         StampAnnotArgs stampArgs = new StampAnnotArgs();
-                        stampArgs.SetInkData(GetPoints(signature.DrawingPath), signature.DrawingAttributesObject.Width, signature.DrawingAttributesObject.Color);
+                        stampArgs.SetInkData(GetPoints(signature.DrawingPath), signature.inkThickness, signature.inkColor);
                         PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
                         PDFViewer.SetToolParam(stampArgs);
                     }
@@ -129,8 +152,25 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
             }
             Signature.DrawingPath = viewModel.DrawingSaveToPath;
             Signature.Type = (SignatureType)viewModel.TabItemIndex;
-            Signature.DrawingAttributesObject = viewModel.DrawingAttributeObject;
+            Signature.inkThickness = viewModel.DrawingAttributeObject.Width;
+            Signature.inkColor = viewModel.DrawingAttributeObject.Color;
             SignatureList.Add(Signature);
+
+            //缓存数据
+            PDFSettings.SignatureList stamps = Settings.Default.SignatureList;
+            if (stamps == null)
+            {
+                stamps = Settings.Default.SignatureList = new PDFSettings.SignatureList();
+            }
+
+            PDFSettings.SignatureItem signature = new PDFSettings.SignatureItem();
+            signature.DrawingPath = Signature.DrawingPath;
+            signature.SourcePath = Signature.SourcePath;
+            signature.inkThickness = Signature.inkThickness;
+            signature.inkColor = Signature.inkColor;
+            signature.Type = (PDFSettings.SignatureType)Signature.Type;
+            stamps.Add(signature);
+            Settings.Default.Save();
         }
 
         /// <summary>
@@ -186,9 +226,12 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
             if (!string.IsNullOrEmpty(Item.DrawingPath))
             {
                 App.CachePath.AddToDeleteFiles(Item.DrawingPath);
-
             }
             SignatureList.RemoveAt(index);
+
+            PDFSettings.SignatureList signature = Settings.Default.SignatureList;
+            signature.RemoveAt(index);
+            Settings.Default.Save();
         }
         public void DeleteAll()
         {
@@ -199,10 +242,13 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 if (!string.IsNullOrEmpty(item.DrawingPath))
                 {
                     App.CachePath.AddToDeleteFiles(item.DrawingPath);
-
                 }
             }
             SignatureList.Clear();
+
+            PDFSettings.SignatureList signature = Settings.Default.SignatureList;
+            signature.Clear();
+            Settings.Default.Save();
         }
         public bool IsNavigationTarget(NavigationContext navigationContext)
         {

+ 0 - 1
PDF Office/ViewModels/PropertyPanel/AnnotPanel/StampAnnotPropertyViewModel.cs

@@ -585,7 +585,6 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 stamps = Settings.Default.CustomStampList = new PDFSettings.CustomStampList();
             }
             PDFSettings.StampAnnote annote = new PDFSettings.StampAnnote();
-            Stamp customStamp = new Stamp();
             annote.Author = stamp.Author;
             annote.StampText = stamp.StampText;
             annote.StampTextDate = stamp.StampTextDate;

+ 14 - 5
PDFSettings/SignatureList.cs

@@ -3,18 +3,27 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Media;
 
 namespace PDFSettings
 {
-    public class SignatureList:List<ImageItem>
+    public enum SignatureType
+    {
+        TextType,
+        Drawing,
+        ImageType
+    }
+    public class SignatureList:List<SignatureItem>
     {
 
     }
 
-    public class ImageItem
+    public class SignatureItem
     {
-        public string Filesdata { get; set; }
-        public string ImageFilePath { get; set; }
-        public bool IsImage { get; set; }
+        public string SourcePath { get; set; }
+        public string DrawingPath { get; set; }
+        public SignatureType Type { get; set; }
+        public double inkThickness { get; set; }
+        public Color inkColor { get; set; }
     }
 }