Files
Libation/Source/LibationWinForms/Dialogs/BadBookActionDialog.cs

69 lines
1.9 KiB
C#

using LibationUiBase;
using LibationUiBase.Forms;
using System;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LibationWinForms.Dialogs;
public partial class BadBookActionDialog : Form
{
public BadBookDialogResult Result { get; private set; } = new(LibationUiBase.Forms.DialogResult.Retry, false, false);
public BadBookActionDialog()
{
InitializeComponent();
this.SetLibationIcon();
}
public BadBookActionDialog(string message, string caption) : this()
{
Text = caption;
messageLbl.Text = message;
SizeChanged += (_, _) => AdjustLayout();
Shown += (_, _) => AdjustLayout();
messageLbl.SizeChanged += (_, _) => AdjustLayout();
AdjustLayout();
}
private void AdjustLayout()
{
const int margin = 12;
const int gap = 10;
const int messageLeft = 50;
var messageWidth = ClientSize.Width - messageLeft - margin;
messageLbl.Left = messageLeft;
messageLbl.Top = margin;
messageLbl.Width = messageWidth;
messageLbl.MaximumSize = new Size(messageWidth, 0);
applyToAllCb.Top = messageLbl.Bottom + gap;
rememberInSettingsCb.Top = applyToAllCb.Bottom + gap;
buttonPanel.Top = rememberInSettingsCb.Bottom + gap;
buttonPanel.Width = ClientSize.Width;
var desiredHeight = buttonPanel.Bottom + margin;
if (ClientSize.Height != desiredHeight)
ClientSize = new Size(ClientSize.Width, desiredHeight);
}
private void CloseWith(LibationUiBase.Forms.DialogResult action)
{
Result = new BadBookDialogResult(action, applyToAllCb.Checked, rememberInSettingsCb.Checked);
base.DialogResult = System.Windows.Forms.DialogResult.OK;
Close();
}
private void AbortBtn_Click(object sender, EventArgs e)
=> CloseWith(LibationUiBase.Forms.DialogResult.Abort);
private void RetryBtn_Click(object sender, EventArgs e)
=> CloseWith(LibationUiBase.Forms.DialogResult.Retry);
private void IgnoreBtn_Click(object sender, EventArgs e)
=> CloseWith(LibationUiBase.Forms.DialogResult.Ignore);
}