Skip to content

Commit beab34f

Browse files
committed
Feature: Added QR code/barcode recognition and random string generation functionality
Add two new feature pages: QR Code/Barcode Recognition and Random String Generation. Includes the following major changes: 1. Added a QR/Barcode scanning page, supporting image uploads, drag-and-drop, and clipboard pasting 2. Added a random string generation page with customizable generation rules 3. Add relevant multilingual resource strings 4. Update the homepage layout and navigation buttons 5. Add the ZXing.Net.Windows.Compatibility dependency to support QR code recognition
1 parent 52c974f commit beab34f

10 files changed

Lines changed: 680 additions & 2 deletions

DevTools.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
2424
<PackageReference Include="System.Drawing.Common" Version="10.0.3" />
2525
<PackageReference Include="ZXing.Net" Version="0.16.11" />
26+
<PackageReference Include="ZXing.Net.Bindings.Windows.Compatibility" Version="0.16.14" />
2627
</ItemGroup>
2728

2829
<ItemGroup>

Pages/HomePage.xaml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
</Button.Template>
2323
</Button>
2424

25-
<UniformGrid Rows="3" Columns="3" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
25+
<UniformGrid Columns="4" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
2626
<Button x:Name="BtnMd5" Click="BtnMd5_Click" Style="{StaticResource CardButtonStyle}" Margin="8">
2727
<StackPanel Width="140" HorizontalAlignment="Center" VerticalAlignment="Center">
2828
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf023;" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" TextAlignment="Center" Foreground="#FFFFFF" />
@@ -73,10 +73,22 @@
7373
</Button>
7474
<Button x:Name="BtnEscape" Click="BtnEscape_Click" Style="{StaticResource CardButtonStyle}" Margin="8">
7575
<StackPanel Width="140" HorizontalAlignment="Center" VerticalAlignment="Center">
76-
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf071;" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" TextAlignment="Center" Foreground="#FFFFFF" />
76+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf121;" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" TextAlignment="Center" Foreground="#FFFFFF" />
7777
<TextBlock Text="{x:Static resources:Strings.PageEscape}" FontSize="14" HorizontalAlignment="Center" TextAlignment="Center" Margin="0,8,0,0" TextWrapping="Wrap" Foreground="#FFFFFF" />
7878
</StackPanel>
7979
</Button>
80+
<Button x:Name="BtnQrBarcodeDecode" Click="BtnQrBarcodeDecode_Click" Style="{StaticResource CardButtonStyle}" Margin="8">
81+
<StackPanel Width="140" HorizontalAlignment="Center" VerticalAlignment="Center">
82+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf083;" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" TextAlignment="Center" Foreground="#FFFFFF" />
83+
<TextBlock Text="{x:Static resources:Strings.PageQrBarcodeDecode}" FontSize="14" HorizontalAlignment="Center" TextAlignment="Center" Margin="0,8,0,0" TextWrapping="Wrap" Foreground="#FFFFFF" />
84+
</StackPanel>
85+
</Button>
86+
<Button x:Name="BtnRandomString" Click="BtnRandomString_Click" Style="{StaticResource CardButtonStyle}" Margin="8">
87+
<StackPanel Width="140" HorizontalAlignment="Center" VerticalAlignment="Center">
88+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf074;" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" TextAlignment="Center" Foreground="#FFFFFF" />
89+
<TextBlock Text="{x:Static resources:Strings.PageRandomString}" FontSize="14" HorizontalAlignment="Center" TextAlignment="Center" Margin="0,8,0,0" TextWrapping="Wrap" Foreground="#FFFFFF" />
90+
</StackPanel>
91+
</Button>
8092
</UniformGrid>
8193
</Grid>
8294
</Page>

Pages/HomePage.xaml.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ private void BtnEscape_Click(object sender, RoutedEventArgs e)
5555
NavigationService?.Navigate(new EscapePage());
5656
}
5757

