Browse Source

综合-注释列表UI、阅读页右键菜单-高亮显示链接

OYXH\oyxh 2 years ago
parent
commit
38acc60d9f

+ 30 - 28
PDF Office/Styles/ContextMenuStyle.xaml

@@ -21,8 +21,8 @@
 
     <!--便签ToolTip-->
     <Style x:Key="FlowToolTip" TargetType="ToolTip">
-        <Setter Property="HorizontalAlignment" Value="Left"/>
-        <Setter Property="VerticalAlignment" Value="Top"/>
+        <Setter Property="HorizontalAlignment" Value="Left" />
+        <Setter Property="VerticalAlignment" Value="Top" />
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate>
@@ -32,12 +32,12 @@
                                 <DropShadowEffect Direction="0" BlurRadius="7" ShadowDepth="0" Color="Black" Opacity="0.09" />
                             </Border.Effect>
                         </Border>
-                        <TextBlock  
+                        <TextBlock
                             Margin="16,8,16,8"
                             FontSize="13"
                             TextWrapping="Wrap"
                             Foreground="{StaticResource color.sys.text.anti.norm}"
-                            Text="{TemplateBinding ContentControl.Content}"/>
+                            Text="{TemplateBinding ContentControl.Content}" />
                     </Grid>
                 </ControlTemplate>
             </Setter.Value>
@@ -158,26 +158,26 @@
             BorderThickness="1"
             Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
         <MenuItem Header="添加注释" Tag="AddAnnotation">
-            <MenuItem Header="绘制" Tag="AnnotFreehand" />
+            <MenuItem Header="绘制" Tag="AnnotFreehand"  />
             <MenuItem Header="文本" Tag="AnnotFreeText" />
-            <MenuItem Header="便签" Tag="AnnotSticky" />
+            <MenuItem Header="便签" Tag="AnnotSticky"/>
             <Separator
                 Height="1"
                 BorderBrush="#33000000"
                 BorderThickness="1"
                 Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
-            <MenuItem Header="矩形" Tag="AnnotSquare" />
-            <MenuItem Header="椭圆形" Tag="AnnotCircle" />
-            <MenuItem Header="箭头" Tag="AnnotArrow" />
-            <MenuItem Header="直线" Tag="AnnotLine" />
+            <MenuItem Header="矩形" Tag="AnnotSquare"  />
+            <MenuItem Header="椭圆形" Tag="AnnotCircle"  />
+            <MenuItem Header="箭头" Tag="AnnotArrow"  />
+            <MenuItem Header="直线" Tag="AnnotLine"  />
             <Separator
                 Height="1"
                 BorderBrush="#33000000"
                 BorderThickness="1"
                 Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
-            <MenuItem Header="链接" Tag="AnnotLink" />
-            <MenuItem Header="图章" Tag="AnnotStamp" />
-            <MenuItem Header="签名" Tag="AnnotAutograph" />
+            <MenuItem Header="链接" Tag="AnnotLink"  />
+            <MenuItem Header="图章" Tag="AnnotStamp"  />
+            <MenuItem Header="签名" Tag="AnnotAutograph"  />
         </MenuItem>
         <MenuItem Header="隐藏注释" Tag="HiddenAnnot" />
         <MenuItem Header="显示注释" Tag="DisplayAnnot" />
@@ -189,17 +189,17 @@
             BorderThickness="1"
             Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
         <MenuItem Header="工具模式" Tag="ToolMode">
-            <MenuItem Header="默认工具" Tag="default" />
-            <MenuItem Header="滚动工具" Tag="roll" />
+            <MenuItem Header="默认工具" Tag="default" IsCheckable="True" />
+            <MenuItem Header="滚动工具" Tag="roll" IsCheckable="True" />
             <MenuItem
                 Header="放大镜"
                 Tag="magnifier"
-                Visibility="Collapsed" />
-            <MenuItem Header="内容选择" Tag="content" />
+                Visibility="Collapsed" IsCheckable="True" />
+            <MenuItem Header="内容选择" Tag="content" IsCheckable="True" />
             <MenuItem
                 Header="缩放至选定区域"
                 Tag="zoom"
-                Visibility="Collapsed" />
+                Visibility="Collapsed" IsCheckable="True" />
         </MenuItem>
         <MenuItem Header="进入阅读模式" Tag="ReadModel" />
         <MenuItem Header="退出阅读模式" Tag="UnReadModel" />
@@ -209,18 +209,20 @@
             BorderThickness="1"
             Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
         <MenuItem Header="视图缩放" Tag="ViewZoom">
