Files
Libation/Source/LibationWinForms/ThemeExtensions.cs
2026-01-02 13:04:35 -07:00

43 lines
1.8 KiB
C#

using LibationUiBase.ProcessQueue;
using System.Drawing;
using System.Windows.Forms;
namespace LibationWinForms;
internal static class ThemeExtensions
{
private static readonly Color LinkLabelNew = Color.FromKnownColor(KnownColor.Blue);
private static readonly Color LinkLabelVisited = Color.FromKnownColor(KnownColor.Purple);
private static readonly Color LinkLabelNew_Dark = Color.FromKnownColor(KnownColor.CornflowerBlue);
private static readonly Color LinkLabelVisited_Dark = Color.FromKnownColor(KnownColor.Orchid);
private static readonly Color FailedColor = Color.LightCoral;
private static readonly Color FailedColor_Dark = Color.FromArgb(0x50, 0x27, 0x27);
private static readonly Color CancelledColor = Color.Khaki;
private static readonly Color CancelledColor_Dark = Color.FromArgb(0x4e, 0x4b, 0x15);
private static readonly Color SuccessColor = Color.PaleGreen;
private static readonly Color SuccessColor_Dark = Color.FromArgb(0x1c, 0x3e, 0x20);
public static Color LinkColor => Application.IsDarkModeEnabled ? LinkLabelNew_Dark : LinkLabelNew;
public static Color VisitedLinkColor => Application.IsDarkModeEnabled ? LinkLabelVisited_Dark : LinkLabelVisited;
extension(LinkLabel ll)
{
public void SetLinkLabelColors()
{
ll.VisitedLinkColor = VisitedLinkColor;
ll.LinkColor = LinkColor;
}
}
extension(ProcessBookStatus status)
{
public Color GetColor() => status switch
{
ProcessBookStatus.Completed => Application.IsDarkModeEnabled ? SuccessColor_Dark : SuccessColor,
ProcessBookStatus.Cancelled => Application.IsDarkModeEnabled ? CancelledColor_Dark : CancelledColor,
ProcessBookStatus.Queued => SystemColors.Control,
ProcessBookStatus.Working => SystemColors.Control,
_ => Application.IsDarkModeEnabled ? FailedColor_Dark : FailedColor
};
}
}