Browse Source

ComPDFKit.Demo(win) - 对比进度

weixiangjie 5 days ago
parent
commit
46dedda7ed

+ 2 - 0
Demo/Examples/Compdfkit.Controls/Comparison/CompareOverwriteResultControl.xaml

@@ -25,6 +25,8 @@
                         <Rectangle Fill="#2D77FA" Margin="0,0,0,0" Name="NewDocumentRect" RadiusX="2" RadiusY="2" Width="16" Height="16" StrokeThickness="1" Stroke="#1A000000"></Rectangle>
                         <TextBlock Name="NewDocumentText" Margin="8,0,0,0" VerticalAlignment="Center" MaxWidth="80" TextTrimming="CharacterEllipsis" ToolTip="{Binding ElementName=NewDocumentText,Path=Text}" Text="New Document"></TextBlock>
                     </StackPanel>
+                    <pdfControl:CPDFScalingControl x:Name="ScaleControl" Margin="12,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center"></pdfControl:CPDFScalingControl>
+
                 </StackPanel>
                 <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,12,5" Grid.Column="1" Background="#FCFDFF">
                     <CheckBox Height="20" Margin="10,8" VerticalContentAlignment="Center" Content="Synchronized scrolling" FontSize="14" IsChecked="True" Visibility="Collapsed"/>

+ 1 - 0
Demo/Examples/Compdfkit.Controls/Comparison/CompareOverwriteResultControl.xaml.cs

@@ -40,6 +40,7 @@ namespace ComPDFKit.Controls.Comparison
         {
             CompareDoc = leftDoc;
             OverwriteViewer.InitDocument(leftDoc);
+            ScaleControl.InitWithPDFViewer(OverwriteViewer);
         }
         private void SaveCompareData()
         {

+ 39 - 0
Demo/Examples/Compdfkit.Controls/Comparison/CompareProgressControl.xaml

@@ -0,0 +1,39 @@
+<UserControl x:Class="ComPDFKit.Controls.Comparison.CompareProgressControl"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:local="clr-namespace:ComPDFKit.Controls.Comparison"
+             mc:Ignorable="d"
+             d:DesignHeight="300" d:DesignWidth="500">
+    <Grid>
+        <Grid x:Name="CompareProgressGrid">
+            <Border VerticalAlignment="Center" HorizontalAlignment="Center" CornerRadius="5" Width="363" Height="91" BorderThickness="0.5" BorderBrush="Black" Background="#FCFDFF">
+                <Border.Effect>
+                    <DropShadowEffect ShadowDepth="4" BlurRadius="10" Color="Black" Opacity="0.4"/>
+                </Border.Effect>
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="*"></RowDefinition>
+                        <RowDefinition Height="Auto"></RowDefinition>
+                    </Grid.RowDefinitions>
+                    <Button HorizontalAlignment="Right" Click="ButtonBase_OnClick" Margin="0,-12,8,0" Background="White" Width="16" Height="16" BorderThickness="0">
+                        <Path Fill="Black">
+                            <Path.Data>
+                                M5.69231 5L9.5 1.19231L8.80769 0.5L5 4.30769L1.19231 0.5L0.5 1.19231L4.30769 5L0.5 8.80769L1.19231 9.5L5 5.69231L8.80769 9.5L9.5 8.80769L5.69231 5Z
+                            </Path.Data>
+                        </Path>
+                    </Button>
+                    <TextBlock Grid.Row="0" FontSize="16" FontWeight="SemiBold" Margin="32,21,31,0" VerticalAlignment="Center" HorizontalAlignment="Left" FontFamily="Segoe UI" TextWrapping="WrapWithOverflow"
+                               Text="The Comparison Result is Coming Soon"></TextBlock>
+                    <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="32,12,31,15">
+                        <ProgressBar x:Name="CompareProgressBar" Maximum="100" Width="261" Height="8" Foreground="#1460F3"></ProgressBar>
+                        <TextBlock Text="{Binding ElementName=CompareProgressBar, Path=Value}" Margin="12,0,0,0"></TextBlock>
+                        <TextBlock Text="%"></TextBlock>
+                    </StackPanel>
+                    
+                </Grid>
+            </Border>
+        </Grid>
+    </Grid>
+</UserControl>

+ 29 - 0
Demo/Examples/Compdfkit.Controls/Comparison/CompareProgressControl.xaml.cs

@@ -0,0 +1,29 @@
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ComPDFKit.Controls.Comparison
+{
+    public partial class CompareProgressControl : UserControl
+    {
+        public event RoutedEventHandler CloseClick;
+        public CompareProgressControl()
+        {
+            InitializeComponent();
+        }
+        
+        public void SetValue(int value)
+        {
+            CompareProgressBar.Value = value;
+        }
+        
+        public void SetValue(double value)
+        {
+            CompareProgressBar.Value = (int)(value * 100);
+        }
+
+        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
+        {
+            CloseClick?.Invoke(this, null);
+        }
+    }
+}

+ 25 - 12
Demo/Examples/Compdfkit.Controls/Comparison/ComparisonSettingDialog.xaml.cs

@@ -681,6 +681,17 @@ namespace ComPDFKit.Controls.Comparison
                     }
 
                     this.Close();
