mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-09-14 04:19:24 +00:00
* Migrate to Fluent UI * Setup window events for Blazor WebView * Setup basic FluentUI styling * FluentUI links * Setup views and viewmodel infra * Remove old navigation logic * Prepare an example of iframe embed * Style window + navigation menu * Setup page based navigation * Add some UI error handling * Introduce UI resiliency to exceptions * Setup settings menu dropdown * Basic setup for options views * Setup reusable OptionBase * Setup options views * Basic styling * Setup scoped css files. Split App into components * Hook option updates to OptionProvider * Fix option dropdowns * Setup multiple themes * Make fonts scalable * Move ViewModels under Views * Launch view + styling * Setup FocusView base * Finish BuildListView implementation * Base for build views * Setup build routing * Implement single build editor * Implement skill description on hover * Scrape skill information from the wiki and cache it locally * Scrape and fix Guild Wars wiki info * Improve mouse hover performance by querying position only when needed * Skill snippet snaps to edges * Setup accounts and executables view * Launch configurations view * Fix build skill icons Attach skill types to skills Scrape upkeep from wiki * Fix skilltype overflow * Adjust navigation menu * Setup privilege elevation flow * Setup MSAL * Options synchronization view * Telemetry view * Version management and update view * Setup plugins view * Setup notifications panel * Base for logs view * Finish LogView * Setup metrics view * Setup UI logging interop * GuildWarsPartySearch view implementation * Setup gitlab mirror job * Eventviewer base * Remove gitlab mirror * Remove mirror pipeline * Fix metricsview crashes * Extract progress component * Setup trade chat views * Setup Download view * Extract progress styling * Setup guild wars copy view * Setup trade alerts * Fix team template view skill selection * Setup basic onboarding view * Overhaul asynchronous progress operations and remove redundant versioning code * Setup modsview base * Setup modsview with mod states * Setup mod installation process * Cleanup more ui migration Remove price history #1076 * Screen selector manage view * Upgrade to .net 10 Closes #1078 * gMod management view * Trader message notification * ReShade management * Update for toolbox * Setup focusview fetching * Setup CharacterComponent * Setup vanquishing component * Setup TitleInformationComponent * Closes #1082 Fix API project for Guild Wars Reforged * Small fixes + attempts to get new exe version * FileId fixes * Current Map and Player Resources widgets * Quest log widget * BuildComponent implementation * Closes #1075 Embed wwwroot into the executable * Cleanup * Fixes to slnx * Fix test project
53 lines
1.2 KiB
C#
53 lines
1.2 KiB
C#
using System.ComponentModel;
|
|
|
|
namespace Daybreak.Shared.Validators;
|
|
|
|
public abstract class ClampedValidator(object minValue, object maxValue) : IValidator
|
|
{
|
|
public object MinValue { get; } = minValue;
|
|
public object MaxValue { get; } = maxValue;
|
|
|
|
public abstract bool IsValid(object value);
|
|
}
|
|
|
|
public sealed class ClampedValidator<T>(T minValue, T maxValue) : ClampedValidator(minValue, maxValue)
|
|
where T : IComparable<T>
|
|
{
|
|
private readonly T minValue = minValue, maxValue = maxValue;
|
|
|
|
public override bool IsValid(object value)
|
|
{
|
|
T numberValue;
|
|
if (value is string stringValue)
|
|
{
|
|
var tc = TypeDescriptor.GetConverter(typeof(T));
|
|
numberValue = (T)tc.ConvertFrom(stringValue)!;
|
|
}
|
|
else if (value is T typedValue)
|
|
{
|
|
numberValue = typedValue;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (numberValue is null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (numberValue.CompareTo(this.minValue) < 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (numberValue.CompareTo(this.maxValue) > 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|