Переглянути джерело

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

lvle 1 рік тому
батько
коміт
dc11bbed30

+ 4 - 1
PDF Office/CustomControl/WritableComboBox.xaml.cs

@@ -340,6 +340,7 @@ namespace PDF_Master.CustomControl
                             break;
                         }
                     case "CustomPage":
+                        writableTextBox.Text = string.Empty;
                         writableTextBox.Focus();
                         break;
 
@@ -390,7 +391,9 @@ namespace PDF_Master.CustomControl
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
-            UpDataPagesInRange();
+            //230621 重复调用 ,OnMaxPageRangeChanged 有调用此方法
+            //注释 是为了  选中页面拆分,需要选自定义,并且显示选中的页码
+            //UpDataPagesInRange();
             AllPageItem.Content = App.MainPageLoader.GetString("WritableComboBox_AllPage");
             OddPageItem.Content = App.MainPageLoader.GetString("WritableComboBox_OddPage");
             EvenPageItem.Content = App.MainPageLoader.GetString("WritableComboBox_EvenPage");

+ 5 - 1
PDF Office/Model/ParameterNames.cs

@@ -138,6 +138,10 @@ namespace PDF_Master.Model
         /// <summary>
         /// 页面编辑-插入自定义页面 选中的页面
         /// </summary>
-        public static string ListSelectedIndex = "ListSelectedIndex";
+        public static string PageEditSelectedIndex = "PageEditSelectedIndex";
+
+        public static string PageEditSelectedItems = "PageEditSelectedItems";
+
+        public static string IsDeleteAfterExtract = "IsDeleteAfterExtract";
     }
 }

+ 4 - 1
PDF Office/PDF Master.csproj

@@ -18,6 +18,7 @@
     <NuGetPackageImportStamp>
     </NuGetPackageImportStamp>
     <IsWebBootstrapper>false</IsWebBootstrapper>
+    <TargetFrameworkProfile />
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
     <InstallFrom>Disk</InstallFrom>
@@ -32,7 +33,6 @@
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>x64</PlatformTarget>
@@ -2753,6 +2753,9 @@
     <XliffResource Include="MultilingualResources\PDF Office.zh-Hans.xlf" />
     <XliffResource Include="MultilingualResources\PDF Office.zh-Hant.xlf" />
   </ItemGroup>
+  <ItemGroup>
+    <Analyzer Include="ComPDFKit.Desk.dll" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>

+ 18 - 5
PDF Office/ViewModels/Dialog/PageEditDialogs/ExtractDialogViewModel.cs

@@ -8,11 +8,13 @@ using Prism.Services.Dialogs;
 using PDF_Master.Model.PageEdit;
 using Prism.Commands;
 using PDF_Master.Model;
+using ComPDFKitViewer.PdfViewer;
 
 namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
 {
-    public class ExtractDialogViewModel:BindableBase,IDialogAware
+    public class ExtractDialogViewModel : BindableBase, IDialogAware
     {
+        private bool isDeleteAfterExtract = true;
         public string Title => "";
 
         public event Action<IDialogResult> RequestClose;
@@ -32,6 +34,16 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
             }
         }
 
+        private bool isEnabledDeleteAfterExtract = true;
+
+        public bool IsEnabledDeleteAfterExtract
+        {
+            get { return isEnabledDeleteAfterExtract; }
+            set
+            {
+                SetProperty(ref isEnabledDeleteAfterExtract, value);
+            }
+        }
 
         public ExtractDialogViewModel()
         {
@@ -48,8 +60,8 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
         private void extract()
         {
             DialogParameters valuePairs = new DialogParameters();
-            valuePairs.Add(ParameterNames.DataModel,Model);
-            RequestClose.Invoke(new DialogResult(ButtonResult.OK,valuePairs));
+            valuePairs.Add(ParameterNames.DataModel, Model);
+            RequestClose.Invoke(new DialogResult(ButtonResult.OK, valuePairs));
         }
 
         public bool CanCloseDialog()
@@ -64,7 +76,8 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
-            
+            parameters.TryGetValue<bool>(ParameterNames.IsDeleteAfterExtract, out isDeleteAfterExtract);
+            IsEnabledDeleteAfterExtract = isDeleteAfterExtract ? true : false;
         }
     }
