PKHeX/PKHeX.WinForms/Misc/QR.cs
Kurt fc754b346b
File scoped namespaces (#3529)
[Language Reference](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/file-scoped-namespaces)

Updates all the files, one less level of indentation.

Some small changes were made to API surfaces, renaming `PKM pkm` -> `PKM pk`, and `LegalityAnalysis.pkm` -> `LegalityAnalysis.Entity`
2022-06-18 11:04:24 -07:00

90 lines
2.5 KiB
C#

using System;
using System.Drawing;
using System.Windows.Forms;
using PKHeX.Core;
using PKHeX.Drawing.Misc;
using static PKHeX.Core.MessageStrings;
namespace PKHeX.WinForms;
public partial class QR : Form
{
private readonly PKM? Entity;
private readonly Image icon;
private Image qr;
private readonly string[] Lines;
private string extraText = string.Empty;
public QR(Image qr, Image icon, params string[] lines)
{
InitializeComponent();
this.qr = qr;
this.icon = icon;
Lines = lines;
splitContainer1.Panel1Collapsed = true;
RefreshImage();
ResizeWindow();
}
public QR(Image qr, Image icon, PKM pk, params string[] lines)
{
InitializeComponent();
this.qr = qr;
this.icon = icon;
Lines = lines;
Entity = pk;
// Layer on Text
if (pk is PK7 pk7)
this.qr = ReloadQRData(pk7);
else
splitContainer1.Panel1Collapsed = true;
RefreshImage();
ResizeWindow();
splitContainer1.SplitterDistance = 34;
}
private void ResizeWindow()
{
var img = PB_QR.Image;
splitContainer1.Height = splitContainer1.Panel1.Height + img.Height;
splitContainer1.Width = img.Width;
}
private Image ReloadQRData(PK7 pk7)
{
var box = (int)NUD_Box.Value - 1;
var slot = (int)NUD_Slot.Value - 1;
var copies = (int)NUD_Copies.Value;
extraText = $" (Box {box + 1}, Slot {slot + 1}, {copies} cop{(copies > 1 ? "ies" : "y")})";
return QREncode.GenerateQRCode7(pk7, box, slot, copies);
}
private void RefreshImage()
{
SuspendLayout();
ResumeLayout();
Font font = !Main.Unicode ? Font : FontUtil.GetPKXFont(8.25f);
var img = QRImageUtil.GetQRImageExtended(font, qr, icon, Math.Max(qr.Width, 370), qr.Height + 50, Lines, extraText);
PB_QR.Image = img;
}
private void PB_QR_Click(object sender, EventArgs e)
{
if (DialogResult.Yes != WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MsgQRClipboardImage))
return;
try { Clipboard.SetImage(PB_QR.Image); }
// Clipboard can be locked periodically, just notify on failure.
catch { WinFormsUtil.Alert(MsgQRClipboardFail); }
}
private void UpdateBoxSlotCopies(object sender, EventArgs e)
{
if (Entity is not PK7 pk7)
throw new ArgumentException("Can't update QR7 if pk isn't a PK7!");
qr = ReloadQRData(pk7);
RefreshImage();
}
}