+                    bool cancel = false;
+                    // Dispatcher.Invoke(() =>
+                    // {
+                        CompareProgressControl progressControl = new CompareProgressControl();
+                        progressControl.CloseClick += (s, r) =>
+                        {
+                            cancel = true;
+                            OnCompareStatusChanged?.Invoke(this, null);
+                        };
+                        OnCompareStatusChanged?.Invoke(this, progressControl);
+                    // });
                     if (CompareType == CompareType.ContentCompare)
                     {
                         ObjectCompareType = CPDFCompareType.CPDFCompareTypeAll;
@@ -720,6 +731,7 @@ namespace ComPDFKit.Controls.Comparison
 
                                 for (int i = 0; i < maxCount; i++)
                                 {
+                                    if (cancel) return;
                                     if (i < OldDocument.PageCount)
                                     {
                                         oldTemp.Add(i);
@@ -748,6 +760,7 @@ namespace ComPDFKit.Controls.Comparison
                                     {
                                         for (int i = oldTemp.Count; i < newTemp.Count; i++)
                                         {
+                                            if (cancel) return;
                                             oldTemp.Add(OldDocument.PageCount);
                                         }
                                     }
@@ -767,19 +780,17 @@ namespace ComPDFKit.Controls.Comparison
                                 CPDFCompareResults result = CPdfContent.Compare(oldTemp[i], newTemp[i], ObjectCompareType, true);
                                 if (result != null && (result.TextResults.Count > 0 || result.ImageResults.Count > 0))
                                 {
-                                    // if (viewCtrl.ParentPage.loadingConceal.Visibility == Visibility.Collapsed)
-                                    // {
-                                    //     return;
-                                    // }
+                                    if (cancel) return;
                                     resultList.Add(result);
-                                    // Dispatcher.Invoke(() =>
-                                    // {
-                                    //     if (minLength != 0)
-                                    //     {
-                                    //         viewCtrl.ParentPage.loadingConcealBar.Value = (0.3 + ((double)i / (double)minLength) / (double)2);
-                                    //     }
-                                    // });
+                                    Dispatcher.Invoke(() =>
+                                    {
+                                        if (minLength != 0)
+                                        {
+                                            progressControl.SetValue((0.3 + ((double)i / (double)minLength) / (double)2));
+                                        }
+                                    });
                                 }
+
                             }
 
                             string tempPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString() + ".pdf");
@@ -809,6 +820,7 @@ namespace ComPDFKit.Controls.Comparison
 
                     if (CompareType == CompareType.OverwriteCompare)
                     {
+                        Dispatcher.Invoke(() => { progressControl.SetValue(0.3); });
                         List<int> oldTemp = new List<int>(OldRange);
                         List<int> newTemp = new List<int>(NewRange);
 
@@ -834,6 +846,7 @@ namespace ComPDFKit.Controls.Comparison
                         }
                         Task.Factory.StartNew(() =>
                         {
+                            Dispatcher.Invoke(() => { progressControl.SetValue(0.6); });
                             CPDFCompareOverlay CPdfOverlay = null;
                             if (string.IsNullOrEmpty(oldRnage) || string.IsNullOrEmpty(newRnage))
                             {
@@ -863,7 +876,7 @@ namespace ComPDFKit.Controls.Comparison
                                     // {
                                     //     return;
                                     // }
-                                    // viewCtrl.ParentPage.loadingConcealBar.Value = 0.6;
+                                    progressControl.SetValue(0.9);
                                     FileCompareGrid.Visibility = Visibility.Collapsed;
                                     CompareOverwriteResultControl resultPage = new CompareOverwriteResultControl();
                                     resultPage.SetCompareColor(new SolidColorBrush(NewMarkColor), new SolidColorBrush(OldMarkColor));

+ 4 - 0
Demo/Examples/Compdfkit.Controls/Compdfkit.Controls.csproj

@@ -336,6 +336,9 @@
     <Compile Include="Comparison\CompareOverwriteResultControl.xaml.cs">
       <DependentUpon>CompareOverwriteResultControl.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Comparison\CompareProgressControl.xaml.cs">
+      <DependentUpon>CompareProgressControl.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Comparison\ComparisonControl.xaml.cs" />
     <Compile Include="Comparison\ComparisonSettingDialog.xaml.cs">
       <DependentUpon>ComparisonSettingDialog.xaml</DependentUpon>
@@ -1084,6 +1087,7 @@
     </Page>
     <Page Include="Comparison\CompareContentResultControl.xaml" />
     <Page Include="Comparison\CompareOverwriteResultControl.xaml" />
+    <Page Include="Comparison\CompareProgressControl.xaml" />
     <Page Include="Comparison\ComparisonControl.xaml" />
     <Page Include="Comparison\ComparisonSettingDialog.xaml" />
     <Page Include="Compress\CompressDialog.xaml">