Browse Source

Merge branch 'dev' of http://git.kdan.cc:8865/Windows/PDFOffice_Windows_exe into dev

ZhouJieSheng 1 year ago
parent
commit
ee87fb28d8

+ 23 - 0
PDF Office/EventAggregators/AddBookMarkEvent.cs

@@ -0,0 +1,23 @@
+using Prism.Events;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PDF_Master.EventAggregators
+{
+    internal class DelBookMarkEvent : PubSubEvent<BookMarkArgs>
+    {
+    }
+
+    internal class AddBookMarkEvent : PubSubEvent<BookMarkArgs>
+    {
+    }
+
+    internal class BookMarkArgs
+    {
+        public string Unicode { get; set; }
+        public bool IsReadMode { get; set; }
+    }
+}

+ 1 - 0
PDF Office/PDF Master.csproj

@@ -378,6 +378,7 @@
     <Compile Include="DataConvert\TextAlignToCheckedConverter.cs" />
     <Compile Include="DataConvert\UnVisivleConvert.cs" />
     <Compile Include="DataConvert\WidthConvert.cs" />
+    <Compile Include="EventAggregators\AddBookMarkEvent.cs" />
     <Compile Include="EventAggregators\CleanSelectAllEvent.cs" />
     <Compile Include="EventAggregators\EditToolsEvent.cs" />
     <Compile Include="EventAggregators\FillAndSignEvent.cs" />

+ 45 - 2
PDF Office/ViewModels/BOTA/BookmarkContentViewModel.cs

@@ -160,7 +160,50 @@ namespace PDF_Master.ViewModels.BOTA
             KeyDownCommand = new DelegateCommand<object>(KeyDownEvent);
             InitString();
 
-            events.GetEvent<PageEditNotifyEvent>().Subscribe(OnNotifyEvent,e=>e.Unicode==unicode&&e.Type== NotifyType.PageCountChanged);
+            events.GetEvent<DelBookMarkEvent>().Subscribe(DelBook, e => e.Unicode == unicode && e.IsReadMode == true);
+            events.GetEvent<AddBookMarkEvent>().Subscribe(AddBook, e => e.Unicode == unicode && e.IsReadMode == true);
+            events.GetEvent<PageEditNotifyEvent>().Subscribe(OnNotifyEvent, e => e.Unicode == unicode && e.Type == NotifyType.PageCountChanged);
+        }
+
+        private void DelBook(BookMarkArgs obj)
+        {
+            if (PDFViewer.Document.GetBookmarkList().Count == 0)
+            {
+                return;
+            }
+            CPDFBookmark list = PDFViewer.Document.GetBookmarkList().FirstOrDefault(q => q.PageIndex == PDFViewer.CurrentIndex);
+            if (list != null)
+            {
+                bool flag = PDFViewer.Document.RemoveBookmark(PDFViewer.CurrentIndex);
+                if (flag)
+                {
+                    Bookmarklist.Remove(list);
+                }
+                isAddBookMark = true;
+                PDFViewer.UndoManager.CanSave = true;
+            }
+        }
+
+        private void AddBook(BookMarkArgs args)
+        {
+            string info = App.MainPageLoader.GetString("Bookmark_PageN");
+            int index = PDFViewer.CurrentIndex;
+            string mark = string.Format(info, (index + 1).ToString());
+            CPDFBookmark bookmark = new CPDFBookmark();
+            bookmark.Title = mark;
+            bookmark.Date = DateTime.Now.ToString(@"yyyyMMddHHmmsszzz\'").Replace(':', '\'') + "\n";
+            bookmark.PageIndex = PDFViewer.CurrentIndex;
+            AddCPDFBookmark = bookmark;
+            if (PDFViewer.Document.AddBookmark(bookmark))
+            {
+                PDFViewer.UndoManager.CanSave = true;
+
+                Bookmarklist.Add(bookmark);
+
+                Bookmarklist = new ObservableCollection<CPDFBookmark>(Bookmarklist.OrderBy(item => item.PageIndex));
+                Bookmarklist.CollectionChanged += Bookmarklist_CollectionChanged;
+                isAddBookMark = false;
+            }
         }
 
         /// <summary>
