Bladeren bron

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

ZhouJieSheng 1 jaar geleden
bovenliggende
commit
1c7851d443

+ 24 - 10
PDF Office/ViewModels/Dialog/PageEditDialogs/SplitDialogViewModel.cs

@@ -18,9 +18,10 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
     {
         public string Title => "";
 
-        private CPDFViewer pdfViewer; 
-
+        private CPDFViewer pdfViewer;
+        private int listSelectedIndex;
         private double pageCount;
+
         //页面总数
         public double PageCount
         {
@@ -32,10 +33,11 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
         }
 
         private string customPageText;
+
         /// <summary>
         /// 自定义的输入内容
         /// </summary>
-        public string CustomPageText 
+        public string CustomPageText
         {
             get { return customPageText; }
             set
@@ -44,7 +46,6 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
             }
         }
 
-
         private HomePageSplitDialogModel model;
 
         public HomePageSplitDialogModel Model
@@ -69,6 +70,7 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
 
             Model = new HomePageSplitDialogModel();
         }
+
         private void cancel()
         {
             RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
@@ -79,12 +81,12 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
             List<int> pages = new List<int>();
             Model.PageRange = customPageText;
             DialogParameters valuePairs = new DialogParameters();
-            valuePairs.Add(ParameterNames.DataModel,Model);
+            valuePairs.Add(ParameterNames.DataModel, Model);
             RequestClose.Invoke(new DialogResult(ButtonResult.OK, valuePairs));
         }
 
-
         #region
+
         public bool CanCloseDialog()
         {
             return true;
@@ -92,18 +94,30 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
 
         public void OnDialogClosed()
         {
-           
         }
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
-            parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer,out pdfViewer);
-            if(pdfViewer!=null)
+            parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
+            parameters.TryGetValue<int>(ParameterNames.ListSelectedIndex, out listSelectedIndex);
+            if (pdfViewer != null)
             {
                 PageCount = pdfViewer.Document.PageCount;
                 Model.SourceFileName = System.IO.Path.GetFileName(pdfViewer.Document.FileName);
+                //"拆分方式
+                //若未选择要拆分的页面,则默认选中【平均每X页拆分为一个PDF文件】,默认参数为 1
+                //若先选择了页面再点击【拆分】,则默认选中【按页面范围拆分】,默认参数为当前所选页面范围"
+                if (listSelectedIndex == -1)
+                {
+                    Model.IsAveragePages = true;
+                }
+                else
+                {
+                    Model.IsCustomRange = true;
+                }
             }
         }
+
         #endregion
     }
-}
+}