-            <MenuItem Header="适应宽度" Tag="FitWidth" />
-            <MenuItem Header="适应页面" Tag="FitHeight" />
-            <MenuItem Header="实际大小" Tag="FitSize" />
-            <MenuItem Header="放大" Tag="enlarge" />
-            <MenuItem Header="缩小" Tag="narrow" />
+            <MenuItem Header="适应宽度" Tag="FitWidth" IsCheckable="True" />
+            <MenuItem Header="适应页面" Tag="FitHeight" IsCheckable="True" />
+            <MenuItem Header="实际大小" Tag="FitSize" IsCheckable="True" />
+            <MenuItem Header="放大" Tag="enlarge" IsCheckable="True" />
+            <MenuItem Header="缩小" Tag="narrow" IsCheckable="True" />
         </MenuItem>
         <MenuItem Header="页面显示" Tag="PageDisplay">
-            <MenuItem Header="单页" Tag="SingleView" />
-            <MenuItem Header="单页连续" Tag="SingleContinueView" />
-            <MenuItem Header="双页" Tag="DoubleView" />
-            <MenuItem Header="双页连续" Tag="DoubleContinueView" />
-            <MenuItem Header="书本模式" Tag="BookMode" />
+            <MenuItem Header="单页" Tag="SingleView" IsCheckable="True" />
+            <MenuItem Header="单页连续" Tag="SingleContinueView" IsCheckable="True" />
+            <MenuItem Header="双页" Tag="DoubleView" IsCheckable="True" />
+            <MenuItem Header="双页连续" Tag="DoubleContinueView" IsCheckable="True" />
+            <MenuItem Header="书本模式" Tag="BookMode" IsCheckable="True" />
+        </MenuItem>
+        <MenuItem  Tag="HighlightLinks" Header="高亮显示超链接" IsCheckable="True">
         </MenuItem>
         <Separator
             Height="1"

+ 3 - 3
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs

@@ -506,7 +506,7 @@ namespace PDF_Office.ViewModels.Tools
                     {
                         if (e.PressOnSelectedText || e.CommandTarget == TargetType.ImageSelection)
                         {
-                            e.PopupMenu = NoneSelectAnnotContextMenu(sender, e);
+                            e.PopupMenu = SelectedTextOrImageContextMenu(sender, e);
                             if (e.PopupMenu != null)
                             {
                                 e.Handle = true;
@@ -529,7 +529,7 @@ namespace PDF_Office.ViewModels.Tools
         //右键菜单,选中虚实线按钮状态
         private void PopMenuCheckedLineDash(AnnotHandlerEventArgs annot)
         {
-            if(annot != null)
+            if (annot != null)
             {
                 bool isSolidLineDash = true;
                 if (annot.EventType == AnnotArgsType.AnnotFreehand)
@@ -538,7 +538,7 @@ namespace PDF_Office.ViewModels.Tools
                     isSolidLineDash = AnnotPropertyPanel.IsSolidStyle(freeHand.LineDash);
                     FreeHandAnnotPopMenu.SetIsChecked(isSolidLineDash ? "FreeHandSolid" : "FreeHandDash", true);
                 }
-                else if(annot.EventType == AnnotArgsType.AnnotSquare)
+                else if (annot.EventType == AnnotArgsType.AnnotSquare)
                 {
                     var square = annot as SquareAnnotArgs;
                     isSolidLineDash = AnnotPropertyPanel.IsSolidStyle(square.LineDash);

+ 46 - 1
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Layout.cs

@@ -1,6 +1,7 @@
 using ComPDFKit.PDFDocument;
 using ComPDFKitViewer;
 using ComPDFKitViewer.AnnotEvent;
+using ComPDFKitViewer.PdfViewer;
 using PDF_Office.CustomControl;
 using PDF_Office.CustomControl.CompositeControl;
 using PDF_Office.Helper;
@@ -17,6 +18,8 @@ using System.Windows.Controls;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Shapes;
+using static Dropbox.Api.TeamLog.AdminAlertSeverityEnum;
+using MenuItem = System.Windows.Controls.MenuItem;
 
 namespace PDF_Office.ViewModels.Tools
 {
@@ -218,12 +221,48 @@ namespace PDF_Office.ViewModels.Tools
                             case "Print":
                                 menuItem1.Command = viewContentViewModel.PrintCommand;
                                 break;
+
+                            case "HighlightLinks":
+                                if (OpenFileInfo != null)
+                                {
+                                    menuItem1.IsChecked = OpenFileInfo.ShowHighLightLink;
+                                }
+                                menuItem1.Click -= HighlightLinks_Click;
+                                menuItem1.Click += HighlightLinks_Click;
+                                break;
                         }
                     }
                 }
             }
         }
 
+        private void HighlightLinks_Click(object sender, RoutedEventArgs e)
+        {
+            if (sender is MenuItem menuItem)
+            {
+                //if (OpenFileInfo != null)
+                //{
+                //    menuItem.IsChecked = OpenFileInfo.ShowHighLightLink;
+                //}
+                if (menuItem.IsChecked)
+                {
+                    PDFViewer.SetShowLink(true);
+                }
+                else
+                {
+                    PDFViewer.SetShowLink(false);
+                }
+                if (OpenFileInfo != null)
+                {
+                    OpenFileInfo.ShowHighLightLink = menuItem.IsChecked;
+                }
+                //if (menuItem.IsChecked == true)
+                //{
+                //    menuItem.IsChecked = false;
+                //}
+            }
+        }
+
         private void SetMenuItemVisibility(MenuItem menuItem1, string right, string deny, bool flag)
         {
             if (menuItem1.Tag.ToString() == right && flag)
@@ -244,7 +283,13 @@ namespace PDF_Office.ViewModels.Tools
             }
         }
 
