Browse Source

页面编辑 -bug 18435、18434

OYXH\oyxh 1 year ago
parent
commit
b9a34cd416

+ 26 - 0
PDF Office/EventAggregators/PageEditSelectedItemEvent.cs

@@ -0,0 +1,26 @@
+using Prism.Events;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PDF_Master.EventAggregators
+{
+    public class PageEditSelectedItemEvent : PubSubEvent<PageEditSelectedItemEventArgs>
+    {
+    }
+
+    public class PageEditSelectedItemEventArgs
+    {
+        /// <summary>
+        /// 避免触发其他页签的识别码
+        /// </summary>
+        public string Unicode { get; set; }
+
+        /// <summary>
+        /// 选中项index
+        /// </summary>
+        public int SelectedItemIndex { get; set; }
+    }
+}

+ 1 - 0
PDF Office/PDF Master.csproj

@@ -385,6 +385,7 @@
     <Compile Include="EventAggregators\RedactionCommandEvent.cs" />
     <Compile Include="EventAggregators\RefreshAnnotationEvent.cs" />
     <Compile Include="EventAggregators\RefreshAnnotEvent.cs" />
+    <Compile Include="EventAggregators\PageEditSelectedItemEvent.cs" />
     <Compile Include="EventAggregators\ScanEvent.cs" />
     <Compile Include="EventAggregators\SendPrintInfoEvent.cs" />
     <Compile Include="EventAggregators\ShowTipEvent.cs" />

+ 6 - 6
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -31,8 +31,7 @@ using System.Text.RegularExpressions;
 using static PDF_Master.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel;
 using PDF_Master.Model.Dialog.ToolsDialogs.SaftyDialogs;
 using PDF_Master.Properties;