+ 71 - 57
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -584,6 +584,7 @@ namespace PDF_Master.ViewModels.PageEdit
         {
             DialogParameters valuePairs = new DialogParameters();
             valuePairs.Add(ParameterNames.PDFViewer, PDFViewer);
+            valuePairs.Add(ParameterNames.ListSelectedIndex, ListSelectedIndex);
             dialogs.ShowDialog(DialogNames.SplitDialog, valuePairs, e =>
             {
                 if (e.Result == ButtonResult.OK && e.Parameters != null)
@@ -1752,7 +1753,7 @@ namespace PDF_Master.ViewModels.PageEdit
                     }
                 }
                 else//自定义页码范围
-                {
+                {
                     string pageRange = "";
                     if (data.PageMode == HomePageSplitDialogModel.PageRangeMode.OddPage)
                     {
@@ -1771,59 +1772,70 @@ namespace PDF_Master.ViewModels.PageEdit
                             page[i] = i * 2 + 2;
                         }
                         pageRange = string.Join(",", page);
-                    }
+                    }
+                    else if (data.PageMode == HomePageSplitDialogModel.PageRangeMode.CustomPage)
+                    {
+                        pageRange = data.PageRange;
+                    }
                     List<int> pageList1 = new List<int>();
                     //如果是自定义输入页面范围的话,直接解析
-                    CommonHelper.GetPagesInRange(ref pageList1, pageRange, PageCount, new char[] { ',' }, new char[] { '-' });
-                    //part1
-                    selectedfile = "";
-                    CPDFDocument saveDoc1 = CPDFDocument.CreateDocument();
-                    string filepath = data.FileName + " " + "1.pdf";
-                    string path1 = Path.Combine(dialog.SelectedPath, filepath);
-                    path1 = CommonHelper.CreateFilePath(path1);
-                    bool result = saveDoc1.ImportPages(pdfViewer.Document, pageRange);
-                    if (!result)
-                    {
-                        saveDoc1.Release();
-                        ShowToast();
-                        return;
-                    }
-                    result = saveDoc1.WriteToFilePath(path1);
-                    if (!result)
-                    {
-                        saveDoc1.Release();
-                        ShowToast();
-                        return;
-                    }
-                    saveDoc1.Release();
-                    //Part2
-                    List<int> pageList2 = new List<int>();
-                    for (int i = 1; i <= pdfViewer.Document.PageCount; i++)
-                    {
-                        if (!pageList1.Contains(i - 1))//pagelist1 存放的是index
-                            pageList2.Add(i);
-                    }
-                    string pageRange2 = string.Join(",", pageList2);
-                    CPDFDocument saveDoc2 = CPDFDocument.CreateDocument();
-                    string filepath2 = data.FileName + " " + "2.pdf";
-                    string path2 = Path.Combine(dialog.SelectedPath, filepath2);
-                    path2 = CommonHelper.CreateFilePath(path2);
-                    result = saveDoc2.ImportPages(pdfViewer.Document, pageRange2);
-                    if (!result)
-                    {
-                        saveDoc2.Release();
-                        ShowToast();
-                        return;
-                    }
-                    result = saveDoc2.WriteToFilePath(path2);
-                    if (!result)
-                    {
-                        saveDoc2.Release();
-                        ShowToast();
-                        return;
-                    }
-                    selectedfile = path1;
-                    saveDoc2.Release();
+                    CommonHelper.GetPagesInRange(ref pageList1, pageRange, PageCount, new char[] { ',' }, new char[] { '-' });
+
+                    #region 方案一 //part1
+
+                    selectedfile = "";
+                    CPDFDocument saveDoc1 = CPDFDocument.CreateDocument();
+                    string filepath = data.FileName + " " + "1.pdf";
+                    string path1 = Path.Combine(dialog.SelectedPath, filepath);
+                    path1 = CommonHelper.CreateFilePath(path1);
+                    bool result = saveDoc1.ImportPages(pdfViewer.Document, pageRange);
+                    if (!result)
+                    {
+                        saveDoc1.Release();
+                        ShowToast();
+                        return;
+                    }
+                    result = saveDoc1.WriteToFilePath(path1);
+                    if (!result)
+                    {
+                        saveDoc1.Release();
+                        ShowToast();
+                        return;
+                    }
+                    saveDoc1.Release();
+                    selectedfile = path1;
+
+                    #endregion //part1
+
+                    #region 方案二 //Part2
+                    //List<int> pageList2 = new List<int>();
+                    //for (int i = 1; i <= pdfViewer.Document.PageCount; i++)
+                    //{
+                    //    if (!pageList1.Contains(i - 1))//pagelist1 存放的是index
+                    //        pageList2.Add(i);
+                    //}
+                    //string pageRange2 = string.Join(",", pageList2);
+                    //CPDFDocument saveDoc2 = CPDFDocument.CreateDocument();
+                    //string filepath2 = data.FileName + " " + "2.pdf";
+                    //string path2 = Path.Combine(dialog.SelectedPath, filepath2);
+                    //path2 = CommonHelper.CreateFilePath(path2);
+                    //bool result1 = saveDoc2.ImportPages(pdfViewer.Document, pageRange2);
+                    //if (!result1)
+                    //{
+                    //    saveDoc2.Release();
+                    //    ShowToast();
+                    //    return;
+                    //}
+                    //result1 = saveDoc2.WriteToFilePath(path2);
+                    //if (!result1)
+                    //{
+                    //    saveDoc2.Release();
+                    //    ShowToast();
+                    //    return;
+                    //}
+                    //saveDoc2.Release();
+                    //selectedfile = path2;
+                    #endregion
                 }
                 //显示文件夹,并选中一个文件
                 Process.Start("explorer", "/select,\"" + selectedfile + "\"");