@@ -232,7 +275,7 @@ namespace PDF_Master.ViewModels.BOTA
             if (bookmark != null)
             {
                 AlertsMessage alertsMessage = new AlertsMessage();
-                alertsMessage.ShowDialog("",App.MainPageLoader.GetString("Outline_ChangeDest_Tips"), App.ServiceLoader.GetString("Text_cancel"), App.ServiceLoader.GetString("Text_ok"));
+                alertsMessage.ShowDialog("", App.MainPageLoader.GetString("Outline_ChangeDest_Tips"), App.ServiceLoader.GetString("Text_cancel"), App.ServiceLoader.GetString("Text_ok"));
                 if (alertsMessage.result == ContentResult.Ok)
                 {
                     if (RemoveBookMark(bookmark))

+ 5 - 2
PDF Office/ViewModels/PropertyPanel/ViewModular/PageContentViewModel.cs

@@ -254,8 +254,11 @@ namespace PDF_Master.ViewModels.PropertyPanel.ViewModular
                     pagenum = 1;
                 }
                 else if (pagenum > PDFViewer.Document.PageCount)
-                {
-                    pagenum = PDFViewer.Document.PageCount;
+                {
+                    //pagenum = (PDFViewer.CurrentIndex + 1);
+                    CurrentPage = PDFViewer.Document.PageCount;
+                    textBox.Text = "";
+                    return;
                 }
 
                 PDFViewer.GoToPage(pagenum - 1);

+ 43 - 32
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -888,22 +888,29 @@ namespace PDF_Master.ViewModels.Tools
 
         private void DelBookMark_Click(object sender, RoutedEventArgs e)
         {
-            
             CheckBOTAState(out BOTAContentViewModel bOTAContentVM, out BOTAContent bOTA);
-            if (bOTAContentVM != null && bOTA != null)
-            {
-                BookmarkContentViewModel bookmarkContentViewModel = GetBookmarkContentViewModel(bOTAContentVM, out BookmarkContent bookmark);
-
-                int index = PDFViewer.CurrentIndex;
-                //检测是否已存在相同数据
-                if (PDFViewer.Document == null) return;
-                if (PDFViewer.Document.GetBookmarkList().Count <= 0) return;
-                CPDFBookmark list = PDFViewer.Document.GetBookmarkList().FirstOrDefault(q => q.PageIndex == index);
-                if (bookmarkContentViewModel != null && bookmark != null && bOTA != null && list != null)
-                {
-                    bookmarkContentViewModel.DeleteCommand.Execute(list);
-                    isAddBookMark = bookmarkContentViewModel.isAddBookMark;
+            if (viewContentViewModel.mainViewModel.IsBookMode == false)
+            {
+                
+                if (bOTAContentVM != null && bOTA != null)
+                {
+                    BookmarkContentViewModel bookmarkContentViewModel = GetBookmarkContentViewModel(bOTAContentVM, out BookmarkContent bookmark);
+
+                    int index = PDFViewer.CurrentIndex;
+                    //检测是否已存在相同数据
+                    if (PDFViewer.Document == null) return;
+                    if (PDFViewer.Document.GetBookmarkList().Count <= 0) return;
+                    CPDFBookmark list = PDFViewer.Document.GetBookmarkList().FirstOrDefault(q => q.PageIndex == index);
+                    if (bookmarkContentViewModel != null && bookmark != null && bOTA != null && list != null)
+                    {
+                        bookmarkContentViewModel.DeleteCommand.Execute(list);
+                        isAddBookMark = bookmarkContentViewModel.isAddBookMark;
+                    }
                 }
+            }
+            else
+            {
+                this.events.GetEvent<DelBookMarkEvent>().Publish(new BookMarkArgs() { Unicode = App.mainWindowViewModel.SelectedItem.Unicode, IsReadMode = true });
             }
         }
 
@@ -915,30 +922,34 @@ namespace PDF_Master.ViewModels.Tools
             }
             bool isBook = IsBOTATabItemShow(out bOTAContentVM, out bOTA, "TabItemBookMark");
             if (isBook == false)
-            {
-                if (viewContentViewModel.mainViewModel.IsBookMode==false)
-                {
-                    bOTA.TabItemBookMark.IsSelected = true;
-                }
-                
+            {
+                bOTA.TabItemBookMark.IsSelected = true;
             }
         }
 
         private void AddBookMark_Click()
         {
             CheckBOTAState(out BOTAContentViewModel bOTAContentVM, out BOTAContent bOTA);
-            //if (viewContentViewModel.mainViewModel.IsBookMode)
-            //{
-            //    this.events.GetEvent<ReadModeBOTAShowEvent>().Publish(new ReadModeBOTAShowArgs() { Unicode = App.mainWindowViewModel.SelectedItem.Unicode, IsBOTAShow = true });
-            //}
-            if (bOTAContentVM != null && bOTA != null)
-            {
-                AddBookMark(bOTAContentVM, bOTA);
-            }
-            //if (viewContentViewModel.mainViewModel.IsBookMode)
-            //{
-            //    AddBookMark(bOTAContentVM, bOTA);
-            //}
+            if (viewContentViewModel.mainViewModel.IsBookMode == false)
+            {
+                
+                //if (viewContentViewModel.mainViewModel.IsBookMode)
+                //{
+                //    this.events.GetEvent<ReadModeBOTAShowEvent>().Publish(new ReadModeBOTAShowArgs() { Unicode = App.mainWindowViewModel.SelectedItem.Unicode, IsBOTAShow = true });
+                //}
+                if (bOTAContentVM != null && bOTA != null)
+                {
+                    AddBookMark(bOTAContentVM, bOTA);
+                }
+                //if (viewContentViewModel.mainViewModel.IsBookMode)
+                //{
+                //    AddBookMark(bOTAContentVM, bOTA);
+                //}
+            }
+            else
+            {
+                this.events.GetEvent<AddBookMarkEvent>().Publish(new BookMarkArgs() { Unicode = App.mainWindowViewModel.SelectedItem.Unicode, IsReadMode = true });
+            }
         }
 
         private void AddBookMark(BOTAContentViewModel bOTAContentVM, BOTAContent bOTA)

+ 26 - 22
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -46,6 +46,7 @@ using System.Windows.Media;
 using Color = System.Windows.Media.Color;
 using PDFSettings;
 using PDF_Master.Views;
+using System.Windows.Documents;
 
 namespace PDF_Master.ViewModels
 {
@@ -718,6 +719,8 @@ namespace PDF_Master.ViewModels
             }
         }
 
+        private bool botaState = false;
+
         #endregion 属性、变量
 
         #region 命令
@@ -1041,6 +1044,27 @@ namespace PDF_Master.ViewModels
             FromClick = false;
         }
 
+        /// <summary>
+        /// 复制、剪切操作前校验是否有文档操作权限,没有则弹出权限解密弹窗
+        /// </summary>
+        /// <returns></returns>
+        public bool CheckPermissionBeforeOption()
+        {
+            VerifyPasswordResult verifyResult = SecurityHelper.VerifyPasswordForSelectedPermissions(PDFViewer.Document, EnumPermissionsSet.StatusAllowsCopying, dialogs);
+            if (verifyResult.IsDiscryptied)
+            {
+                if (verifyResult.Password != null)
+                {
+                    PDFViewer.Document.CheckOwnerPassword(verifyResult.Password);
+                }
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+
         /// <summary>
         /// 开始自动保存
         /// </summary>
@@ -2044,6 +2068,7 @@ namespace PDF_Master.ViewModels
 
             #endregion 旧版本
 
+            botaState = OpenBOTA;
             OpenBOTA = false;
             this.events.GetEvent<ReadModeEvent>().Publish(new ReadModeArgs() { Unicode = unicode, IsReadMode = true });
 
@@ -2152,7 +2177,7 @@ namespace PDF_Master.ViewModels
             }
 
             IsLoading = Visibility.Collapsed;
-
+            OpenBOTA = botaState;
             PDFViewer.DisableClearSelectAnnot(false);
             PDFViewer.ClearSelectAnnots();
             PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
@@ -2855,27 +2880,6 @@ namespace PDF_Master.ViewModels
             return result;
         }
 
-        /// <summary>
-        /// 复制、剪切操作前校验是否有文档操作权限,没有则弹出权限解密弹窗
-        /// </summary>
-        /// <returns></returns>
-        public bool CheckPermissionBeforeOption()
-        {
-            VerifyPasswordResult verifyResult = SecurityHelper.VerifyPasswordForSelectedPermissions(PDFViewer.Document, EnumPermissionsSet.StatusAllowsCopying, dialogs);
-            if (verifyResult.IsDiscryptied)
-            {
-                if (verifyResult.Password != null)
-                {
-                    PDFViewer.Document.CheckOwnerPassword(verifyResult.Password);
-                }
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-        }
-
         /// <summary>
         /// 另存为Flatten
         /// </summary>

+ 4 - 0
PDF Office/Views/BOTA/BookmarkContent.xaml.cs

@@ -163,6 +163,10 @@ namespace PDF_Master.Views.BOTA
         /// <param name="textBlock"></param>
         private void SetSelectedStatus(ListBoxItem listBoxItem, TextBox textBox, TextBlock textBlock)
         {
+            if(listBoxItem == null || textBox==null|| textBlock == null)
+            {
+                return;
+            }
             listBoxItem.IsSelected = true;
             listBoxItem.Focus();
             textBlock.Visibility = Visibility.Collapsed;