-        private ContextMenu NoneSelectAnnotContextMenu(object sender, AnnotCommandArgs annotCommand)
+        /// <summary>
+        /// 选择文本或者图像的右键菜单
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="annotCommand"></param>
+        /// <returns></returns>
+        private ContextMenu SelectedTextOrImageContextMenu(object sender, AnnotCommandArgs annotCommand)
         {
             ContextMenu popMenu = new ContextMenu();
             popMenu.FontSize = 14;

+ 2 - 0
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Properties.cs

@@ -5,6 +5,7 @@ using PDF_Office.CustomControl;
 using PDF_Office.Helper;
 using PDF_Office.ViewModels.PropertyPanel.AnnotPanel;
 using PDF_Office.Views.PropertyPanel.AnnotPanel;
+using PDFSettings.Settings;
 using Prism.Commands;
 using Prism.Events;
 using Prism.Regions;
@@ -263,6 +264,7 @@ namespace PDF_Office.ViewModels.Tools
         public IDialogService dialogs;
         public IRegionManager region;
 
+        public OpenFileInfo OpenFileInfo = null;
         public CPDFViewer PDFViewer;
         private ViewContentViewModel viewContentViewModel;
         private AnnotPropertyPanel propertyPanel = new AnnotPropertyPanel();

+ 6 - 0
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -17,6 +17,7 @@ using PDF_Office.ViewModels.PropertyPanel.AnnotPanel;
 using PDF_Office.Views.BOTA;
 using PDF_Office.Views.PropertyPanel.AnnotPanel;
 using PDFSettings;
+using PDFSettings.Settings;
 using Prism.Commands;
 using Prism.Events;
 using Prism.Mvvm;
@@ -690,6 +691,11 @@ namespace PDF_Office.ViewModels.Tools
         {
             navigationContext.Parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
             navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
+
+            if (viewContentViewModel != null)
+            {
+                OpenFileInfo = viewContentViewModel.OpenFileInfo;
+            }
             BindingPDFViewerHandler();
             BindingEvent();
             LoaedStickyNotePopup();

+ 4 - 2
PDF Office/Views/Dialog/BOTA/ScreenAnnotationDialog.xaml

@@ -34,6 +34,7 @@
                         Name="EllipseColor"
                         Width="20"
                         Height="20"
+                        StrokeThickness="1" Stroke="{StaticResource color.sys.layout.divider}"
                         Fill="{Binding Color}" />
                 </Border>
             </DataTemplate>
@@ -46,7 +47,7 @@
                     FontSize="12"
                     Text="{Binding Name}" />
             </DataTemplate>
-            <Style x:Key="ListboxItemStyle" TargetType="{x:Type ListBoxItem}">
+            <Style x:Key="ListColorItemStyle" TargetType="{x:Type ListBoxItem}">
                 <Setter Property="HorizontalAlignment" Value="Center" />
                 <Setter Property="Height" Value="40" />
                 <Setter Property="Width" Value="40" />
@@ -60,6 +61,7 @@
                                 Width="40"
                                 Height="40"
                                 HorizontalAlignment="Center"
+
                                 Background="{TemplateBinding Background}"
                                 CornerRadius="4">
                                 <ContentPresenter />
@@ -472,7 +474,7 @@
                     Margin="15,0"
                     Background="Transparent"
                     BorderThickness="0"
-                    ItemContainerStyle="{StaticResource ListboxItemStyle}"
+                    ItemContainerStyle="{StaticResource ListColorItemStyle}"
                     ItemTemplate="{StaticResource ListColorData}"
                     ItemsSource="{Binding AnnotationColors}"
                     ScrollViewer.HorizontalScrollBarVisibility="Disabled"