@@ -2025,13 +2037,15 @@ namespace PDF_Master.ViewModels.PageEdit
                 else
                 {
                     RefreshItemImage(pageRange.Item1, pageRange.Item2);
-                    if(ListSelectedIndex == -1)
+                    if (isScrollIntoView)
                     {
-                        //插入后 滚动到 选中的页面
-                        List<int> pageRanges = new List<int>() { pageRange.Item2 };
-                        NotifyUIToRefresh(pageRanges);
+                        if (ListSelectedIndex == -1)
+                        {
+                            //插入后 滚动到 选中的页面
+                            List<int> pageRanges = new List<int>() { pageRange.Item2 };
+                            NotifyUIToRefresh(pageRanges);
+                        }
                     }
-                    
                 }
             }
             PDFViewer.UndoManager.CanSave = true;

+ 37 - 18
PDF Office/Views/PageEdit/PageEditContent.xaml.cs

@@ -104,9 +104,12 @@ namespace PDF_Master.Views.PageEdit
 
         private PageEditContentViewModel viewModel;
 
+        private List<string> dropMoveFiles = null;
+
         public PageEditContent()
         {
             InitializeComponent();
+            dropMoveFiles = new List<string>();
         }
 
         public PageEditContent(IEventAggregator eventAggregator) : this()
