Skip to content

Commit 33a3212

Browse files
authored
Merge pull request #39 from YassinLokhat/37-integrate-qr-code-generator-inside-the-codebase
37 integrate qr code generator inside the codebase
2 parents c49c887 + 516319d commit 33a3212

6 files changed

Lines changed: 1070 additions & 27 deletions

File tree

Core/Upsilon.Apps.Passkey.Core.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<Title>$(AssemblyName)</Title>
88
<Authors>Yassin Lokhat</Authors>
99
<Description>A local stored Password Manager Core.</Description>
10+
<AssemblyVersion>1.0.1</AssemblyVersion>
11+
<FileVersion>1.0.1</FileVersion>
1012
</PropertyGroup>
1113

1214
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

Core/Utils/QrCode.cs

Lines changed: 1041 additions & 0 deletions
Large diffs are not rendered by default.

GUI/WPF/Upsilon.Apps.Passkey.GUI.WPF.csproj

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<Authors>Yassin Lokhat</Authors>
1111
<Description>A local stored Password Manager GUI.</Description>
1212
<Version>3.0.0</Version>
13-
<AssemblyVersion>3.0.0</AssemblyVersion>
14-
<FileVersion>3.0.0</FileVersion>
13+
<AssemblyVersion>1.0.1</AssemblyVersion>
14+
<FileVersion>1.0.1</FileVersion>
1515
<ApplicationIcon>icon.ico</ApplicationIcon>
1616
</PropertyGroup>
1717

@@ -23,12 +23,6 @@
2323
<ProjectReference Include="..\..\Core\Upsilon.Apps.Passkey.Core.csproj" />
2424
</ItemGroup>
2525

26-
<ItemGroup>
27-
<Reference Include="QRCodeEncoderLibrary">
28-
<HintPath>dll\QRCodeEncoderLibrary.dll</HintPath>
29-
</Reference>
30-
</ItemGroup>
31-
3226
<ItemGroup>
3327
<None Update="raw\vidpll-sVqi93MN9TymqpQ==UGOcrUlBjHsiPMUpOVwOKjiSUBw=.pku">
3428
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

GUI/WPF/Views/QrCodeView.xaml.cs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
using QRCodeEncoderLibrary;
2-
using System.Drawing;
1+
using System.Drawing;
32
using System.Drawing.Imaging;
43
using System.IO;
54
using System.Windows;
65
using System.Windows.Media.Imaging;
76
using System.Windows.Threading;
7+
using Upsilon.Apps.Passkey.Core.Utils;
88
using Upsilon.Apps.Passkey.GUI.WPF.Themes;
99
using Upsilon.Apps.Passkey.GUI.WPF.ViewModels;
1010

@@ -61,22 +61,28 @@ public static void CopyToClipboard(string text)
6161

6262
private static BitmapImage _getBitmap(string content)
6363
{
64-
QREncoder qrGenerator = new()
65-
{
66-
ErrorCorrection = ErrorCorrection.H
67-
};
68-
bool[,] matrix = qrGenerator.Encode(content);
64+
int unit = 20;
65+
bool[,] qrCode = QrCode.Generate(content);
66+
int height = qrCode.GetLength(0);
67+
int width = qrCode.GetLength(1);
6968

70-
QRSaveBitmapImage qrCodeImage = new(matrix)
71-
{
72-
ModuleSize = 100,
73-
QuietZone = 50
74-
};
69+
Bitmap bitmap = new((height + 2) * unit, (width + 2) * unit);
7570

76-
MemoryStream ms = new();
77-
qrCodeImage.SaveQRCodeToImageFile(ms, ImageFormat.Bmp);
71+
using (Graphics g = Graphics.FromImage(bitmap))
72+
{
73+
g.FillRectangle(Brushes.White, 0, 0, (height + 2) * unit, (width + 2) * unit);
7874

79-
Bitmap bitmap = (Bitmap)Image.FromStream(ms);
75+
for (int i = 0; i < height; i++)
76+
{
77+
for (int j = 0; j < width; j++)
78+
{
79+
if (qrCode[i, j])
80+
{
81+
g.FillRectangle(Brushes.Black, (i + 1) * unit, (j + 1) * unit, unit, unit);
82+
}
83+
}
84+
}
85+
}
8086

8187
using MemoryStream memory = new();
8288
bitmap.Save(memory, ImageFormat.Png);

GUI/WPF/Views/UserServicesView.xaml.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ private void _showActivities_MenuItem_Click(object sender, RoutedEventArgs e)
289289
&& MainViewModel.UserActivitiesView.IsLoaded)
290290
{
291291
UserActivitiesViewModel? vm = MainViewModel.UserActivitiesView.DataContext as UserActivitiesViewModel;
292-
vm?.NeedsReview = false;
292+
_ = (vm?.NeedsReview = false);
293293

294294
_ = MainViewModel.UserActivitiesView.Activate();
295295
return;
@@ -348,7 +348,7 @@ private void _activityWarnings_MI_Click(object sender, RoutedEventArgs e)
348348
&& MainViewModel.UserActivitiesView.IsLoaded)
349349
{
350350
UserActivitiesViewModel? vm = MainViewModel.UserActivitiesView.DataContext as UserActivitiesViewModel;
351-
vm?.NeedsReview = true;
351+
_ = (vm?.NeedsReview = true);
352352

353353
_ = MainViewModel.UserActivitiesView.Activate();
354354
return;
@@ -381,8 +381,8 @@ private void _expiredOrLeakedPasswordWarnings_MI_Click(object sender, RoutedEven
381381
&& MainViewModel.AccountPasswordsWarningView.IsLoaded)
382382
{
383383
AccountPasswordsWarningViewModel? vm = MainViewModel.AccountPasswordsWarningView.DataContext as AccountPasswordsWarningViewModel;
384-
vm?.WarningType = sender == _expiredPasswordWarnings_MI
385-
? WarningType.PasswordUpdateReminderWarning : WarningType.PasswordLeakedWarning;
384+
_ = (vm?.WarningType = sender == _expiredPasswordWarnings_MI
385+
? WarningType.PasswordUpdateReminderWarning : WarningType.PasswordLeakedWarning);
386386

387387
_ = MainViewModel.AccountPasswordsWarningView.Activate();
388388
return;
-44 KB
Binary file not shown.

0 commit comments

Comments
 (0)