Browse Source

compdfkit(win) - 保存settings和调整UI

weixiangjie 1 year ago
parent
commit
569fb676e1

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj

@@ -17,7 +17,7 @@
     <TargetFrameworkProfile />
     <NuGetPackageImportStamp>
     </NuGetPackageImportStamp>
-    <LangVersion>7.3</LangVersion>
+    <LangVersion>default</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>

+ 22 - 3
Demo/Examples/PDFViewer/App.config

@@ -1,11 +1,14 @@
-<?xml version="1.0" encoding="utf-8" ?>
+<?xml version="1.0" encoding="utf-8"?>
 <configuration>
     <configSections>
-        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
             <section name="PDFViewer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
         </sectionGroup>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="PDFViewer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
     </configSections>
-    <startup> 
+    <startup>
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
     </startup>
     <applicationSettings>
@@ -24,4 +27,20 @@
             </setting>
         </PDFViewer.Properties.Settings>
     </applicationSettings>
+    <userSettings>
+        <PDFViewer.Properties.Settings>
+            <setting name="IsHighlightLinkArea" serializeAs="String">
+                <value>False</value>
+            </setting>
+            <setting name="IsHighlightFormArea" serializeAs="String">
+                <value>False</value>
+            </setting>
+            <setting name="DocumentAuthor" serializeAs="String">
+                <value>ComPDFKit</value>
+            </setting>
+            <setting name="Language" serializeAs="String">
+                <value>English</value>
+            </setting>
+        </PDFViewer.Properties.Settings>
+    </userSettings>
 </configuration>

+ 2 - 1
Demo/Examples/PDFViewer/MainWindow.xaml.cs

@@ -400,7 +400,8 @@ namespace PDFViewer
 
             if (tabControl.Items.Count == 0)
             {
-                SystemCommands.CloseWindow(this);
+                // go home page
+                HomePageButton.IsToggled = true;
             }
         }
 

+ 12 - 0
Demo/Examples/PDFViewer/Properties/Settings.Designer.cs

@@ -30,6 +30,9 @@ namespace PDFViewer.Properties {
             get {
                 return ((bool)(this["IsHighlightLinkArea"]));
             }
+            set{
+                this["IsHighlightLinkArea"] = value;
+            }
         }
         
         [global::System.Configuration.ApplicationScopedSettingAttribute()]
@@ -39,6 +42,9 @@ namespace PDFViewer.Properties {
             get {
                 return ((bool)(this["IsHighlightFormArea"]));
             }
+            set{
+                this["IsHighlightFormArea"] = value;
+            }
         }
         
         [global::System.Configuration.ApplicationScopedSettingAttribute()]
@@ -48,6 +54,9 @@ namespace PDFViewer.Properties {
             get {
                 return ((string)(this["DocumentAuthor"]));
             }
+            set{
+                this["DocumentAuthor"] = value;
+            }
         }
         
         [global::System.Configuration.ApplicationScopedSettingAttribute()]
@@ -57,6 +66,9 @@ namespace PDFViewer.Properties {
             get {
                 return ((string)(this["Language"]));
             }
+            set{
+                this["Language"] = value;
+            }
         }
     }
 }

+ 4 - 4
Demo/Examples/PDFViewer/Properties/Settings.settings

@@ -2,16 +2,16 @@
 <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="PDFViewer.Properties" GeneratedClassName="Settings">
   <Profiles />
   <Settings>
-    <Setting Name="IsHighlightLinkArea" Type="System.Boolean" Scope="Application">
+    <Setting Name="IsHighlightLinkArea" Type="System.Boolean" Scope="User">
       <Value Profile="(Default)">False</Value>
     </Setting>
-    <Setting Name="IsHighlightFormArea" Type="System.Boolean" Scope="Application">
+    <Setting Name="IsHighlightFormArea" Type="System.Boolean" Scope="User">
       <Value Profile="(Default)">False</Value>
     </Setting>
-    <Setting Name="DocumentAuthor" Type="System.String" Scope="Application">
+    <Setting Name="DocumentAuthor" Type="System.String" Scope="User">
       <Value Profile="(Default)">ComPDFKit</Value>
     </Setting>