@@ -360,7 +363,6 @@ namespace PDF_Master.Views.PageEdit
         {
             try
             {
-                Trace.WriteLine("ListPageEdit_PreviewMouseMove 文件拖入App");
                 if (e.LeftButton == MouseButtonState.Pressed && !isDragingEnter)
                 {
                     //鼠标框选逻辑
@@ -416,16 +418,11 @@ namespace PDF_Master.Views.PageEdit
                         //files[0] = tempPath;
                         var scroll = GetScrollHost(ListPageEdit);
 
-                        DataObject dataObj = null;
-                        var position = e.GetPosition(ListPageEdit);
-
-                        Point pp = Mouse.GetPosition(e.Source as FrameworkElement);//WPF方法
-
                         //页面 是App内的拖拽 ,还是拖拽 页面 出 App 是一起处理
 
                         #region 拖拽 页面 到 桌面/文件夹 ,提取文件
 
-                        //string filename = Guid.NewGuid().ToString() + ".pdf";
+                        //C:\Users\oyxh\AppData\Local\Temp\
                         string dir = System.IO.Path.Combine(System.IO.Path.GetTempPath());
                         if (!System.IO.Directory.Exists(dir))
                         {
@@ -445,13 +442,11 @@ namespace PDF_Master.Views.PageEdit
                         string[] files = new string[pagenums.Count];
                         for (int i = 0; i < pagenums.Count; i++)
                         {
-                            //string filename = Guid.NewGuid().ToString() + ".pdf";
                             string filename = viewModel.PDFViewer.Document.FileName + " " + pagenums[i] + ".pdf";
-
-                            string tempPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), filename);
-                            //tempPath = CommonHelper.CreateFilePath(tempPath);
+                            string tempPath = System.IO.Path.Combine(dir, filename);
                             string path = CommonHelper.CreateFilePath(tempPath);
                             files[i] = path;
+                            dropMoveFiles.Add(path);
 
                             CPDFDocument savedoc = CPDFDocument.CreateDocument();
                             bool result2 = savedoc.ImportPages(viewModel.PDFViewer.Document, pagenums[i].ToString());
@@ -472,7 +467,7 @@ namespace PDF_Master.Views.PageEdit
                         //string[] files = new string[1];
                         //files[0] = tempPath;
 
-                        dataObj = new DataObject(DataFormats.FileDrop, files);
+                        DataObject dataObj = new DataObject(DataFormats.FileDrop, files);
 
                         #endregion 拖拽 页面 到 桌面/文件夹 ,提取文件
 
@@ -482,7 +477,7 @@ namespace PDF_Master.Views.PageEdit
                         //如果这里的DragDropEfeects类型有改动,也需要调整ViewContent里UserControl_Drop函数的判断逻辑
                         DragDrop.DoDragDrop(ListPageEdit, dataObj, DragDropEffects.Copy);
                         Mouse.Capture(ListPageEdit);
-
+                        //CleanDropMoveFiles();
                         return;
                     }
                 }
@@ -545,7 +540,6 @@ namespace PDF_Master.Views.PageEdit
 
         private void ListPageEdit_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
         {
-            Trace.WriteLine("ListPageEdit_PreviewMouseLeftButtonUp 文件拖入App");
             var pos = e.GetPosition(ListPageEdit);
             HitTestResult result = VisualTreeHelper.HitTest(ListPageEdit, pos);
             if (result == null)
@@ -642,7 +636,6 @@ namespace PDF_Master.Views.PageEdit
         private async void ListPageEdit_Drop(object sender, DragEventArgs e)
         {
             //isDragingEnter = false;
-            Trace.WriteLine("ListPageEdit_Drop 文件拖入App");
             needScroll = false;
             if (!isDraging)
             {
@@ -748,6 +741,29 @@ namespace PDF_Master.Views.PageEdit
             viewModel.DragToSort(targetindex, pages);
             ExitDraging();
             isDraging = false;
+
+            CleanDropMoveFiles();
+        }
+
+        /// <summary>
+        /// 拖拽完成后,清空临时目录 的文件
+        /// </summary>
+        private void CleanDropMoveFiles()
+        {
+            if (dropMoveFiles != null)
+            {
+                if (dropMoveFiles.Count > 0)
+                {
+                    for (int i = 0; i < dropMoveFiles.Count; i++)
+                    {
+                        if (File.Exists(dropMoveFiles[i]))
+                        {
+                            File.Delete(dropMoveFiles[i]);
+                        }
+                    }
+                    dropMoveFiles.Clear();
+                }
+            }
         }
 
         private void MidLane_Drop(object sender, DragEventArgs e)
@@ -769,7 +785,7 @@ namespace PDF_Master.Views.PageEdit
         {
             try
             {
-                Trace.WriteLine("Grid_DragOver 文件拖App");
+                Trace.WriteLine("Grid_DragOver 文件拖App");
 
                 //将付费锁逻辑提前,避免因弹窗显示后导致虚影无法消失问题
                 if (!viewModel.viewContentViewModel.IAPBeforeFunction())
@@ -803,6 +819,9 @@ namespace PDF_Master.Views.PageEdit
                 var listBoxItem = CommonHelper.FindVisualParent<ListBoxItem>(result.VisualHit);
                 if (listBoxItem == null)
                 {
+                    //页面 拖出App后隐藏 标记线、缩略图
+                    LineInset.Visibility = Visibility.Collapsed;
+                    ImgPicture.Visibility = Visibility.Collapsed;
                     //MidLane.Visibility = Visibility.Collapsed;
                     //return;
                 }
@@ -895,6 +914,7 @@ namespace PDF_Master.Views.PageEdit
                 #endregion 计算插入标记位置
 
                 //暂时处理  鼠标移出边框时,虚影的显示问题
+                //230612 拖拽逻辑,为了更好的效果体现,暂时注释
                 if (pos.Y <= 30 || pos.Y >= ListPageEdit.ActualHeight - 10)
                 {
                     LineInset.Visibility = Visibility.Collapsed;
@@ -1015,7 +1035,7 @@ namespace PDF_Master.Views.PageEdit
         /// <param name="e"></param>
         private void Grid_PreviewDragEnter(object sender, DragEventArgs e)
         {
-            Trace.WriteLine("Grid_PreviewDragEnter 文件拖App");
+            Trace.WriteLine("Grid_PreviewDragEnter 文件拖App");
             var files = (System.Array)e.Data.GetData(DataFormats.FileDrop);
             if (files == null)//为null 表示内部拖动 触发的
             {
@@ -1076,7 +1096,6 @@ namespace PDF_Master.Views.PageEdit
 
         private void Grid_Drop(object sender, DragEventArgs e)
         {
-            Trace.WriteLine("Grid_Drop 文件拖入App");
 
             DragDropHelper.Drop(this, e);
         }