Browse Source

右键菜单-添加书签

OYXH\oyxh 1 year ago
parent
commit
d8d0412b32

+ 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))

+ 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)

+ 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;