-using PDF_Master.Views.PageEdit;
-
+
 namespace PDF_Master.ViewModels.PageEdit
 {
     public class PageEditContentViewModel : BindableBase, INavigationAware
@@ -3173,10 +3172,11 @@ namespace PDF_Master.ViewModels.PageEdit
 
         private void PDFViewer_InfoChanged(object sender, KeyValuePair<string, object> e)
         {
-            if (e.Key == "PageNum" && !viewContentViewModel.isInPageEdit)
-            {
-                NotifyUIToRefresh(new List<int> { (e.Value as ComPDFKitViewer.RenderData).PageIndex });
-            }
+            //缩略图 复制粘贴后会选择第一项的问题,先注释
+            //if (e.Key == "PageNum" && !viewContentViewModel.isInPageEdit)
+            //{
+            //    NotifyUIToRefresh(new List<int> { (e.Value as ComPDFKitViewer.RenderData).PageIndex });
+            //}
         }
 
         #endregion Navigate

+ 34 - 1
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -52,6 +52,8 @@ using System.Windows.Documents;
 using ComPDFKit.PDFPage;
 using ComPDFKitViewer;
 using SplitMode = PDF_Master.EventAggregators.SplitMode;
+using PDF_Master.ViewModels.PageEdit;
+using System.Windows.Annotations;
 
 namespace PDF_Master.ViewModels
 {
@@ -227,6 +229,7 @@ namespace PDF_Master.ViewModels
         /// 显示 隐藏注释
         /// </summary>
         public bool IsHiddenAnnot = false;
+
         public bool IsMultiSelected { get; set; } = false;
 
         public OpenFileInfo OpenFileInfo = null;
@@ -2018,6 +2021,29 @@ namespace PDF_Master.ViewModels
                 case "TabItemForm":
                 case "TabItemFill":
                     ToolsBarContentVisible = Visibility.Visible;
+                    //当退出页面编辑后
+                    //缩略图选中页面,要和当前显示的页面,一致
+                    if (PDFViewer != null)
+                    {
+                        events.GetEvent<PageEditSelectedItemEvent>().Publish(new PageEditSelectedItemEventArgs() { Unicode = unicode, SelectedItemIndex = PDFViewer.CurrentIndex });
+                    }
+
+                    #region part1
+
+                    //bool isTabItemThumbnail = IsBOTATabItemShow(out BOTAContentViewModel bOTAContentViewModel, out BOTAContent bOTAContent, "TabItemThumbnail");
+                    //if (isTabItemThumbnail)
+                    //{
+                    //    Views.PageEdit.PageEditContent pageEditContent = null;
+                    //    PageEditContentViewModel viewModel = GetPageEditContentVM(bOTAContentViewModel, out pageEditContent);
+                    //    if (viewModel != null)
+                    //    {
+                    //        viewModel.ListSelectedIndex = PDFViewer.CurrentIndex;
+                    //        pageEditContent.ListPageEdit.ScrollIntoView(pageEditContent.ListPageEdit.SelectedItem);
+                    //    }
+                    //}
+
+                    #endregion part1
+
                     break;
 
                 case "TabItemScan":
@@ -2031,6 +2057,13 @@ namespace PDF_Master.ViewModels
 
                 case "TabItemConvert":
                     ToolsBarContentVisible = Visibility.Visible;
+
+                    //当退出页面编辑后
+                    //缩略图选中页面,要和当前显示的页面,一致
+                    if (PDFViewer != null)
+                    {
+                        events.GetEvent<PageEditSelectedItemEvent>().Publish(new PageEditSelectedItemEventArgs() { Unicode = unicode, SelectedItemIndex = PDFViewer.CurrentIndex });
+                    }
                     break;
 
                 case "TabItemPageEdit":
@@ -2721,7 +2754,7 @@ namespace PDF_Master.ViewModels
             try
             {
                 //删掉Settings.Default.UserDate.isInFreeUseTime == false,没有试用期策略了
-                if ((!App.IsLogin || Settings.Default.UserDate.subscribestatus != 1)&&App.IsUsedVIP==true)
+                if ((!App.IsLogin || Settings.Default.UserDate.subscribestatus != 1) && App.IsUsedVIP == true)
                 {
                     DialogParameters value = new DialogParameters();
                     value.Add(ParameterNames.ViewContentViewModel, this);

+ 24 - 0
PDF Office/Views/PageEdit/PageEditContent.xaml.cs

@@ -128,6 +128,19 @@ namespace PDF_Master.Views.PageEdit
             //订阅页面刷新事件
             eventor.GetEvent<PageEditNotifyEvent>().Subscribe(OneNotifyEvent, e => e.Unicode == unicode);
             eventAggregator.GetEvent<CleanSelectAllEvent>().Subscribe(CleanSelectAll, e => e.Unicode == unicode);
+
+            //当退出页面编辑后
+            //缩略图选中页面,要和当前显示的页面,一致
+            eventAggregator.GetEvent<PageEditSelectedItemEvent>().Subscribe(OnPageEditSelectedItemRefreshEvent, e => e.Unicode == unicode);
+        }
+
+        private void OnPageEditSelectedItemRefreshEvent(PageEditSelectedItemEventArgs args)
+        {
+            if (viewModel.IsBOTAThumb == Visibility.Visible && args.SelectedItemIndex != -1)
+            {
+                viewModel.ListSelectedIndex = args.SelectedItemIndex;
+                ListPageEdit.ScrollIntoView(ListPageEdit.SelectedItem);
+            }
         }
 
         private void Timer_Tick(object sender, EventArgs e)
@@ -182,6 +195,12 @@ namespace PDF_Master.Views.PageEdit
                     {
                         ListPageEdit.SelectedIndex = e.PageRange[0] - 1;
                         ListPageEdit.ScrollIntoView(ListPageEdit.SelectedItem);
+
+                        //缩略图 复制粘贴后,选中页面,要与阅读视图 对应
+                        if (viewModel.viewContentViewModel.isInPageEdit == false && GridBOTAHeader.Visibility == Visibility.Visible)
+                        {
+                            viewModel.PDFViewer.GoToPage(ListPageEdit.SelectedIndex);
+                        }
                     }
                     else
                     {
@@ -461,6 +480,11 @@ namespace PDF_Master.Views.PageEdit
 
                             string filename = viewModel.PDFViewer.Document.FileName + " " + CommonHelper.GetPageParmFromList(pages) + ".pdf";
                             string tempPath = System.IO.Path.Combine(dir, filename);
+                            //删除 临时文件的同名文件
+                            if (File.Exists(tempPath))
+                            {
+                                File.Delete(tempPath);
+                            }
                             string path = CommonHelper.CreateFilePath(tempPath);
                             files[0] = path;
                             dropMoveFiles.Add(path);