58+
private void BtnQrBarcodeDecode_Click(object sender, RoutedEventArgs e)
59+
{
60+
NavigationService?.Navigate(new QrBarcodeDecodePage());
61+
}
62+
63+
private void BtnRandomString_Click(object sender, RoutedEventArgs e)
64+
{
65+
NavigationService?.Navigate(new RandomStringPage());
66+
}
67+
5868
private void BtnSettings_Click(object sender, RoutedEventArgs e)
5969
{
6070
NavigationService?.Navigate(new SettingsPage());

Pages/QrBarcodeDecodePage.xaml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<Page x:Class="DevTools.Pages.QrBarcodeDecodePage"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:resources="clr-namespace:DevTools.Resources"
5+
xmlns:local="clr-namespace:DevTools.Pages"
6+
Title="QrBarcodeDecodePage"
7+
KeyDown="Page_KeyDown">
8+
<Page.Resources>
9+
<BooleanToVisibilityConverter x:Key="BoolToVis" />
10+
</Page.Resources>
11+
<Grid Margin="20">
12+
<StackPanel>
13+
<Button Click="Back_Click" HorizontalAlignment="Left" Margin="0,0,0,8" Width="40" Height="40" ToolTip="{x:Static resources:Strings.Back}">
14+
<Button.Template>
15+
<ControlTemplate TargetType="Button">
16+
<Border Background="#4A4A4A" CornerRadius="20" Width="40" Height="40" SnapsToDevicePixels="True">
17+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf060;" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FFFFFF" />
18+
</Border>
19+
</ControlTemplate>
20+
</Button.Template>
21+
</Button>
22+
<TextBlock Text="{x:Static resources:Strings.PageQrBarcodeDecode}" FontSize="18" Margin="0,10" />
23+
24+
<Border x:Name="ImageBorder" CornerRadius="8" BorderBrush="#4A4A4A" BorderThickness="2" Margin="0,10" Height="300" AllowDrop="True" Drop="ImageBorder_Drop" PreviewDragOver="ImageBorder_PreviewDragOver" PreviewDragLeave="ImageBorder_PreviewDragLeave" PreviewMouseLeftButtonDown="ImageBorder_PreviewMouseLeftButtonDown" Cursor="Hand">
25+
<Grid>
26+
<ScrollViewer x:Name="ImageScrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Visibility="Collapsed">
27+
<Image x:Name="PreviewImage" Stretch="None" />
28+
</ScrollViewer>
29+
<StackPanel x:Name="PlaceholderPanel" HorizontalAlignment="Center" VerticalAlignment="Center">
30+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf093;" FontSize="48" FontWeight="Bold" HorizontalAlignment="Center" Foreground="#888888" />
31+
<TextBlock Text="{x:Static resources:Strings.ClickOrDropImage}" FontSize="14" HorizontalAlignment="Center" Margin="0,10,0,0" Foreground="#888888" />
32+
</StackPanel>
33+
</Grid>
34+
</Border>
35+
36+
<TextBlock Text="{x:Static resources:Strings.DecodeResult}" FontSize="16" FontWeight="Bold" Margin="0,10,0,5" />
37+
<TextBox x:Name="ResultText" Height="100" TextWrapping="Wrap" AcceptsReturn="True" IsReadOnly="True" Margin="0,0,0,10" />
38+
39+
<StackPanel Orientation="Horizontal">
40+
<Button Click="CopyResult_Click" Width="100" Height="32" Margin="0,0,10,0" ToolTip="{x:Static resources:Strings.Copy}">
41+
<StackPanel Orientation="Horizontal">
42+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf0c5;" FontSize="14" FontWeight="Bold" Foreground="#FFFFFF" Margin="0,0,6,0" />
43+
<TextBlock Text="{x:Static resources:Strings.Copy}" FontSize="14" Foreground="#FFFFFF" />
44+
</StackPanel>
45+
</Button>
46+
<Button Click="Clear_Click" Width="100" Height="32" ToolTip="{x:Static resources:Strings.Clear}">
47+
<StackPanel Orientation="Horizontal">
48+
<TextBlock FontFamily="{StaticResource FontAwesomeSolid}" Text="&#xf2ed;" FontSize="14" FontWeight="Bold" Foreground="#FFFFFF" Margin="0,0,6,0" />
49+
<TextBlock Text="{x:Static resources:Strings.Clear}" FontSize="14" Foreground="#FFFFFF" />
50+
</StackPanel>
51+
</Button>
52+
</StackPanel>
53+
</StackPanel>
54+
</Grid>
55+
</Page>

0 commit comments

Comments
 (0)