-    <Setting Name="Language" Type="System.String" Scope="Application">
+    <Setting Name="Language" Type="System.String" Scope="User">
       <Value Profile="(Default)">English</Value>
     </Setting>
   </Settings>

+ 68 - 41
Demo/Examples/PDFViewer/SettingsDialog.xaml

@@ -6,10 +6,11 @@
         xmlns:local="clr-namespace:PDFViewer"
         mc:Ignorable="d"
         Title="Settings" Height="613" Width="418"
-        ResizeMode="NoResize">
+        ResizeMode="NoResize"
+        Window.Loaded="SettingsDialog_Loaded">
     <Window.Resources>
-        <ResourceDictionary> 
-            <ResourceDictionary.MergedDictionaries> 
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="pack://application:,,,/Compdfkit_Tools;component/Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
             <DropShadowEffect x:Key="HoverThumbEffect" BlurRadius="5" ShadowDepth="0" Opacity="0.5" Color="RoyalBlue"/>
@@ -72,8 +73,9 @@
                 </Setter>
             </Style>
             <Style x:Key="UnderlinedButtonStyle" TargetType="Button">
+                <EventSetter Event="Click" Handler="EventSetter_ClickHandler"/>
                 <Setter Property="Background" Value="Transparent"/>
-                <Setter Property="Foreground" Value="#1460F3"/> 
+                <Setter Property="Foreground" Value="#1460F3"/>
                 <Setter Property="BorderBrush" Value="Transparent"/>
                 <Setter Property="FontFamily" Value="Segoe UI"></Setter>
                 <Setter Property="Template">
@@ -93,74 +95,99 @@
                     </Setter.Value>
                 </Setter>
             </Style>
-        </ResourceDictionary> 
+        </ResourceDictionary>
     </Window.Resources>
     <Grid Margin="24,0,24,0">
         <Grid.RowDefinitions>
-            <RowDefinition Height="196"></RowDefinition>
-            <RowDefinition Height="68"></RowDefinition>
-            <RowDefinition Height="224"></RowDefinition>
+            <RowDefinition Height="106"></RowDefinition>
+            <RowDefinition Height="100"></RowDefinition>
+            <RowDefinition Height="29"></RowDefinition>
+            <RowDefinition Height="45"/>
+            <RowDefinition Height="186"></RowDefinition>
             <RowDefinition Height="84"></RowDefinition>
         </Grid.RowDefinitions>
-        <StackPanel Margin="0,0,0,0">
-            <TextBlock Text="Global setting" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="0,0,0,8"></TextBlock>
-            <Grid Margin="0,0,0,8" Height="32">
-                <TextBlock Text="Highlight Link area" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <ToggleButton Style="{StaticResource SliderSwitchToggleButtonStyle}" Height="32" HorizontalAlignment="Right"></ToggleButton>
-            </Grid>
-            <Grid Margin="0,0,0,8" Height="32">
-                <TextBlock Text="Highlight Form area" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <ToggleButton Style="{StaticResource SliderSwitchToggleButtonStyle}" Height="32" HorizontalAlignment="Right"></ToggleButton>
-            </Grid>
-            <Grid Margin="0,0,0,8" Height="32">
-                <TextBlock Text="Document Author" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <TextBox HorizontalAlignment="Right" Width="130"></TextBox>
+        <StackPanel Margin="10,10,0,0">
+            <Grid Margin="0,10,0,8" Height="32">
+                <TextBlock Text="Document Author" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+                <TextBox x:Name="AuthorTxb" Padding="5,0,5,0"  HorizontalAlignment="Right" VerticalContentAlignment="Center" Width="130">
+                </TextBox>
             </Grid>
             <Grid Height="32">
