-
Notifications
You must be signed in to change notification settings - Fork 50
/
ShowQR.cs
60 lines (49 loc) · 1.56 KB
/
ShowQR.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.Windows.Forms;
using KeePass.UI;
using QRCoder;
namespace KeeTrayTOTP
{
public partial class ShowQR : Form
{
public string Seed { get; set; }
public ShowQR()
{
InitializeComponent();
}
private void ShowQR_Load(object sender, EventArgs e)
{
GlobalWindowManager.AddWindow(this);
GenerateQRCode();
}
private void GenerateQRCode()
{
var code = string.Format("otpauth://totp/{0}:{1}?secret={2}&issuer={0}", Uri.EscapeDataString(IssuerText.Text),
Uri.EscapeDataString(UsernameText.Text), Seed);
using (var qrGenerator = new QRCodeGenerator())
{
var qrCodeData = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q);
var qrCode = new QRCode(qrCodeData);
var qrCodeImage = qrCode.GetGraphic(6);
QROutputPicture.Image = qrCodeImage;
}
}
private void RegenerateButton_Click(object sender, EventArgs e)
{
GenerateQRCode();
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}
private void ShowQR_FormClosed(object sender, FormClosedEventArgs e)
{
GlobalWindowManager.RemoveWindow(this);
}
}
}