-}
+}

+ 1 - 1
PDF Office/ViewModels/Dialog/PageEditDialogs/InsertDialogViewModel.cs

@@ -426,7 +426,7 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
             if (parameters != null)
             {
                 size = parameters.GetValue<Size>(ParameterNames.CurrentPageSize);
-                ListSelectedIndex = parameters.GetValue<int>(ParameterNames.ListSelectedIndex);
+                ListSelectedIndex = parameters.GetValue<int>(ParameterNames.PageEditSelectedIndex);
 
                 //未选择页面时,【当前页】项置灰不可点击,默认选中【标准】A4
                 if (ListSelectedIndex == -1)

+ 9 - 1
PDF Office/ViewModels/Dialog/PageEditDialogs/SplitDialogViewModel.cs

@@ -21,6 +21,7 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
         private CPDFViewer pdfViewer;
         private int listSelectedIndex;
         private double pageCount;
+        private string pageEditSelectedItems;
 
         //页面总数
         public double PageCount
@@ -99,7 +100,8 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
         public void OnDialogOpened(IDialogParameters parameters)
         {
             parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
-            parameters.TryGetValue<int>(ParameterNames.ListSelectedIndex, out listSelectedIndex);
+            parameters.TryGetValue<int>(ParameterNames.PageEditSelectedIndex, out listSelectedIndex);
+            parameters.TryGetValue<string>(ParameterNames.PageEditSelectedItems, out pageEditSelectedItems);
             if (pdfViewer != null)
             {
                 PageCount = pdfViewer.Document.PageCount;
@@ -114,6 +116,12 @@ namespace PDF_Master.ViewModels.Dialog.PageEditDialogs
                 else
                 {
                     Model.IsCustomRange = true;
+                    
+                    if (pageEditSelectedItems != null)
+                    {
+                        CustomPageText = pageEditSelectedItems;
+                    }
+                    Model.PageSelectedIndex = 3;
                 }
             }
         }

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

@@ -669,7 +669,8 @@ namespace PDF_Master.ViewModels.PageEdit
         {
             DialogParameters valuePairs = new DialogParameters();
             valuePairs.Add(ParameterNames.PDFViewer, PDFViewer);
-            valuePairs.Add(ParameterNames.ListSelectedIndex, ListSelectedIndex);
+            valuePairs.Add(ParameterNames.PageEditSelectedIndex, ListSelectedIndex);
+            valuePairs.Add(ParameterNames.PageEditSelectedItems, TbPageRange);
             dialogs.ShowDialog(DialogNames.SplitDialog, valuePairs, e =>
             {
                 if (e.Result == ButtonResult.OK && e.Parameters != null)
@@ -685,7 +686,18 @@ namespace PDF_Master.ViewModels.PageEdit
         /// </summary>
         private void ExtractCommandEvent()
         {
-            dialogs.ShowDialog(DialogNames.ExtractDialog, null, e =>
+            DialogParameters keyValuePairs = new DialogParameters();
+
+            //因无法删除所有页面,若选中所有页面提取,则需要将「提取后删除页面」复选项置灰
+            if (selectedPageList.Count == PageEditItems.Count)
+            {
+                keyValuePairs.Add(ParameterNames.IsDeleteAfterExtract, false);
+            }
+            else
+            {
+                keyValuePairs.Add(ParameterNames.IsDeleteAfterExtract, true);
+            }
+            dialogs.ShowDialog(DialogNames.ExtractDialog, keyValuePairs, e =>
             {
                 if (e.Result == ButtonResult.OK && e.Parameters != null)
                 {
@@ -802,7 +814,7 @@ namespace PDF_Master.ViewModels.PageEdit
                 size.Width = CommonHelper.GetUnitsFromPageSize(PDFViewer.Document.GetPageSize(listSelecedIndex).Width);
                 size.Height = CommonHelper.GetUnitsFromPageSize(PDFViewer.Document.GetPageSize(listSelecedIndex).Height);
                 keyValuePairs.Add(ParameterNames.CurrentPageSize, size);
-                keyValuePairs.Add(ParameterNames.ListSelectedIndex, ListSelectedIndex);
+                keyValuePairs.Add(ParameterNames.PageEditSelectedIndex, ListSelectedIndex);
                 //int o = ListSelectedIndex;
                 //插入自定义页面
                 dialogs.ShowDialog(DialogNames.InsertDialog, keyValuePairs, e =>
@@ -2083,9 +2095,9 @@ namespace PDF_Master.ViewModels.PageEdit
                     #endregion 方案一 //part1
 
                     #region 方案二 //Part2 奇数页、偶数页需要拆分成两个
+
                     if (data.PageMode == HomePageSplitDialogModel.PageRangeMode.OddPage || data.PageMode == HomePageSplitDialogModel.PageRangeMode.EvenPage)
                     {
-
                         List<int> pageList2 = new List<int>();
                         for (int i = 1; i <= pdfViewer.Document.PageCount; i++)
                         {
@@ -2114,7 +2126,8 @@ namespace PDF_Master.ViewModels.PageEdit
                         saveDoc2.Release();
                         selectedfile = path2;
                     }
-                    #endregion 方案二 //Part2
+
+                    #endregion 方案二 //Part2 奇数页、偶数页需要拆分成两个
                 }
                 //显示文件夹,并选中一个文件
                 Process.Start("explorer", "/select,\"" + selectedfile + "\"");
@@ -2344,8 +2357,14 @@ namespace PDF_Master.ViewModels.PageEdit
                 //从页面编辑退出的值,根据内容走,进页面编辑是这一页内容,退出来还是
                 if (CurrentPageEditItem != null)
                 {
-                    PDFViewer.GoToPage(CurrentPageEditItem.PageNumber-1);
+                    int pageIndex = CurrentPageEditItem.PageNumber - 1;
+                    if (pageIndex != PDFViewer.CurrentIndex)
+                    {
+                        PDFViewer.GoToPage(pageIndex);
+                    }
                 }
+                //插入、替换等更新页码,页码输入框的值未更新
+                RefreshTbPageRange();
             }
             if (needClearUndoHistory)
             {
@@ -2392,6 +2411,39 @@ namespace PDF_Master.ViewModels.PageEdit
             }
         }
 
+        private void RefreshTbPageRange()
+        {
+            List<int> indexList = GetSelectedItemPageNumbers();
+
+            if (indexList.Count > 0)
+            {
+                //只选中单个页面是,listselectedIndex 更准确
+                if (indexList.Count == 1)
+                {
+                    TbPageRange = (listSelecedIndex + 1).ToString();
+                }
+                else
+                {
+                    //根据选中的页面转换成1,3-10类似的字符串
+                    string pageparm = CommonHelper.GetPageParmFromList(indexList);
+                    TbPageRange = pageparm;
+                }
+            }
+        }
+
+        private List<int> GetSelectedItemPageNumbers()
+        {
+            List<int> indexList = new List<int>();
+            for (int i = 0; i < PageEditItems.Count; i++)
+            {
+                if (PageEditItems[i].Selected)
+                {
+                    indexList.Add(PageEditItems[i].PageNumber);
+                }
+            }
+            return indexList;
+        }
+
         /// <summary>
         /// 旋转所有选中页面
         /// </summary>

+ 1 - 0
PDF Office/Views/Dialog/PageEditDialogs/ExtractDialog.xaml

@@ -32,6 +32,7 @@
                     Content="提取后删除页面"
                     FontFamily="Segoe UI"
                     FontSize="14"
+                    IsEnabled="{Binding IsEnabledDeleteAfterExtract}"
                     IsChecked="{Binding Model.IsDeleteAfterExtract, Mode=TwoWay}" />
             </StackPanel>
         </cus:DialogContent.Content>