-                <TextBlock Text="Document Author" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <ComboBox Style="{StaticResource ComboBoxStyle1}" HorizontalAlignment="Right" Width="130"></ComboBox>
+                <TextBlock Text="Language" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+                <ComboBox x:Name="LanguageCmb" Style="{StaticResource ComboBoxStyle1}" HorizontalAlignment="Right" Width="130">
+                    <ComboBoxItem IsSelected="True"></ComboBoxItem>
+                    <ComboBoxItem>English</ComboBoxItem>
+                    <ComboBoxItem>简体中文</ComboBoxItem>
+                    <ComboBoxItem>繁體中文</ComboBoxItem>
+                    <ComboBoxItem>日本語</ComboBoxItem>
+                    <ComboBoxItem>한국어</ComboBoxItem>
+                    <ComboBoxItem>Deutsch</ComboBoxItem>
+                    <ComboBoxItem>Français</ComboBoxItem>
+                    <ComboBoxItem>Italiano</ComboBoxItem>
+                    <ComboBoxItem>Español</ComboBoxItem>
+                </ComboBox>
             </Grid>
         </StackPanel>
-        <StackPanel Grid.Row="1">
-            <TextBlock Text="SDK Information" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="0,0,0,8"></TextBlock>
-            <Grid Margin="0,0,0,8" Height="32">
-                <TextBlock Text="Highlight Link area" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <TextBlock HorizontalAlignment="Right"  VerticalAlignment="Center" Text="V1.11.0"></TextBlock>
-            </Grid>
-        </StackPanel>
-        <StackPanel Grid.Row="2">
-            <TextBlock Text="Company Information" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="0,0,0,8"></TextBlock>
+        <Border Grid.Row="1" BorderThickness="1" BorderBrush="#1A000000">
+            <StackPanel  Margin="10">
+                <Grid Margin="0,0,0,8" Height="32">
+                    <TextBlock Text="Highlight Link area" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+                    <ToggleButton x:Name="HighlightLinkTog" Style="{StaticResource SliderSwitchToggleButtonStyle}" Height="32" HorizontalAlignment="Right"></ToggleButton>
+                </Grid>
+                <Grid Margin="0,0,0,8" Height="32">
+                    <TextBlock Text="Highlight Form area" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+                    <ToggleButton x:Name="HighlightFormTog" Style="{StaticResource SliderSwitchToggleButtonStyle}" Height="32" HorizontalAlignment="Right"></ToggleButton>
+                </Grid>
+            </StackPanel>
+        </Border>
+        <TextBlock Text="Global setting" Background="White" Grid.Row="1" Height="20" Width="90" FontSize="14" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="10,-10,0,0"></TextBlock>
+
+        <Border BorderBrush="#1A000000" BorderThickness="1"  Grid.Row="2" Grid.RowSpan="2"  Margin="0,10,0,10">
+            <StackPanel  Margin="10">
+                <Grid Margin="0,0,0,8" Height="32">
+                    <TextBlock Text="Version" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock HorizontalAlignment="Right"  VerticalAlignment="Center" Text="V1.11.0"></TextBlock>
+                </Grid>
+            </StackPanel>
+        </Border>
+        <TextBlock Text="SDK Information"  Grid.Row="2" Background="#ffffff" Height="20" Width="110" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="14" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="10,0,0,0"></TextBlock>
+
+        <Border BorderBrush="#1A000000" BorderThickness="1"  Grid.Row="4"   Margin="0,10,0,10"> 
+            <StackPanel Margin="10">
             <Grid Margin="0,0,0,8" Height="20">
                 <TextBlock Text="Website" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Content="https://www.compdf.com/"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Tag="https://www.compdf.com/" Content="https://www.compdf.com/"></Button>
             </Grid>
             <Grid Margin="0,0,0,8" Height="20">
                 <TextBlock Text="About ComPDFKit" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" Content="https://www.compdf.com/company/about" HorizontalAlignment="Right"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" Tag="https://www.compdf.com/company/about" Content="https://www.compdf.com/company/about" HorizontalAlignment="Right"></Button>
             </Grid>
             <Grid Margin="0,0,0,8" Height="20">
                 <TextBlock Text="Contact Sales" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Content="https://www.compdf.com/contact-sales"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Tag="https://www.compdf.com/contact-sales" Content="https://www.compdf.com/contact-sales"></Button>
             </Grid>
             <Grid Margin="0,0,0,8" Height="20">
                 <TextBlock Text="Email Address" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Content="support@compdf.com"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Tag="" Content="support@compdf.com"></Button>
             </Grid>
             <Grid Margin="0,0,0,8" Height="20">
                 <TextBlock Text="Technical Support" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Content="https://www.compdf.com/support"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" HorizontalAlignment="Right" Tag="https://www.compdf.com/support" Content="https://www.compdf.com/support"></Button>
             </Grid>
         </StackPanel>
-        <Grid Grid.Row="3" Margin="0,0,0,40">
+        </Border>
+        <TextBlock Text="Company Information" FontSize="14" Grid.Row="4" Background="#ffffff" Height="20" Width="140" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="DemiBold" FontFamily="Segoe UI" Margin="10,0,0,8"></TextBlock>
+
+        <Grid Grid.Row="5" Margin="0,0,0,40">
             <Grid.RowDefinitions>
                 <RowDefinition Height="auto"></RowDefinition>
                 <RowDefinition></RowDefinition>
             </Grid.RowDefinitions>
             <TextBlock Text="@ 2014-2023 PDF Technologies, Inc. All Rights Reserved." HorizontalAlignment="Center" Foreground="#999999" FontFamily="Segoe UI"></TextBlock>
-            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Grid.Row="1" Orientation="Horizontal">
-                <Button Style="{StaticResource UnderlinedButtonStyle}" Content="Privacy Policy"></Button>
+            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Grid.Row="2" Orientation="Horizontal">
+                <Button Style="{StaticResource UnderlinedButtonStyle}" Tag="https://www.compdf.com/privacy-policy/" Content="Privacy Policy"></Button>
                 <Rectangle Width="1" Height="15" Fill="#1A000000" Margin="10,0,10,0"></Rectangle>
-                <Button Style="{StaticResource UnderlinedButtonStyle}" Content="Terms of Service"></Button>
+                <Button Style="{StaticResource UnderlinedButtonStyle}" Tag="https://www.compdf.com/terms-of-service" Content="Terms of Service"></Button>
             </StackPanel>
         </Grid>
     </Grid>

+ 36 - 11
Demo/Examples/PDFViewer/SettingsDialog.xaml.cs

@@ -1,16 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel;
+using System.Diagnostics;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
 
 namespace PDFViewer
 {
@@ -22,6 +13,40 @@ namespace PDFViewer
         public SettingsDialog()
         {
             InitializeComponent();
+            Closing += MainWindow_Closing;
+        }
+
+        private void MainWindow_Closing(object sender, CancelEventArgs e)
+        {
+            if (HighlightFormTog.IsChecked != null)
+            {
+                Properties.Settings.Default.IsHighlightFormArea = HighlightFormTog.IsChecked.Value;
+            }
+
+            if (HighlightLinkTog.IsChecked != null)
+            {
+                Properties.Settings.Default.IsHighlightLinkArea = HighlightLinkTog.IsChecked.Value;
+            }
+            Properties.Settings.Default.DocumentAuthor = AuthorTxb.Text;
+            Properties.Settings.Default.Language = ((ComboBoxItem)LanguageCmb.SelectedItem).Content.ToString();
+            Properties.Settings.Default.Save();
+        }
+
+        private void EventSetter_ClickHandler(object sender, RoutedEventArgs e)
+        {
+            var webLocation = (sender as Button)?.Tag.ToString();
+            if (!string.IsNullOrEmpty(webLocation))
+            {
+                Process.Start(webLocation);
+            }
+        }
+
+        private void SettingsDialog_Loaded(object sender, RoutedEventArgs e)
+        {
+            HighlightFormTog.IsChecked = Properties.Settings.Default.IsHighlightFormArea;
+            HighlightLinkTog.IsChecked = Properties.Settings.Default.IsHighlightLinkArea;
+            AuthorTxb.Text = Properties.Settings.Default.DocumentAuthor;
+            ((ComboBoxItem)LanguageCmb.SelectedItem).Content = Properties.Settings.Default.Language;
         }
     }
 }